再次测试配置keepalived,lvs和realserver


熟能生巧嘛。


对keepalived和VRRP的理解:

keepalived: 高可用,更便捷的配置管理lvs
vrrp: 理解成局域网中增加了一个虚拟路由器组,其中有一个主机上的vrrp实例是master角色,上面启用了vip,组内其他都是backup角色,利用这个协议,可以让vip在局域网中同组的vrrp实例上漂移


一、需求
要使用keepalived配置vip来转发到后端的realserver上

vip:10.0.200.100
dip: 
10.0.200.104(master)
10.0.200.105(backup)

rip:
10.0.200.101(haproxy)
10.0.200.102(haproxy)
rip_port: 10010(tcp)、10020(http)、10030(tcp)


测试keepalived环境的配置
tcpdump -i em1 vrrp
service keepalived start
service keepalived restart
service keepalived stop
tail /var/log/messages -f
ip a s dev em1


二、配置master
[root@200-104 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   router_id LVS_200_104
}

vrrp_instance VIP_NSQ_100 {
    state MASTER
    interface em1
    virtual_router_id 100
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 12345
    }
    virtual_ipaddress {
        10.0.200.100
    }
}


virtual_server 10.0.200.100 10010 {   #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开
   delay_loop 6                    #设置运行情况检查时间,单位是秒
   lb_algo rr                      #设置负载调度算法,这里设置为rr,即轮询算法
   lb_kind DR                      #设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选
   persistence_timeout 50          #会话保持时间,单位是秒。
   protocol TCP                    #指定转发协议类型,有TCP和UDP两种
 
   real_server 10.0.200.102 10010 {     #配置服务节点1,需要指定real server的真实IP地址和端口,IP与端口之间用空格隔开
       weight 1                    #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值大小可以为不同性能的服务器
                                   #分配不同的负载,可以为性能高的服务器设置较高的权值,而为性能较低的服务器设置相对较低的权值,这样才能合理地利用和分配系统资源
       TCP_CHECK {                 #realserver的状态检测设置部分,单位是秒
           connect_timeout 10      #表示10秒无响应超时
           nb_get_retry 3          #表示重试次数
           delay_before_retry 3    #表示重试间隔
           connect_port 10010
       }
   }
   real_server 10.0.200.101 10010 {
       weight 1
       TCP_CHECK {
           connect_timeout 10
           nb_get_retry 3
           delay_before_retry 3
           connect_port 10010
       }
   }
}


virtual_server 10.0.200.100 10020 {   
   delay_loop 6                    
   lb_algo rr                      
   lb_kind DR                      
   persistence_timeout 50          
   protocol TCP                    

   real_server 10.0.200.102 10020 {     
       weight 1                    
                                   
       TCP_CHECK {                 
           connect_timeout 10      
           nb_get_retry 3          
           delay_before_retry 3    
           connect_port 10020
       }
   }
   real_server 10.0.200.101 10020 {
       weight 1
       TCP_CHECK {
           connect_timeout 10
           nb_get_retry 3
           delay_before_retry 3
           connect_port 10020
       }
   }
}


virtual_server 10.0.200.100 10030 {   
   delay_loop 6                    
   lb_algo rr                      
   lb_kind DR                      
   persistence_timeout 50          
   protocol TCP                    

   real_server 10.0.200.102 10030 {     
       weight 1                    
                                   
       TCP_CHECK {                 
           connect_timeout 10      
           nb_get_retry 3          
           delay_before_retry 3    
           connect_port 10030
       }
   }
   real_server 10.0.200.101 10030 {
       weight 1
       TCP_CHECK {
           connect_timeout 10
           nb_get_retry 3
           delay_before_retry 3
           connect_port 10030
       }
   }
}



二、配置backup
[root@200-104 ~]# diff keepalived.conf  backup/keepalived.conf 
4c4
<    router_id LVS_200_104
---
>    router_id LVS_200_105
8c8
<     state MASTER
---
>     state BACKUP
11c11
<     priority 100
---
>     priority 50
29c29
<  
---
> 


三、服务启动
在rip上也要启用vip:
之前介绍过这个脚本:lvs-realsvr.sh
拷贝到rip主机的启动脚本中:

[root@200-101 ~]# /etc/init.d/lvs-realsvr
[root@200-101 ~]# service lvs-realsvr start
[root@200-101 ~]# chkconfig lvs-realsvr on

10.0.200.102同上。

启动keepalived服务:
[root@200-104 ~]# service keepalived start
确认无误后,这个可别忘了:
[root@200-104 ~]# chkconfig keepalived on

10.0.200.105同理







四、调整2个Director的防火墙策略
1)因为iptables过滤了vrrp协议,它不属于任何端口,像icmp一样,需要单独放行。
-A INPUT -p vrrp -j ACCEPT


2)保存现在的策略
[root@200-104 ~]# iptables-save >/root/rc.firewall.txt 


3)修改
例如,在上面的配置文件中,增加到/root/rc.firewall.txt中,icmp那条策略后
-A INPUT -p icmp -j ACCEPT
-A INPUT -p vrrp -j ACCEPT   <-  这是增加的一条策略
-A INPUT -i lo -j ACCEPT 


4)应用防火墙策略
[root@200-104 ~]# iptables-restore /root/rc.firewall.txt


5)确认无误,记得保存防火墙:
[root@200-104 ~]# service iptables save