LVS+Keepalived实现负载均衡和双机热备

 1. 说明

         在《keepalived实现Tomcat服务双机热备》中主要讲述如何安装及配置Keepalived来实现双机热备,主要功能是:MASTER和BACKUP两台服务器处于热备状态,对用户虚拟一个IP,屏蔽底层的真实IP地址,用户通过虚拟IP访问当前的MASTER服务器;当MASTER服务器宕机或者发生其他故障时,BACKUP自动切换为MASTER,这个过程对用户时透明的。

         本文主要讲述如何安装ipvsadm、如何配置LVS+Keepalived实现负载均衡和双机热备的功能。功能描述:用户通过虚拟IP访问时,应当会负载均衡到主备服务器上;当然,当MASTER服务器宕机或者发生其他故障时,BACKUP也会自动切换为MASTER。

2. 安装及配置

2.1 安装ipvsadm

         首先安装ipvsadm,本人用的版本是ipvsadm-1.24-6。可以去相关网站进行下载ipvsadm-1.24-6.src.rpm。

         下面安装ipvsadm:(将ipvsadm-1.24-6.src.rpm放在根目录下)

[plain]  view plain  copy
  1. [~] rpm -ivh ipvsadm-1.24-6.src.rpm  
  2. [~] cd /usr/src/redhat/SOURCES  
  3. [SOURCES] tar -zxvf ipvsadm-1.24.tar.gz  
  4. [SOURCES] uname -r  
  5. 2.6.18-238.el5  
  6. [SOURCES] ln -s/usr/src/kernels/2.6.18.238.el5-X86_64/ /usr/src/linux  
  7. [SOURCES] cd ipvsadm-1.24  
  8. [ipvsadm-1.24] make; make install  

2.2 配置keepalived.conf

         接着配置keepalived.conf:(具体安装请参考《keepalived实现Tomcat服务双机热备》)

MASTER(10.10.195.53)配置:

[plain]  view plain  copy
  1. global_defs {  
  2.    router_id LVS_DEVEL_1  
  3. }  
  4. vrrp_script chk_http_port {  
  5.    script "/opt/tomcat.pid"  
  6.    interval 5  
  7.    weight 2  
  8. }  
  9. vrrp_instance VI_1 {  
  10.    state MASTER  
  11.    interface eth0  
  12.    virtual_router_id 53  
  13.    priority 150  
  14.    advert_int 1  
  15.    
  16.    authentication {  
  17.        auth_type PASS  
  18.        auth_pass 1111  
  19.     }  
  20.    track_script {  
  21.        chk_http_port  
  22.     }  
  23.    virtual_ipaddress {  
  24.        10.10.195.212  #VIP  
  25.     }  
  26. }  
  27. virtual_server 10.10.195.212 8080 {  
  28.        delay_loop 6  
  29.        lb_algo wrr  
  30.        lb_kind DR  
  31.        protocol TCP  
  32.        real_server 10.10.195.53 8080 {  
  33.                 weight 1  
  34.                 TCP_CHECK {  
  35.                         connect_timeout 3  
  36.                         nb_get_retry 3  
  37.                         delay_before_retry 3  
  38.                         connect_port 8080  
  39.                 }  
  40.        }  
  41.        real_server 10.10.195.190 8080 {  
  42.                 weight 1  
  43.                 TCP_CHECK {  
  44.                         connect_timeout 3  
  45.                         nb_get_retry 3  
  46.                         delay_before_retry 3  
  47.                         connect_port 8080  
  48.                 }  
  49.        }  
  50. }  

BACKUP(10.10.195.190)配置:

[plain]  view plain  copy
  1. lobal_defs {  
  2.    router_id LVS_DEVEL_2  
  3. }  
  4. vrrp_script chk_http_port {  
  5.        script "/opt/tomcat.pid"  
  6.        interval 5  
  7.        weight 2  
  8. }  
  9. vrrp_instance VI_1 {  
  10.    state BACKUP  
  11.    interface eth0  
  12.    virtual_router_id 53  
  13.    priority 100  
  14.     advert_int 1  
  15.    
  16.    authentication {  
  17.        auth_type PASS  
  18.        auth_pass 1111  
  19.     }  
  20.    track_script {  
  21.        chk_http_port  
  22.     }  
  23.    virtual_ipaddress {  
  24.        10.10.195.212  
  25.     }  
  26. }  
  27. virtual_server 10.10.195.212 8080 {  
  28.        delay_loop 6  
  29.        lb_algo wrr  
  30.        lb_kind DR  
  31.        protocol TCP  
  32.        real_server 10.10.195.53 8080 {  
  33.                 weight 1  
  34.                 TCP_CHECK {  
  35.                         connect_timeout 3  
  36.                         nb_get_retry 3  
  37.                         delay_before_retry 3  
  38.                         connect_port 8080  
  39.                 }  
  40.        }  
  41.        real_server 10.10.195.190 8080 {  
  42.                 weight 1  
  43.                 TCP_CHECK {  
  44.                         connect_timeout 3  
  45.                         nb_get_retry 3  
  46.                         delay_before_retry 3  
  47.                         connect_port 8080  
  48.                 }  
  49.        }  
  50. }  

2.3  LVS脚本配置

         两台WEB服务器安装http服务(tomcat)后,创建文件并赋予权限,配置lvs脚本,脚本作用是一直ARP广播,将请求包都由负载均衡lvs服务分配。

         主备机的LVS脚本是相同的。虚拟IP(VIP)是10.10.195.212。下面是脚本的代码:

[plain]  view plain  copy
  1. [~] vim /sbin/realdr.sh  

[plain]  view plain  copy
  1. #!/bin/bash  
  2.   
  3. VIP=10.10.195.211  
  4. /etc/rc.d/init.d/functions  
  5.   
  6. case "$1" in  
  7. start)  
  8.         echo "start LVS of REALServer"  
  9.         /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up  
  10. #       /sbin/route add -host $VIP dev 1o:0  
  11.         echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
  12.         echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce  
  13.         echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore  
  14.         echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce  
  15. ;;  
  16. stop)  
  17.         echo "close LVS REALServer"  
  18.         /sbin/ifconfig lo:0 down  
  19. #       /sbin/route del -host $VIP dev lo:0  
  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. ;;  
  25. status)  
  26.         islothere=`/sbin/ifconfig lo:0 | grep $VIP | wc -l`  
  27.         isrothere=`netstat -rn | grep "lo:0" | grep $VIP | wc -l`  
  28. #       echo $islothere  
  29. #       echo $isrothere  
  30.         if [ $islothere -eq 0 ]  
  31.         then  
  32.                 if [ $isrothere -eq 0 ]  
  33.                 then  
  34.                         echo "LVS of REALServer Stoped."  
  35.                 else  
  36.                         echo "LVS of REALServer Running."  
  37.                 fi  
  38.         else  
  39.                 echo "LVS of REALServer Running."  
  40.         fi  
  41. ;;  
  42. *)  
  43.         echo "Usage:$0{start|stop}"  
  44.         exit 1  
  45. ;;  
  46. esac  


设置LVS脚本权限并运行:

[plain]  view plain  copy
  1. [~] chmod 755 /sbin/realdr.sh  
  2. [~] /sbin/realdr.sh start  

3. 查看

3.1查看虚拟ip相关信息

         之后安装并启动keepalived:service keepalived start.

         可以通过使用ip addshow命令查看(以MASTER为例):

[plain]  view plain  copy
  1. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu16436 qdisc noqueue  
  2.    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00  
  3.    inet 127.0.0.1/8 scope host lo  
  4.     inet 10.10.195.211/32 brd 10.10.195.211 scope global lo:0  
  5. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc pfifo_fast qlen 1000  
  6.    link/ether 00:0c:29:6b:f2:a8 brd ff:ff:ff:ff:ff:ff  
  7.    inet 10.10.195.53/24 brd 10.10.195.255 scope global eth0  
  8.     inet 10.10.195.211/32 scope global eth0  

         可以看到lo及eth0上都有虚拟IP地址。

3.2 查看负载均衡状态

在终端输入命令:ipvsadm可以查看。

MASTER(10.10.195.53):

[plain]  view plain  copy
  1. IP Virtual Server version 1.2.1 (size=4096)  
  2. Prot LocalAddress:Port Scheduler Flags  
  3.  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn  
  4. TCP 10.10.195.212:webcache wrr  
  5.  -> 10.10.195.190:webcache      Route   1      0         11  
  6.  -> shr:webcache                Local   1      0         0  

BACKUP(10.10.195.190):

[plain]  view plain  copy
  1. IP Virtual Server version 1.2.1 (size=4096)  
  2. Prot LocalAddress:Port Scheduler Flags  
  3.  -> RemoteAddress:Port          Forward Weight ActiveConn InActConn  
  4. TCP 10.10.195.211:webcache wrr  
  5.  -> server1:webcache            Local   1      0         0  
  6.  -> 10.10.195.53:webcache       Route   1      0         11  

4. 测试

         如果多次打开浏览器,通过虚拟IP访问网站,应当会负载均衡到两台服务器上。第一次打开一个浏览器并输入http://10.10.195.212:8080/,显示10.10.195.53(190)服务的内容;第二次打开一个浏览器并输入http://10.10.195.212:8080/,显示10.10.195.190(53)服务器的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值