1. Keepalived高可用软件
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,keepalived除了能够管理LVS软件外,还可以作为其他服务的高可用解决方案软件。
keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由的单点故障问题的,它能保证当个别节点宕机时,整个网络可以不间断地运行。所以,keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可以实现系统网络服务的高可用功能。
2. Keepalived的部署(解决DS的单点故障)
<1> 所需环境如下:
主DS:server1 DIP: 172.25.33.1 VIP:172.25.33.100
备DS:server4 DIP: 172.25.33.4 VIP:172.25.33.100
RS:server2(172.25.33.2)和server3(172.25.33.3)
<2> server1和servr4同样所作操作如下:
[root@server1 ~]tar zxf keepalived-2.0.17.tar.gz #解压keepalived软件
[root@server1 ~]cd keepalived-2.0.17/
[root@server1 keepalived-2.0.17]yum install -y gcc openssl-devel
[root@server1 keepalived-2.0.17]./configure --prefix=/usr/local/keepalived --with-init=systemd #编译
[root@server1 keepalived-2.0.17]make && make install #安装软件
[root@server1 keepalived-2.0.17]cd /usr/local/keepalived/
[root@server1 keepalived]ln -s /usr/local/keepalived/etc/keepalived/ /etc #创建软连接
<3> server1所作操作如下:
ldirectord和keepalived存在冲突,关闭ldirectord,编辑keepalived配置文件
[root@server1 keepalived]/etc/init.d/ldirectord stop
[root@server1 keepalived]chkconfig ldirectord off
[root@server1 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
}
vrrp_instance VI_1 {
state MASTER ##主节点
interface eth0
virtual_router_id 33
priority 100 ##权重
advert_int 1 ##检查间隔时间为1s
authentication {
auth_type PASS ##认证方式
auth_pass 1111 ##认证密码
}
virtual_ipaddress {
172.25.33.100 ##虚拟ip
}
}
virtual_server 172.25.33.100 80 {
delay_loop 3 ##连接失败3次以后发送邮件
lb_algo rr ##lvs的调度算法为rr
lb_kind DR ##lvs的调度方法为DR轮询
# persistence_timeout 50
protocol TCP ##端口
real_server 172.25.33.2 80 {
TCP_CHECK {
weight 1
connect_port 80
connect_timeout 3
}
}
real_server 172.25.33.3 80 {
TCP_CHECK {
weight 1
connect_port 80
connect_timeout 3
}
}
}
[root@server1 keepalived]# systemctl start keepalived
<4> server4所作操作如下:
vim /etc/keepalived/keepalived.conf
18 state BACKUP
21 priority 50
systemctl start keepalived.service
<5> 真机测试如下:
当主DS停掉以后,转到备DS,用户无感知
RS停掉一台,可以踢除,访问转移到另外一台RS上
备注:
Keepalived起初是为LVS设计的,由于Keepalived可以实现对集群节点的状态检测,而IPVS可以实现负载均衡功能
因此,Keepalived借助于第三方模块IPVS就可以很方便的搭建一套负载均衡系统(实现调度器的高可用以及web服务器的故障转移)
在这里有个误区就是由于Keepalived可以和IPVS一起工作,所以普遍就认为Keepalived是一个负载均衡软件,这种理解是错误的
我们之前都是一个调度器来调度多台web后端服务器
但是调度器也有不能工作的时候,万一坏了所有的web服务器都不能访问,这就要求调度器也要备份
因此就引出了高可用的集群KeepAlived
也就是有多个调度器(有主有备),利用keepalived保证web服务通过正常的调度器工作
所有调度器同时宕机的可能性是很小的