当学习了LVS三种模式的负载均衡。以DR模式为例,配置完后需要directord实现后端服务器的健康检查。而且还无法解决调度器宕掉整个负载均衡失去作用的问题,感觉很不爽。那么在DR模式下,为何不用keepalived实现LVS的高可用,还能对后端服务器进行健康检查。
keepalived实现LVS高可用的工作原理
用keepalived对后端web服务器的状态进行健康检查,如果某个web服务器宕机或者故障,keepalived将检测到,并将故障的服务器从系统中剔除,同时使用其他服务器来代替该服务器的工作,当该服务器正常工作后,keepalived自动将该服务器添加到服务器群。再通过配置主备keepalived,即需要配置两台主机的keeplived实现高可用。一台主机上keeplived宕掉了,则有备份keeplived接管负载均衡调度。
实验环境
主机名 | 功能 |
---|---|
server4 | 负载均衡调度器+keepalived(MASTER) |
server5 | 后端服务器1 |
server6 | 后端服务器2 |
server7 | 负载均衡调度器+keepalived(BACKUP) |
一.keepalived+LVS(DR模式)负载均衡的配置
1.安装虚拟服务器1.4.3版本的keepalived包,并解压
tar zxf keepalived-1.4.3.tar.gz
cd keepalived-1.4.3
yum install -y openssl-devel.x86_64 ##安装keepalived依赖包
2.编译keepalived的源码包
yum install -y gcc ##因为源码是c编写的,所以需要安装gcc
./configure --prefix=/usr/local/keepalived --with-init=SYSV
make && make install
3.制作keepalived软链接,方便管理和配置,并添加可执行权限
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
ln -s /ln -s /usr/local/keepalived/etc/keepalived/ /etc/
usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
4.将keepalived复制到server7
scp -r /usr/local/keepalived/ server4:/usr/local/
5.在server4中修改keepalived的配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
##全局配置
global_defs {
notification_email {
root@localhost ##健康检查报告通知邮箱
}
notification_email_from keepalived@localhost ##发送邮件的地址
smtp_server 127.0.0.1 ##邮件服务器
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
##vrrpd的配置
vrrp_instance VI_1 {
state MASTER
interface eth0 ##绑定虚拟IP的指定节点
virtual_router_id 1
priority 100 ##优先级。主节点要比从节点优先级高
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.13.100 # 设定虚拟ip(启动服务后,ip会自动添加在eth0中)
}
}
##Apache服务的负载均衡
virtual_server 172.25.13.100 80 {
delay_loop 1 ## 当RS服务器出问题后的反映时间
lb_algo rr ## 指定LVS的算法,这里选择轮循rr
lb_kind DR ## 指定LVS的模式,这里选择DR(直接路由模式)
#persistence_timeout 50
protocol TCP
# RS的健康检查机制
real_server 172.25.13.5 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.13.6 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
6.在server4上启动keepalived服务
1)启动前先关闭ipvsadm
systemctl stop ipvsadm ## 可以用ipvasdm -L查看策略,空表示关闭了
2)开启keepalived服务
systemctl start keepalived
开启后server4的eth0会自动添加上虚拟IP:172.25.13.100/32
7.在测试机中进行apache服务的测试
1)轮询方式访问web后端服务器server5和server6
2)当后端服务器server5的apache服务挂掉,keepalived可以检测到,并将故障的服务器从系统中剔除。
[root@server5 ~]# systemctl stop httpd
3)当服务器工作正常后 Keepalived自动将服务器加入到服务器群中
[root@server5 ~]# systemctl start httpd
二.keepalived+lvs(DR)实现高可用
为解决当只有一台keepalived主机时,如果它宕掉了,则数据无法转发,更不可能实现负载均衡的问题,可以配置主备keepalived,即需要再配置一台主机的keeplived实现高可用。一台主机上keeplived宕掉了,则有备份keeplived接管负载均衡调度。
1.在server7制作keepalived软链接,方便管理和配置,并添加可执行权限
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
ln -s /ln -s /usr/local/keepalived/etc/keepalived/ /etc/
usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
2在server7中修改keepalived的配置文件(从节点状态设置程BACKUP优先级修改50)
3开启keepalived服务
systemctl start keepalived
4.在测试机上测试
1)当宕掉一台keepalived主机(server4),此时server7的状态为MASTER,server4的状态变成BACKUP
[root@server4 ~]# systemctl stop keepalived
2)当server4上的keepalived正常工作之后,由于优先级问题,server4又把主权拿过来,server7变成后备状态
[root@server4 ~]# systemctl start keepalived
也可以通过日志来查看keepalived主机的状态!!!