LVS+Keppalived实现高可用负载均衡
三、LVS Keppalived的安装
3.1、环境描述
LVS server1 (Master):10.0.0.202 虚拟IP为:10.0.0.210
LVS server2 ( Slave ) :10.0.0.203虚拟IP为:10.0.0.210
WEB server1: 10.0.0.201 网关为:10.0.0.254
WEB server2; 10.0.0.204 网关为:10.0.0.254
注意:所有集群服务器时间要一致
3.2、安装LVS
注意此动作。否则MAKE直接报错。
如果没有/2.6.32-279.el6.x86_64 这个目录,请安装内核开发包
# yum -y install kernel-devel
# ln -s /usr/src/kernels/2.6.32-279.el6.x86_64/ /usr/src/linux(根据自己实际的内核,千万不能复制粘贴,千万!!!!)
# tar -xvf ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
#make && make install
# ipvsadm –L
3.3、安装Keepalived
# tar –xvf keepalived-1.2.12.tar.gz
#./configure --sysconf=/etc/ --with-kernel-dir=/usr/src/kernels/2.6.32-279.el6.x86_64/
Keepalived version : 1.2.12
Compiler : gcc
Compiler flags : -g -O2
Extra Lib : -lssl -lcrypto -lcrypt
Use IPVS Framework : Yes 表示使用ipvs框架,也是代表启动IPVS功能
IPVS sync daemon support : Yes 表示启动ipvs的同步功能,--disabled-lvs-sysncd此参数可以关闭。
IPVS use libnl : No 表示使用新的libn1版本,如果想使用新的版本,需要重新安装libn1的包
Use VRRP Framework : Yes 表示使用VRRP框架,这个实现keepalived高可用的必须功能
Use VRRP VMAC : Yes 表示使用基础VMAC接口的xmit VRRP包
SNMP support : No
SHA1 support : No
Use Debug flags : No
# make && make install
# cp /soft/keepalived-1.2.12/bin/keepalived /usr/bin/
ERRR:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files. !!!
解决:yum install -y openssl openssl-devel
3.3、主(master)配置Keepalived配置文件
! Configuration File for keepalived
global_defs {  #全局定义
   notification_email { #定义邮件
      alvin@126.com  #定义邮件地址
   }
   notification_email_from alvin@126.com #定义邮件地址
   smtp_server mail.126.com #邮件服务器
   smtp_connect_timeout 30 #邮件超时时间
   router_id LVS_DEVEL #route_id标识
}
vrrp_instance VI_1 { #定义VRR组,
    state MASTER  #定义为MASTER主
    interface eth1 #对外访问的网络接口
    virtual_router_id 100 #虚拟路由标识。注意主从要一致
    priority 100 #主从优先级,主的优先级要高于从。注意
    advert_int 1 #:广播周期秒数
    authentication {
        auth_type PASS
        auth_pass 2209
    }
    virtual_ipaddress {
        10.0.0.210 #:虚拟VIP地址,真实环境这里应该是公网IP
 }
}
virtual_server 10.0.0.210 80 { #:虚拟VIP地址 与 端口,DR架构WEB端口要和虚拟端口监听一致。否则将无法访问
    delay_loop 6 #健康检查时间间隔,单位是秒
    lb_algo rr   #调用算法为RR
    lb_kind DR   #调用架构模式为DR
    persistence_timeout 0 #:同一IP 50秒内的请求都发到同个real server
    protocol TCP  #使用TCP协议
    real_server 10.0.0.201 80 {#:真实WEB服务器地址与端口
     weight 1 #:转发伐值,越高调用的越多
        TCP_CHECK {
        connect_timeout 10   #:连接超时为10秒
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80  #连接端口为80,要和上面的保持一致
}
    }
    real_server 10.0.0.204 80 {
        weight 1
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
 
     }
}
3.4、从(Slave)配置Keepalived配置文件
主从配置区别:
state BACKUP #状态改成BACKUP priority 90 #优先级要低于主 interface eth1 #网络接口注意和本机对应,
其它的配置文件内容和主的一样
3.5、配置WEBserver,所有的WEB脚本都一样
# vim realserver.sh
如下:
#!/bin/bash
# Written by NetSeek
# description: Config realserver lo and apply noarp
WEB_VIP="10.0.0.210"        #:修改VIP,其它的地方不动,
. /etc/rc.d/init.d/functions
case "$1" in
start)
       ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
       /sbin/route add -host $WEB_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 $WEB_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"
       ;;
status)
        # Status of LVS-DR real server.
        islothere=`/sbin/ifconfig lo:0 | grep $WEB_VIP`
        isrothere=`netstat -rn | grep "lo:0" | grep $web_VIP`
        if [ ! "$islothere" -o ! "isrothere" ]
        then
            echo "LVS-DR real server Stopped."
        else
            echo "LVS-DR Running."
        fi
        ;;
*)
        # Invalid entry.
        echo "$0: Usage: $0 {start|status|stop}"
        exit 1
        ;;
esac
exit 0
 
3.5、启动WEB server的脚本
# ./ realserver.sh start
# ip add list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet 10.0.0.210/32 brd 10.0.0.210 scope global lo:0 是否有VIP?
inet6 ::1/128 scope host
3.6、启动LVS
在LVS主从服务器上启动LVS
# /etc/init.d/keepalived start
在MASTER服务器上会看到VIP,当MASTER挂了之后。VIP将自动切换到SLAVE(从),
# /etc/init.d/keepalived start
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:8c:4c:ec brd ff:ff:ff:ff:ff:ff
inet 10.0.0.202/16 brd 10.0.255.255 scope global eth1
inet 10.0.0.210/32 scope global eth1 是否有VIP?有则OK
inet6 fe80::20c:29ff:fe8c:4cec/64 scope link
valid_lft forever preferred_lft forever
3.7、访问测试
是否可以看到WEBIP
# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.0.210:http rr
-> 10.0.0.204:http Route 1 0 0
-> 10.0.0.201:http Route 1 0 0
然后通过浏览器访问:http://10.0.0.210 看看是否可以访问?
配置文件里面设置了。同一IP,50秒内定为一台WEBserver保证数据的完整连接。
如果80端口无非是用。请更该为81试试。?〉〉
 
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号 
