1,Keepalived简介
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
2、KeepAlived的工作原理
keepalived是以VRRP协议为基础实现的
VRRP(Virtual Router Redundancy Protocol),即虚拟路由冗余协议。VRRP是一种 主备模式 的协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个虚拟路由器组,这个组里面有 一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就会根据VRRP的优先级来选举一个backup当master。通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信,可保证路由器的高可用。
3、Keepalived高可用故障切换转移原理
在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活看,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。
2,配置实验环境
1,接着上篇的实验配置server1
keepalived自带健康检查,所以不需要ldirectord来健康检查
官网下载tar包
tar zxf keepalived-2.0.6.tar.gz #解压
cd keepalived-2.0.6
yum install gcc openssl-devel -y #解决依赖性
./configure --prefix=/usr/local/keepalived --with-init=systemd #源码编译
make && make install #安装
cd /usr/local/keepalived/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
ln -s /usr/local/keepalived/etc/keepalived /etc/
vim /etc/keepalived/keepalived.conf 修改配置文件
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 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.88.100 ##VIP
}
}
virtual_server 172.25.88.100 80 {
delay_loop 3 ##尝试几次重连发邮件
lb_algo rr
lb_kind DR ##DR模式
#persistence_timeout 50
protocol TCP
real_server 172.25.88.2 80 {
TCP_CHECK {
weight 1
connect_timeout 3
connect_port 80
}
}
real_server 172.25.88.3 80 {
TCP_CHECK {
weight 1
connect_timeout 3
connect_port 80
}
}
}
systemctl start keepalived #开启服务
systemctl status keepalived #查看状态
systemctl start ipvsadm.service #开启服务,正确
systemctl status ipvsadm.service #再次查看服务的状态
ipvsadm -ln #查看
2,重新配置一台server4
tar zxf keepalived-2.0.6.tar.gz #解压
cd keepalived-2.0.6
yum install gcc openssl-devel -y #解决依赖性
./configure --prefix=/usr/local/keepalived --with-init=systemd #源码编译
make && make install #安装
cd /usr/local/keepalived/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
ln -s /usr/local/keepalived/etc/keepalived /etc/
vim /etc/keepalived/keepalived.conf 修改配置文件
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 BACKUP ##备节点
interface eth0
virtual_router_id 51
priority 50 ##优先级:备用的必须小于主调度器优先级100
advert_int 1 ##检查间隔
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.88.100 ##VIP
}
}
virtual_server 172.25.88.100 80 {
delay_loop 3
lb_algo rr ##轮询
lb_kind DR ##DR模式
#persistence_timeout 50 ##保持连接的时间
protocol TCP
real_server 172.25.88.2 80 {
TCP_CHECK {
weight 1
connect_timeout 3
connect_port 80
}
}
real_server 172.25.88.3 80 {
TCP_CHECK {
weight 1
connect_timeout 3
connect_port 80
}
}
}
systemctl start keepalived
systemctl status keepalived
yum install ipvsadm.x86_64 -y
systemctl start ipvsadm.service #开启服务,正确
systemctl status ipvsadm.service #再次查看服务的状态
3,server2,server3配置
server2和server3已经下载httpd服务并配置
arptables 服务已经配置
arptables -nl #查看访问规则
4,真机测试
重启server1的时候查看server4上的IP
server4自动添加IP172。25.88.100
curl 172.25.88.100
server2和server3轮询