LAMP+LVS+KEEPALIVED(四)
#keepalived.conf配置说明,BACKUP需要更改state和priority优先级
#全局配置,主要配置报警邮件地址、snmp监控等等。
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.10.89
smtp_connect_timeout 30
router_id LVS_DEVEL
}
#vrrp实例配置,主要为主备负载调度器、vip和认证配置
vrrp_instance VI_1 {
#MASTER表示主,BACKUP表示为备
state MASTER
#在哪一个网络接口监测
interface eth0
#vrrp标识,同一个vrrp_instance下,MASTER和BACKUP必需相同
virtual_router_id 51
#优先级,数值越大优先级越高
priority 100
#MASTER和BACKUP同步检查时间间隔,单位秒
advert_int 1
#验证类型和密码
authentication {
auth_type PASS
auth_pass 1111
}
#vip配置,可以有多个,一行一个
virtual_ipaddress {
192.168.10.88
}
}
#虚拟服务器配置,主要为realserver配置、负载均衡方式、调度算法配置
virtual_server 192.168.10.88 80{
#运行情况检查时间间隔,单位秒
delay_loop 6
#负载调度算法,rr轮叫调度,wrr加权轮叫,lc最少连接,wlc加权最少连接
lb_algo rr
#负载均衡模式,NAT、TUN和DR
lb_kind DR
#会话保持时间
persistence_timeout 3
#指定转发协议,TCP或者UDP
protocol TCP
#RS服务器节点配置
real_server 192.168.80.40 {
#权值,数值越大优先级越高
weight 1
#RS虚拟服务器检测配置
TCP_CHECK {
#3秒无响应超时
connect_timeout 3
#重试次数
nb_get_retry 3
#重试间隔
delay_before_retry 3
#检测端口
connect_port 80
}
}
real_server 192.168.80 80 {
#权值
weight 1
#检测协议为TCP
TCP_CHECK {
#rs节点连接超时时间
connect_timeout 2
#连接失败后重试次数
nb_get_retry 3
#重试前等待时间
delay_before_retry 2
connect_port 80
}
}
real_server 192.168.10.81 80 {
weight 1
TCP_CHECK {
connect_timeout 2
nb_get_retry 3
delay_before_retry 2
connect_port 80
}
}
real_server 192.168.10.82 80 {
weight 1
TCP_CHECK {
connect_timeout 2
nb_get_retry 3
delay_before_retry 2
connect_port 80
}
}
real_server 192.168.10.83 80 {
weight 1
TCP_CHECK {
connect_timeout 2
nb_get_retry 3
delay_before_retry 2
connect_port 80
}
}
real_server 192.168.10.84 80 {
weight 1
TCP_CHECK {
connect_timeout 2
nb_get_retry 3
delay_before_retry 2
connect_port 80
}
}
}
#图示1
#图示2
(6)realserver脚本
#!/bin/sh
#start realserver
vip=192.168.10.88
source /etc/init.d/functions
case "$1" in
start)
echo "start lvs realserver."
/sbin/ifconfig lo:0 $vip broadcast $vip 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)
echo "stop lvs realserver."
/sbin/ifconfig lo:0 down
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
#VS/DR和VS/TUN模式下realserver需要使用此脚本设置
(7)启动ipvsadm、keepalived和realserver
#在负载调度器上开启IP转发功能
sysctl -w net.ipv4.ip_forward=1
#或者
echo "1">/proc/sys/net/ipv4/ip_forward
#在负载调度器上启动ipvsadm
/sbin/ipvsadm
#在负载调度器上启动keepalived
/usr/local/keepalived/sbin/keepalived
/etc/init.d/keepalived restart
#在所有服务器节点启动realserver
./realserver start
(8)ipvsadm负载均衡测试
#ipvsadm ln
#负载调度器也作为一台rs服务器,所有有5台rs
#使用不同的客户端来访问192.168.10.88
#将4台rs的httpd服务停止后
#keepalived很快就检测到81、82、83和84 TCP连接失败
#因为89这台主机并没有作为smtp服务器,所以有会SMTP连接失败信息
#也可以在keepalived.conf配置去除smtp配置,就不会有此类错误信息显示
#不同IP的客户端访问效果,因为只剩下80这台既是负载调度器又是rs服务器
#所以客户端全部都被分配到80这台rs服务器
#ipvsadm状态信息,一共有4个客户端,IP分别为10.186、10.77、0.192
#0.239是通过10.249上网的,所以显示为10.249