keepalived+LVS

VIP:192.168.142.111
WEB1:192.168.142.135
WEB2:192.168.142.134


安装软件:
Keepalived安装:
# tar zxvf keepalived-1.1.19.tar.gz 
# cd keepalived-1.1.19 
# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.18-128.el5-i686 
# make 
# make install
# cp keepalived/etc/init.d/keepalived.rh.init /etc/init.d/keepalived 
# chmod +x /etc/init.d/keepalived 
# cp keepalived/etc/init.d/keepalived.sysconfig /etc/sysconfig/keepalived

ipvsadm安装
yum -y install ipvsadm

web1 web2 可以yum install httpd 

配置文件修改:
master:web1配置文件

一   vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { 
   notification_email { 
     [email protected] 
   } 
   notification_email_from [email protected] 
   smtp_server 127.0.0.1 
   smtp_connect_timeout 30 
   router_id linux01 
}
vrrp_instance VI_1 {                               #定义一个实例 
    state MASTER                                    #设置为backup,然后通过priority控制哪台提升为主
    interface eth0 
    virtual_router_id 51 
    priority 100 
    nopreempt                                          #在priority高的这台设置这个参数,方便当主恢复后 
    advert_int 1                                        #可以自动接管 
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    virtual_ipaddress { 
        192.168.142.111 dev eth0 label eth0:0                #这里使用label标签启用eth0:0 
    } 
}
virtual_server 192.168.142.111 80 {                        #这里往下是定义LVS 
    delay_loop 6 
    lb_algo rr  #(循环调度)
##  lb_algo wlc  # (加权最少连接)
##  quiesce_server = 0   #(作用就是清空master机器的分配列表 所以的web任务机统一重新分配任务)   
##这个地方说明下 rr为循环调度。如果使用wlc加权最少连接的话,master会根据每台web机上的连接数进行分配任务。但是如果有一台新加的web进来,他的连接是0,那么master会连续给这台新加的web机器连接,短时间这台机器的负载压力会很大,所以如果lvs算放是wlc的话需要添加一条  quiesce_server = 0
    lb_kind DR 
##    persistence_timeout 20 #回话保持时间,这个对动态网站很有帮助, 当用户从远程用帐号进行登陆网站时,有了这个会话保持功能,就能把用户的请求转发给同一台机器。不会分配给另外一台web机器,导致用户刷新页面没有登录。
    nat_mask 255.255.255.0 
    protocol TCP
    real_server 127.0.0.1 80 {                            #其中一台是本地web服务 
        weight 1 
        TCP_CHECK { 
            connect_timeout 3 
        } 
    } 
    real_server 192.168.142.134 80 {             #另一台的web服务 
        weight 1 
        TCP_CHECK { 
            connect_timeout 3 
        } 
    }   
}
 二 为了区别两个页面 echo “master web1”>/var/www/html/index.html
 三 要是用lvs的dr模式,必须在realserver上启动回环地址,所以,搭建两台机器的负载均衡,当然就得在本机也启动相应的回环地址,
    才能实现所要的功能,脚本如下
    # vi /usr/local/bin/startlo
    #!/bin/sh
    VIP=192.168.142.111
case "$1" in 
  stop) 
        # close lo:0 interface
        echo $"Close lo:0 interface" 
        /sbin/route del -host $VIP dev lo:0 
        /sbin/ifconfig lo:0 down 
        echo "0">/proc/sys/net/ipv4/conf/all/arp_announce 
        echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore 
        echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce 
        echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore 
        ;; 
  start) 
        # start lo:0 interface
        echo $"Start lo:0 interface" 
        /sbin/ifconfig lo:0 $VIP/32 broadcast $VIP up 
        /sbin/route add -host $VIP dev lo:0 
        echo "2">/proc/sys/net/ipv4/conf/all/arp_announce 
        echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore 
        echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce 
        echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore 
        ;; 
  *) 
        echo $"Usage: $0 (start|stop)" 
        exit 1 
        ;; 
esac


由于keepalived不像heartbeat里有ldirectord来控制回环地址的启动和停止,所以我们需要人为的判断应该在哪台机器上启动回环地址,
所以。。。。写一个check脚本
vi /etc/keepalived/check.sh
#!/bin/bash 
#VIP_interface请根据自己的情况自行设定,这个是VIP接口 
#lo_interface请根据自己的情况自行设定,是回环地址接口
VIP_interface="eth0:0" 
lo_interface="lo:0"
i=10
while [ $i != 0 ] 
do 
    /sbin/ifconfig |grep $VIP_interface &>/dev/null 
    retval=$? 
    if [ ! $retval -eq 0 ];then 
        /sbin/ifconfig |grep $lo_interface &>/dev/null 
        retval=$? 
        if [ ! $retval -eq 0 ];then 
            /usr/local/bin/startlo start 
        fi 
    else 
        /sbin/ifconfig |grep $lo_interface &>/dev/null 
        retval=$? 
        if [ $retval -eq 0 ];then 
            /usr/local/bin/startlo stop 
        fi 
    fi 
    i=10 
    sleep 10 
done


backup web2配置文件修改 
一 在主配置文件keepalived.conf中修改下面三个地方
1、priority的值小于web1上值,蚊子设置为50 
2、在vrrp_instance VI_1的配置中不用设置nopreempt   
3、修改realserver部分的ip为本机和另外一台server的ip地址

二 可以上上面的/etc/keepalived/check.sh  /usr/local/bin/startlo拷贝到web2下相同路径


启动服务
首先在master启动 
httpd  
sh /etc/keepalived/check.sh & 
/etc/init.d/keepalived start   
sh /usr/local/bin/startlo  start
其次backup启动  
httpd  
sh /etc/keepalived/check.sh & 
/etc/init.d/keepalived start  
sh /usr/local/bin/startlo  start  


开始测试
1 在keepalived 和http都启动的情况下 不断刷新192.168.142.111这个vip地址 ,会不断的切换两个页面
2 停止web1的httpd  会一直停止在web2页面
3 停止web1的keepalived vip地址转移到web2上面去
4 启动web1的keepalived web1又称为master了


你可能感兴趣的:(LVS,keepalived,安装,软件)