lvs+keepalived实现DR模式热备

时间:2021-05-18 01:23:22

一、说明:

我们先就用LVS的DR模式来实现Web应用的负载均衡。为了防止LVS服务器自身的单点故障导致整个Web应用无法提供服务,因此还得利用Keepalived实现lvs的高可用性,keepalived主要使用VRRP协议来保存链路的高可用性。而VRRP(Virtual Router Redundancy Protocol)协议本身是用于实现路由器冗余的协议。LVS-DR模式的原理如下(借用别人的图):

lvs+keepalived实现DR模式热备

即客户端访问VIP(域名解析到VIP),LVS接收情况后根据负载均衡调度算法,转发请求到真实服务器,真实服务器接收到客户端请求后,将处理结果直接返回给客户端。

二、网络拓扑及IP规划:

lvs+keepalived实现DR模式热备


IP地址规划:VIP           172.16.23.200LVS-MASTER    172.16.23.101LVS-SLAVE     172.16.23.102WEB1          172.16.23.99WEB2          172.16.23.232


三、安装LVS+Keepalived:

1.使用YUM在线安装:
# yum install -y ipvsadm keepalived
2.检查安装结果:
# rpm -qa |grep keepalivedkeepalived-1.2.7-3.el6.x86_64# rpm -qa |grep ipvsadmipvsadm-1.25-10.el6.x86_64
3.服务配置:
# chkconfig keepalived on# service keepalived start


四、配置LVS服务器:

1.备份配置文件:
# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
2.修改keepalived配置文件:
# more /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {   router_id LVS_MASTER      #设置LVS的ID,在一个网络内是唯一的。从的是LVS_BACKUP}vrrp_instance VI_1 {     #设置vrrp组,唯一且同一LVS服务器组要相同    state MASTER      #备份LVS服务器设置为BACKUP    interface eth2     #设置对外服务的接口    virtual_router_id 42      #设置虚拟路由标识    priority 100      #设置优先级,值越大,优先级越高。备份的是99    advert_int 1      #设置同步时间间隔    authentication {     #设置验证类型,master和backup一样        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {     #设置VIP,可以是多个,每个占一行        172.16.23.200    }}virtual_server 172.16.23.200 80 {    delay_loop 6      #健康检查时间间隔,单位是S    lb_algo wrr      #负载均衡调度算法    lb_kind DR      #负载均衡转发规则    nat_mask 255.255.252.0      #网络掩码,DR模式要保障真实服务器和LVS在同一网段    persistence_timeout 60      #会话保持时间,单位是S    protocol TCP           #协议    real_server 172.16.23.99 80 {     #真实服务器配置,80为端口号        weight 3      #权重        TCP_CHECK {     #服务器检测方式        connect_timeout 10      连接超时        nb_get_retry 3        delay_before_retry 3        connect_port 80          }    }    real_server 172.16.23.232 80{        weight 3        TCP_CHECK{        connect_timeout 10        nb_get_retry 3        delay_before_retry 3        connect_port 80}}}

作为高可用的备份lvs服务器配置只需在上述配置中的master修改backup即可,priority 99,其他保持相同。

3.分别在两台LVS上重启服务:

# /etc/init.d/keepalived restartStopping keepalived: [  OK  ]Starting keepalived: [  OK  ]

注:由于keepalived配置文件有语法错误也能启动,因此看到启动了lvs服务,不代表配置文件没有错误,如果遇到lvs不能正常转发,及时跟踪日志进行处理。


五、WEB服务器IP绑定配置:

在前面的文章中介绍DR模式时提到:负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。但实际上客户端访问时,IP都是指向的负载均衡器的ip(也就是LVS的VIP),如何能让真是服务器处理IP头为VIP的请求,这就需要做下面的操作,将VIP绑定到真实服务器的lo网口(回环),为了防止IP广播产生IP冲突,还需关闭IP广播,具体如下:

1.编辑开机启动脚本:

#!/bin/bash#chkconfig:2345 79 20#description:realserverSNS_VIP=172.16.23.200. /etc/rc.d/init.d/functionscase $1 in        start)                ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP                /sbin/route add -host $SNS_VIP dev lo:0                echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore                echo "2" >  /proc/sys/net/ipv4/conf/lo/arp_announce                echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore                echo "2" > /proc/sys/net/ipv4/conf/all/arp_snnounce                sysctl -p > /dev/null 2>&1                echo "RealServer Start OK"        ;;        stop)                ifconfig lo:0 down                route del $SNS_VIP > /dev/null 2>&1                echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore                echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce                echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore                echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce                echo "RealServer Stoped"        ;;        *)                echo "Usage:$0 {start|stop}"                exit 1esacexit 0

脚本说明:

arp_ignore: 定义接收到ARP请求时的响应级别;
0:只要本地配置的有相应地址,就给予响应;默认;1:仅在请求的目标地址配置在到达的接口上的时候,才给予响应;arp_announce:定义将自己地址向外通告时的通告级别;0:将本地任何接口上的任何地址向外通告;默认;1:试图仅向目标网络通告与其网络匹配的地址;2:仅向与本地接口上地址匹配的网络进行通告;

2、  设置脚本开机启动并立即启动:

# chkconfig --add realserver# chkconfig realserver on# chmod +x /etc/init.d/realserver# /etc/init.d/realserver startRealServer Start OK

3、  检测IP配置:

# ifconfigeth0      Link encap:Ethernet  HWaddr 00:50:56:82:15:17          inet addr:172.16.23.5  Bcast:172.16.23.255  Mask:255.255.252.0          inet6 addr: fe80::250:56ff:fe82:1517/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:18887342 errors:0 dropped:0 overruns:0 frame:0          TX packets:147145 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000          RX bytes:1481870539 (1.3 GiB)  TX bytes:14163814 (13.5 MiB)lo        Link encap:Local Loopback          inet addr:127.0.0.1  Mask:255.0.0.0          inet6 addr: ::1/128 Scope:Host          UP LOOPBACK RUNNING  MTU:16436  Metric:1          RX packets:1669 errors:0 dropped:0 overruns:0 frame:0          TX packets:1669 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0          RX bytes:122730 (119.8 KiB)  TX bytes:122730 (119.8 KiB)lo:0      Link encap:Local Loopback          inet addr:172.16.23.200  Mask:255.255.255.255          UP LOOPBACK RUNNING  MTU:16436  Metric:1

4、  测试LVS:

在lvs master服务器上运行如下命令:
# watch -n 1 ipvsadm -lnEvery 1.0s: ipvsadm -ln                                                                                     Tue Nov 19 00:54:39 2013IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  172.16.23.200:80 wrr persistent 3  -> 172.16.23.99:80              Route   1      0          0  -> 172.16.23.232:80             Route   1      0          0
在多台客户端通过浏览器访问VIP或域名(域名需解析到VIP),看能否获取到正确的页面,且同时观察上述窗口的变化。测试本机上

lvs+keepalived实现DR模式热备


测试其它主机上

lvs+keepalived实现DR模式热备


当MASTER BACKUP正常运行时,VIP只在MASTER上。当MASTER 关机后,VIP会转到BACKUP上。测试当MASTER KEEPALIVED服务停止,BACKUP KEEPALIVED能够使用VIP。



本文出自 “charlie_cen” 博客,请务必保留此出处http://charlie928.blog.51cto.com/3741218/1344064