输入以下代码
! Configuration File for keepalived
global_defs {
notification_email {
lijun_hot@163.com #如果本机没有SMTP服务,报警信还是发不出去,汗
}
notification_email_from root@localhost //邮件发送方
smtp_server 127.0.0.1 //邮件外发服务器地址
smtp_connect_timeout 30 //邮件超时时间为30秒
router_id LVS_DEVEL //router 一个实例标示
}
vrrp_instance VI_1 { //一个vrrp实例
state MASTER #备份服务器上将MASTER改为BACKUP 一定为大写
interface eth0 #HA监测网络接口 实例网卡,也就是提供服务的网卡
virtual_router_id 51 #主、备机的virtual_router_id一定要相同,必须相同!!!
priority 100 #主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 #VRRP Multicast广播周期秒数 检查时间为1秒
authentication {
auth_type PASS #VRRP认证方式
auth_pass 1111 #VRRP口令字
}
virtual_ipaddress {
192.168.2.130 #LVS虚拟地址,可写多个VIP,一行一个VIP
192.168.2.140
}
nopreempt //当主机上线之后,vip不回滚,节省资源
}
virtual_server 192.168.2.130 80 {
delay_loop 2 #延时等待时间
lb_algo wrr #轮询算法
lb_kind DR #传输模式
persistence_timeout 600 #单一链接重连保持时间,这里设置600秒
protocol TCP
real_server 192.168.2.133 80 {
weight 1 #权重
TCP_CHECK { #realserve的状态检测设置部分,单位是秒
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.2.134 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 192.168.2.140 80 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 600
protocol TCP
real_server 192.168.2.135 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.2.136 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
好,:wq保存退出。
1.5 配置sysctl.conf并使其新配置生效
#vi /etc/sysctl.conf
输入以下代码
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=1
net.ipv4.conf.default.send_redirects=1
net.ipv4.conf.eth0.send_redirects=1
好,:wq保存退出。
#sysctl -p ***新配置生效了***
到这里,主LVS的安装和设置工作就完成了。
备用LVS的安装和设置,和主LVS一样,不同的是配置keepalived的时候,只要把主LVS的配置文件/etc/keepalived/keepalived.conf ,拷贝到备用LVS的对应位置/etc/keepalived/keepalived.conf。
然后更改以下两项,其他安装和配置和主LVS一样。
1.
state MASTER #备份服务器上将MASTER改为BACKUP,因为备用LVS一定要用BACKUP
更改完后就是这样的
state BACKUP
2.
priority 100 #主、备机取不同的优先级,主机值较大,备份机值较小,所以备用LVS我取90
更改完后就是这样的
priority 90
OK,这样,就可以了。主,备LVS,都已经安装配置完了现在我们设置realserver就可以了
2.1 配置realserver,编写启动脚本
我们先来配置Nginx应用的realserver。
登陆RIP1:192.168.2.133 (Nginx1)
#vi rs
输入以下代码
#!/bin/bash
#2009-06-02 by Minyoni http://adidas.blog.51cto.com
VIP=192.168.2.130
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $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 $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
好,:wq保存退出
#chmod 755 rs ***赋予可执行权限***
登陆RIP3:192.168.2.134 (Nginx2)
重复刚才的工作。
2.2 现在我们来配置Squid应用的realserver。
登陆RIP1:192.168.2.135 (Squid1)
#vi rs
输入以下代码
#!/bin/bash
#2009-06-02 by Minyoni http://adidas.blog.51cto.com
VIP=192.168.2.140
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $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 $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
好,:wq保存退出
#chmod 755 rs ***赋予可执行权限***
登陆RIP4:192.168.2.136 (Squid2)
重复刚才的工作。
3.1 启动keepalived+lvs
到此为止,所有的安装配置工作全部都做完了。我们来启动keepalived+lvs,让其工作
首先登陆
RIP1:192.168.2.133 *** Nginx1 ***
RIP2:192.168.2.134 *** Nginx2 ***
RIP3:192.168.2.135 *** Squid1 ***
RIP4:192.168.2.136 *** Squid2 ***
启动相应的应用程序Nginx和Squid
然后在这4台服务器上都执行rs脚本, 千万要记得你的rs脚本保存在哪里了
rs脚本的用法
#./rs start ***启动realserver的虚拟IP***
#./rs stop ***停止realserver的虚拟IP***
我们现在启动realserver的虚拟IP
#./rs start
RealServer Start OK ***提示启动虚拟IP成功***
接着查看一下
#ifconfig lo:0 ***查看虚拟IP信息,你会看到信息***
然后把其余3台都执行一次
#./rs star
现在登录
LVS1:192.168.2.131 *** LVS1 ( 主)***
LVS2:192.168.2.132 *** LVS2 备用)***
先在 LVS1:192.168.2.131 主LVS上执行dlvs脚本,用法
#./dlvs start ***启动ipvsadm***
#./dlvs stop ***停止ipvsadm***
执行
#./dlvs start ***现在ipvsadm已经启动了***
执行
#service keepalived start ***启动keepalived进入LVS的高可用式模式
在 LVS2:192.168.2.132 备用LVS上执行
#./dlvs start ***现在ipvsadm已经启动了***
#service keepalived start ***启动keepalived进入LVS的高可用模式***
现在LVS已经运行在高可用模式了
回到主LVS上查看ipvsadm 运行情况
#watch ipvsadm -ln
停掉RIP1:192.168.2.133 (Nginx1) 的 WEB服务
192.168.2.133 不在列表中
启动RIP1:192.168.2.133 (Nginx1) 的 WEB服务
192.168.2.133 恢复到列表中了
以上说明了keepalived会自动接管ipvsadm,自动检测realserver的状态
现在来测试主LVS和备用LVS之间的相互检测
停掉主LVS
#./dlvs stop
#service keepalived stop
查看备用LVS的运行状态
先查看下messages
#tail -f /var/log/messages
备用LVS已经接管了工作,状态为MASTER STATE
备用LVS上查看ipvsadm 运行情况
一切还是正常的,接管了工作
如果这时候启动主LVS
#./dlvs start
#service keepalived start
查看messages日志
#tail -f /var/log/messages
主LVS又主动接管了工作,状态为MASTER STATE
这个时候,备用LVS的状态一定是BACKUP STATE