配置LVS keepalived主从切换时同步连接状态信息

由于LVS负载均衡器需要保存大量的连接信息,记录每个TCP连接由哪台真实服务器处理。

[root@localhost keepshell]# ipvsadm -L -n -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 14:58  ESTABLISHED 192.168.80.1:57622 192.168.80.138:8080 192.168.80.135:8080
TCP 14:58  ESTABLISHED 192.168.80.1:57624 192.168.80.138:8080 192.168.80.135:8080
TCP 14:58  ESTABLISHED 192.168.80.1:57621 192.168.80.138:8080 192.168.80.136:8080
TCP 14:58  ESTABLISHED 192.168.80.1:57625 192.168.80.138:8080 192.168.80.136:8080
TCP 14:58  ESTABLISHED 192.168.80.1:57623 192.168.80.138:8080 192.168.80.136:8080
TCP 14:58  ESTABLISHED 192.168.80.1:57626 192.168.80.138:8080 192.168.80.135:8080

当主负载均衡器宕机以后,备机提升为主,但备机缺省没有这些连接信息,会导致客户端的连接失效,为了解决这一问题,LVS在Linux内核实现了同步连接信息的功能.

ipvsadm -L --daemon  查看同步进程信息

ipvsadm --start-daemon master|backup --mcast-interface=网卡名称 --syncid 编号,主备需要一致

ipvsadm --stop-daemon master|backup 停止同步
ipvsadm -L -n -c 查看连接状态信息

下面给出配置

keepalived.conf

! Configuration File for keepalived  

global_defs {  
   notification_email {  
     root@localhost  
   }  
   notification_email_from root@localhost    
   smtp_server localhost    
   smtp_connect_timeout 30    
   router_id  NodeA  
} 


! Configuration File for keepalived  

global_defs {  
   notification_email {  
     root@localhost  
   }  
   notification_email_from root@localhost    
   smtp_server localhost    
   smtp_connect_timeout 30    
   router_id  NodeA  
} 

virtual_server 192.168.80.138 8080 {   
   delay_loop 6                    
   lb_algo rr                       
   lb_kind DR                            
   persistence_timeout 0             
   protocol TCP                      
   real_server 192.168.80.135 8080 {     
       weight 1                        
        HTTP_GET {  
            url {   
              path /index.jsp  
              digest 5cce221db9752be2116860efb866144e  
            }  
            connect_timeout 5  
            nb_get_retry 3  
            delay_before_retry 3  
        }         
   }  

   real_server 192.168.80.136 8080 {      
       weight 1  
        HTTP_GET {  
            url {   
              path /index.jsp  
              digest 345e829e9a900a87a8fce740ef243198  
            }  
            connect_timeout 5  
            nb_get_retry 3  
            delay_before_retry 3  
        }          
   }  
}  

notify_master.sh

#!/bin/bash  
echo $(date "+%Y-%m-%d %H:%M:%S") "The keepalived service is master." >> /home/keepshell/gexin.txt  
ipvsadm --stop-daemon backup  
ipvsadm --start-daemon master --mcast-interface=eno16777736 --syncid 1 

notify_backup.sh

#!/bin/bash  
echo $(date "+%Y-%m-%d %H:%M:%S") "The keepalived service is backup." >> /home/keepshell/gexin.txt  
ipvsadm --stop-daemon master  
ipvsadm --start-daemon backup --mcast-interface=eno16777736 --syncid 1  

notify_stop.sh

#!/bin/bash  
echo $(date "+%Y-%m-%d %H:%M:%S") "The keepalived service is stop." >> /home/keepshell/gexin.txt  
ipvsadm --stop-daemon master  
ipvsadm --stop-daemon backup 
发布于:2019-11-14 17:14:46