天天看点

LVS+Keepalived 多个VIP 测试总结

Posted by admin on 测试环境:

LVS服务器 ip:200.168.10.1 VIP1:200.168.10.10 VIP2:200.168.10.11

备用LVS服务器 ip:200.168.10.8

两台真是服务器 RIP1:200.168.10.2(在 eth0:0上增加一个IP:200.168.10.5) RIP2:200.168.10.3 (在 eth0:0上增加一个IP:200.168.10.6)

配置两台真实服务器

?[Copy to clipboard] View Code PHP

#!/bin/bash
VIP_0=200.168.10.10
VIP_1=200.168.10.11
/etc/rc.d/init.d/functions
case "$1" in
start)
               ifconfig lo:0 $VIP_0 netmask 255.255.255.255 broadcast $VIP_0 up
               ifconfig lo:1 $VIP_1 netmask 255.255.255.255 broadcast $VIP_1 up
               /sbin/route add -host $VIP_0 dev lo:0
               /sbin/route add -host $VIP_1 dev lo:1
 
               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
               ifconfig lo:1 down
               /sbin/route del $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"
               ;;
*)
               echo "Usage: $0 {start|stop}"
               exit 1
esac
exit 0
           

给 /etc/rc.d/init.d/functions 执行权限

把上面这段shell保存为 lvs_mult.sh 并给予 执行权限

启动 lvs_mult.sh start

两台机子操作一样

在 lo 这个回环接口上出现 lo:0 lo:1 表示设置成功

配置下apache的配置文件 主要是配置虚拟主机

<VirtualHost 200.168.10.10:80>

ServerAdmin [email protected]

DocumentRoot “/web/www/”

ServerName www.abc.com

CustomLog “/web/www/access.log” common

<Directory “/web/www/”>

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

<VirtualHost 200.168.10.11:80>

ServerAdmin [email protected]

DocumentRoot “/web/test/”

ServerName sell.abc.com

CustomLog “/web/test/access.log” common

<Directory “/web/test/”>

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

接下去就是在LVS主服务器上

安装 ipvsadm

yum -y install ipvsadm

安装 keepalived 我使用的版本是 1.2.4

./configure –prefix=/usr/local/keepalived

make && make install

如在 configure是出现错误 一般来说 没有安装gcc 编译器 或者 popt-devel 没有安装

如在 make 时出现错误 修改 源码所在目录 keepalived/libipvs-2.6/ip_vs.h 在 #include <sys/types.h>   下面 增加一行 #include <linux/types.h> 重新 make

配置 keepalived for LVS 主服务器

?[Copy to clipboard] View Code PHP

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -p /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
chmod +x /etc/init.d/keepalived
           

vi /etc/keepalived/keepalived.conf

?[Copy to clipboard] View Code PHP

global_defs {
    router_id lvs_1
}
vrrp_sync_group VGM {
   group {
       VI_WEB
   }
}
vrrp_sync_group VGM1 {
   group {
       VI_WEB2
   }
}
vrrp_instance VI_WEB {
     state MASTER
    interface eth0
    lvs_sync_daemon_inteface eth0
    virtual_router_id 51
    priority 180
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        200.168.10.10
    }
}
# setting port 80 forward
virtual_server 200.168.10.10 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 10
    protocol TCP
    real_server 200.168.10.2 80 {
        weight 100
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
   real_server 200.168.10.3 80 {
        weight 100
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}
vrrp_instance VI_WEB2 {
     state MASTER
    interface eth0
    lvs_sync_daemon_inteface eth0
    virtual_router_id 52
    priority 180
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        200.168.10.11
    }
}
# setting port 80 forward
virtual_server 200.168.10.11 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 10
    protocol TCP
    real_server 200.168.10.5 80 {
        weight 100
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
   real_server 200.168.10.6 80 {
        weight 100
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}
           

启动 /etc/init.d/keepalived start

LVS 备用服务器 keepalived.conf 主要修改 把MASTER修改为 BACKUP priority 180 改为 150 即可 其他配置跟主服务器一样

OK,总结成功

参考 http://www.keepalived.org/pdf/sery-lvs-cluster.pdf

转载 http://www.wenlingnet.com/index.php/232/

继续阅读