wslhs 发表于 2018-12-29 09:47:04

ubuntu上配置LVS DR模式 + Keepalived-Burning

  在Linux下,LVS是一个比较有用的工具,配合keepalived软件,可以组建一个高性能高可靠的服务器群集,为用户提供稳定的服务,这篇文章将详细探讨LVS DR+keepalived的搭建方式。
  首先,拓扑图如下:

http://www.yangjia.org/wp-content/gallery/cache/929__500x400_lvs_dr.png  如图所示,这个拓扑很简单,这里做一下简单介绍:
  1. 一台Client,IP配置为172.16.2.7/24;
  2. 一台路由器Router,2块网卡,外网IP配置为172.16.2.13/24,内网IP配置为192.168.11.2/24,路由器上开启了NAT功能,将外部的TCP 80端口映射到了内网的192.168.11.10:80上(这个后便会介绍);
  3. 一台交换机Switch,纯2层,所以可直接忽略;
  4. 两台LVS director服务器(director1和director2),IP地址分别为192.168.11.11/24和192.168.11.12/24,这两台director将运行keepalived,虚拟出一个IP地址:192.168.11.10(这个IP地址正是NAT端口转发的目的地址);
  5. 两台www服务器(www1和www2),IP地址分别为192.168.11.21/24和192.168.11.22/24,均安装了nginx提供web服务。
  6. 所有的服务器均安装Ubuntu 10.10 Server版。
  【第一步,安装LVS和keepalived】
  在两台director服务器上,分别安装LVS和keepalived软件,使用命令:
  

  
$sudo apt-get install ipvsadm
  

  安装keepalived,使用命令:
  

  
$sudo apt-get install keepalived
  

  【第二步,配置keepalived】
  装完之后,在/etc/keepalived目录下建立keepalived.conf文件,写入配置文件如下:
  

  
# Global Configuration
  

  
global_defs {
  

  
lvs_iddirector1
  

  
}
  

  
# VRRP Configuration
  

  
vrrp_instance LVS {
  

  
state MASTER
  

  
interface eth0
  

  
virtual_router_id 51
  

  
priority 150
  

  
advert_int 1
  

  
authentication {
  

  
auth_type PASS
  

  
auth_pass 123456
  

  
}
  

  
virtual_ipaddress {
  

  
192.168.11.10
  

  
}
  

  
# Virtual Server Configuration - for WWW service
  

  
virtual_server 192.168.11.10 80 {
  

  
delay_loop 1
  

  
lb_algo rr
  

  
lb_kind DR
  

  
persistence_timeout 60
  

  
protocol TCP
  

  
# Real Server 1 configuration
  

  
real_server 192.168.11.21 80 {
  

  
weight 3
  

  
TCP_CHECK {
  

  
connection_timeout 10
  

  
nb_get_retry 3
  

  
delay_before_retry 3
  

  
}
  

  
real_server 192.168.11.22 80 {
  

  
weight 1
  

  
TCP_CHECK {
  

  
connection_timeout 10
  

  
nb_get_retry 3
  

  
delay_before_retry 3
  

  
}
  

  
}
  

  
}
  

  同样,在director2上也要做这个文件的配置,只是红色标记的部分需要注意,director1改为director2,MASTER要改为BACKUP,virtual_router_id,主从上边的ID都要保持相同(51),priority,director1上为150,director2上应保持比它小(一说要小50,未经证实过)。
  这个配置文件中,virtual_server部分是集群面对外部访问时的一些参数,比如服务器轮询算法,这里用了最简单的rr,长连接超时设置为60秒,real_server就是用来定义那两台真实服务器的,可以设置权重weight,重试次数等。其他还有很多参数,可以参考一本中文的手册叫《Keepalived权威指南》,或者查看Keepalived的官方文档,地址在这里。
  【第三步,配置LVS】
  LVS在第一步的时候已经安装过了,现在只需要配置即可。
  在两台director上使用如下命令:
  

  
$sudo ifconfig eth0:0 192.168.11.10 broadcast 192.168.11.10 netmask 255.255.255.255 up
  

  
$sudo add -host 192.168.11.10 dev eth0:0
  

  
$sudo echo "1" > /proc/sys/net/ipv4/ip_forward
  

  
$sudo ipvsadm -C
  

  
$sudo ipvsadm -A -t 192.168.11.10:80 -s rr
  

  
$sudo ipvsadm -a -t 192.168.11.10:80 -r 192.168.11.21:80 -g
  

  
$sudo ipvsadm -a -t 192.168.11.10:80 -r 192.168.11.22:80 -g
  

  
$sudo ipvsadm
  

  
$sudo sysctl -p
  

  需要特别注意的是:在LVS的NAT模式中,ip_forward是关闭的,而在LVS的DR模式中,ip_forward是打开的。
  这个命令可以做成启动脚本,写到/etc/rc.local中去,这样的话,就不用在每次开机之后都手工再输一遍。
  【第四步,配置Real Server】
  在两台www服务器上,分别配置如下命令:
  

  
$sudo ifconfig lo:0 192.168.11.10 broadcast 192.168.11.10 netmask 255.255.255.255 up
  

  
$sudo route add -host 192.168.11.10 dev lo:0
  

  
$sudo echo "1"> /proc/sys/net/ipv4/conf/lo/arp_ignore
  

  
$sudo echo "2"> /proc/sys/net/ipv4/conf/lo/arp_announce
  

  
$sudo echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
  

  
$sudo echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
  

  
$sudo sysctl -p
  

  这一步骤中,配置ARP是必须的工作,可参考这个链接:http://hi.baidu.com/cavaran/blog/item/e386e5c332e73a020ff47742.html
  【第五步,验证】
  在Client机器上,访问http://172.16.2.13,如果可以打开预先在nginx中定义好的网页,则配置成功,由于配置的是简单的轮询(rr),等上一段时间,等TCP连接关闭了之后,再次打开,就会发现访问到的是不同的www服务器。
  关闭掉director1,www访问应该不受影响。
  关闭掉www2,www访问也应该不受影响。
  参考链接:
  http://blog.chinaunix.net/space.php?uid=8092042&do=blog&id=229430
  http://xuchengji.blog.运维网.com/160472/335595
  http://network.运维网.com/art/201006/206831.htm
  http://www.xker.com/page/e2007/0711/27661.html
  http://18904.com/archives/1213.html


页: [1]
查看完整版本: ubuntu上配置LVS DR模式 + Keepalived-Burning