LVS+Keepalived 实现负载均衡

Posted on Posted in linux
Tips: 本文创建于2015年10月27日,已超过 2 年,内容或图片可能已经失效!

LVS DR负载均衡模式数据分发过程中不修改IP地址,只修改mac地址,由于实际处理请求的真实物理IP地址和数据请求目的IP地址一致,所以不需要通过负载均衡服务器进行地址转换,可将响应数据包直接返回给用户浏览器,避免负载均衡服务器网卡带宽成为瓶颈。因此,DR模式具有较好的性能,也是目前大型网站使用最广泛的一种负载均衡手段。
![092307196049297.png][1]

系统环境:centos 6.5
1、绑定静态网址

  1. 192.168.80.100 lvs-master  
  2. 192.168.80.101 lvs-slave  
  3. #下面是本次试验的两个真实服务器节点  
  4. 192.168.80.102 lvs-webserver1  
  5. 192.168.80.103 lvs-webserver2  

2、关闭防火墙

  1. iptables -F  
  2. iptables -X  
  3. iptables -L  
  4.   
  5. setenforce 0  

3、配置两台web服务

  1. service httpd start  
  2.   
  3. vim /etc/init.d/realserver  
  4. SNS_VIP=192.168.80.200  
  5. /etc/rc.d/init.d/functions  
  6. case "$1" in  
  7. start)  
  8.        ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP  
  9.        /sbin/route add -host $SNS_VIP dev lo:0  
  10.        echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
  11.        echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce  
  12.        echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore  
  13.        echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce  
  14.        sysctl -p >/dev/null 2>&1  
  15.        echo "RealServer Start OK"  
  16.        ;;  
  17. stop)  
  18.        ifconfig lo:0 down  
  19.        route del $SNS_VIP >/dev/null 2>&1  
  20.        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
  21.        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce  
  22.        echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore  
  23.        echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce  
  24.        echo "RealServer Stoped"  
  25.        ;;  
  26. *)  
  27.        echo "Usage: $0 {start|stop}"  
  28.        exit 1  
  29. esac  
  30. exit 0  
  31.   
  32. chmod 755 /etc/init.d/realserver  
  33. service realserver start  

4、配置master

  1. yum -y install keepalived  
  2. cd /etc/keepalived/  
  3. mv keepalived.conf{,.bak}  
  4. vim keepalived.conf  
  5.   
  6. global_defs {    
  7.    notification_email {    
  8.          edisonchou@hotmail.com    
  9.    }    
  10.    notification_email_from sns-lvs@gmail.com    
  11.    smtp_server 192.168.80.1    
  12.    smtp_connection_timeout 30  
  13.    router_id LVS_DEVEL  # 设置lvs的id,在一个网络内应该是唯一的  
  14. }    
  15. vrrp_instance VI_1 {    
  16.     state MASTER   #指定Keepalived的角色,MASTER为主,BACKUP为备            
  17.     interface eth1  #指定Keepalived的角色,MASTER为主,BACKUP为备  
  18.     virtual_router_id 51  #虚拟路由编号,主备要一致  
  19.     priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR      
  20.     advert_int 1  #检查间隔,默认为1s  
  21.     authentication {    
  22.         auth_type PASS    
  23.         auth_pass 1111    
  24.     }    
  25.     virtual_ipaddress {    
  26.         192.168.80.200  #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个  
  27.     }    
  28. }    
  29. # 定义对外提供服务的LVS的VIP以及port  
  30. virtual_server 192.168.80.200 80 {    
  31.     delay_loop 6 # 设置健康检查时间,单位是秒                      
  32.     lb_algo wrr # 设置负载调度的算法为wlc                     
  33.     lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式     
  34.     nat_mask 255.255.255.0                  
  35.     persistence_timeout 0            
  36.     protocol TCP                    
  37.     real_server 192.168.80.102 80 {  # 指定real server1的IP地址  
  38.         weight 3   # 配置节点权值,数字越大权重越高                
  39.         TCP_CHECK {    
  40.         connect_timeout 10           
  41.         nb_get_retry 3    
  42.         delay_before_retry 3    
  43.         connect_port 80    
  44.         }    
  45.     }    
  46.     real_server 192.168.80.103 80 {  # 指定real server2的IP地址  
  47.         weight 3  # 配置节点权值,数字越大权重越高    
  48.         TCP_CHECK {    
  49.         connect_timeout 10    
  50.         nb_get_retry 3    
  51.         delay_before_retry 3    
  52.         connect_port 80    
  53.         }    
  54.      }    
  55. }   
  56.   
  57. service keepalived start  

5、配置slave

从负载服务器与主负载服务器大致相同,只是在keepalived的配置文件中需要改以下两处:

  (1)将state由MASTER改为BACKUP

  (2)将priority由100改为99

  1. vrrp_instance VI_1 {    
  2.     state BACKUP # 这里改为BACKUP  
  3.     interface eth1    
  4.     virtual_router_id 51    
  5.     priority 99 # 这里改为99,master优先级是100  
  6.     advert_int 1    
  7.     authentication {    
  8.         auth_type PASS    
  9.         auth_pass 1111    
  10.     }    
  11.     virtual_ipaddress {    
  12.         192.168.80.200    
  13.     }    
  14. }    

6、验证

  1. elinks http://192.168.80/200 --dump  

[1]: http://liuhonghe.me/wp-content/uploads/2015/10/1199289682.png

» 转载请注明来源:若我若鱼 » LVS+Keepalived 实现负载均衡

Leave a Reply

Your email address will not be published. Required fields are marked *

3 × one =