4 keepalived +lvs之DR模式

集ha,lb与一体的功能
需要四台机器
当某台real server把httpd进程停掉,那么director照样会把请求转发过去,这样就造成了某些请求不正常。
所以需要有一种机制用来检测real server的状态,这就是keepalived。它的作用除了可以检测rs状态外,
还可以检测备用director的状态,也就是说keepalived可以实现ha集群的功能,当然了也需要一台备用director.

备用director也需要安装一下keepalived软件
yum install -y keepalived
安装好后,编辑配置文件
vim /etc/keepalived/keepalived.conf

keepalived 机器上编写
 
 
global_defs { 
   notification_email { 
         edisonchou@hotmail.com 
   } 
   notification_email_from sns-lvs@gmail.com 
   smtp_server 192.168.80.1 
   smtp_connection_timeout 30
   router_id LVS_DEVEL  # 设置lvs的id,在一个网络内应该是唯一的
} 
vrrp_instance VI_1 { 
    state MASTER   #指定Keepalived的角色,MASTER为主,BACKUP为备         
    interface eth0  #指定Keepalived的角色,MASTER为主,BACKUP为备
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR   
    advert_int 1  #检查间隔,默认为1s
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    virtual_ipaddress { 
        192.168.138.200  #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个
    } 
} 
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.138.200 80 { 
    delay_loop 6 # 设置健康检查时间,单位是秒                   
    lb_algo wrr # 设置负载调度的算法为wlc                  
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式  
    nat_mask 255.255.255.0               
    persistence_timeout 0         
    protocol TCP                 
    real_server 192.168.138.151 80 {  # 指定real server1的IP地址
        weight 3   # 配置节点权值,数字越大权重越高             
        TCP_CHECK { 
        connect_timeout 10        
        nb_get_retry 3 
        delay_before_retry 3 
        connect_port 80 
        } 
    } 
    real_server 192.168.138.152 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高 
        TCP_CHECK { 
        connect_timeout 10 
        nb_get_retry 3 
        delay_before_retry 3 
        connect_port 80 
        } 
     } 
}

 vim /etc/init.d/lvs_dr

web 服务器上面 也就是 realserver上面
 
 
SNS_VIP=192.168.138.200
/etc/rc.d/init.d/functions
case "$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_announce
       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 1
esac
exit 0

 



以上为主director的配置文件,从director的配置文件只需要修改
state MASTER -> state BACKUP
priority 100 -> priority 90
配置完keepalived后,需要开启端口转发(主从都要做):
echo 1 > /proc/sys/net/ipv4/ip_forward
然后,两个rs上运行lvs_dr
最后,两个director上启动keepalived服务(先主后从):
/etc/init.d/keepalived start
另外,需要注意的是,启动keepalived服务会自动生成vip和ipvsadm规则,不需要再去执行上面提到的/usr/local/sbin/lvs_dr.sh 脚本。
posted @ 2016-12-16 17:07  onlylc  阅读(173)  评论(0)    收藏  举报