lvs(centos5.6x64)
yum install ipvsadm
LVS server (ipvsadm安装机器,使用keeplivead无需配置 LVS server脚本)
#!/bin/bash
RIP1=172.16.0.151
RIP2=172.16.0.152
VIP1=172.16.0.73
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of DirectorServer"
# set the Virtual IP Address and sysctl parameter
/sbin/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
#/sbin/ifconfig eth0:1 $VIP2 broadcast $VIP2 netmask 255.255.255.255 up
/sbin/route add -host $VIP1 dev eth0:0
#/sbin/route add -host $VIP2 dev eth0:1
echo "1" >/proc/sys/net/ipv4/ip_forward
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
#Web Apache
/sbin/ipvsadm -A -t $VIP1:80 -s rr -p 120
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g #-g 表示使用DR方式,-m表示NAT方式,-i表示tunneling方式。
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g
#Run LVS
/sbin/ipvsadm
;;
stop)
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
RIP server (真实机器需配置脚本)
#!/bin/bash
#description:start realserver
#chkconfig
VIP1=172.16.0.73
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
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 "Usage: $0 {start|stop}"
exit 1
esac
安装keeplievd
wget
tar -zxvf keepalived-1.1.15.tar.gz
./configure --prefix=/usr/local/keepalive --with-kernel-dir=/usr/src/kernels/2.6.18-238.el5-x86_64 ##--with-kernel-dir=根据具体情况修改
检查Use IPVS Framework : Yes 是否为yes否则将不支持lvs
make && make install
将keepliaved做成系统服务
cp /usr/local/keepalive/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/keepalive/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/keepalive/sbin/keepalived /usr/sbin/
chkconfig --level 35 keepalived on
编辑配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
vrrp_instance VI_1 {
state MASTER ###备份服务器上将MASTER改为BACKUP
interface eth0 ###网卡接口对应的主机IP地址
virtual_router_id 51
priority 101 ###主LVS(建议100以上)这里的优先级必须比从LVS(建议
小于100)的要大
advert_int 1
authentication {
auth_type PASS ###主从LVS的认证用户名必须要一致,默认即可
auth_pass 1cf2dfd3fd4 ###主从LVS的认证密码必须要一致,默认即可
}
virtual_ipaddress {
172.16.0.73 ###虚拟IP地址1
172.16.0.158
####如果有多个VIP,继续换行填写
}
}
virtual_server 172.16.0.73 80 { ##IP地址与80之间必须空格,80与”{“也必须空格
delay_loop 6 ###每隔10秒查询realserver状态
lb_algo wrr ### lvs中的wrr算法,lvs共有8种算法,具体请看网上资料
lb_kind DR ###设置以DR模式实现负载均衡
persistence_timeout 50 ###同一IP的连接50秒内被分配到同一台realserver
inhibit_on_failure
protocol TCP ###用TCP协议检查realserver状态
real_server 172.16.0.151 80 { ##IP地址与80之间必须空格,80与”{“也必须空格
weight 3 ###权重
TCP_CHECK {
connect_timeout 10 ###10秒无响应超时
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 172.16.0.152 80 { ##IP地址与80之间必须空格,80与”{“也必须空格
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
virtual_server 172.16.0.73 443 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 172.16.0.151 443 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 443
}
}
real_server 172.16.0.152 443 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 443
}
}
}
virtual_server 172.16.0.158 3306 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 172.16.0.153 3306 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
real_server 172.16.0.154 3306 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
启动keepalived
/etc/init.d/keepalived start