Keepalived案例分析
企业应用中,单台服务器承担应用存在单点故障的危险
单点故障一旦发生,企业服务将发生中断,造成极大的危害
单点故障(没有备份,挂掉就没了)
备份冗余(keepalived热备方案)keepalived主-备关系
以优先级区分主-备关系
以id表示热备组中的服务器定位
以VIP做为接收、响应请求的地址(只会存在于master服务器上)
Keepalived工具介绍
专为LVS和HA设计的一款健康检查工具
支持故障自动切换(Failover)
支持节点健康状态检查(Health Checking)
官方网站: http://www.keepalived.orgl
Keepalived实现原理剖析
Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能
VRRP(虚拟路由冗余协议】是针对路由器的一种备份解决方案
由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
若当前在线的路由器失效则其他路由器会根据设置的优先级自动接替虚拟P地址(继续提供服务)
Keepalived案例讲解
Keepalived可实现多机热备,每个热备组可有多台服务器
Keepalived安装与启动
在LVS群集环境中应用时也需用到ipvsadm管理工具YUM安装Keepalived
启用Keepalived服务
配置Keepalived master服务器
Keepalived配置目录位于/etc/keepalived/
keepalived.conf是主配置文件
global_defs {…}区段指定全局参数
vrrp_instance 实例名称{…}区段指定VRRP热备参数
注释文字以”!”符号开头
目录samples,提供了许多配置样例作为参考
Keepalived
1、Keepalived
支持故障自动切换(Failover)
支持节点健康状态检查(Health checking)
判断IVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到backup节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新切换回master
节点(优先级)
2、Keepalived实现原理音剖析
keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案。
由多台路由器组成一个热备份组,通过共用的虚拟IP地址对外提供服务
每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
安装ipvsadm keepalived
[root@lvs2 ~]# yum -y install ipvsadm keepalived
[root@lvs2 ~]# cd /etc/sysconfig/network-scripts/
[root@lvs2 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0
[root@lvs2 network-scripts]# vim ifcfg-ens33:0
[root@lvs2 network-scripts]# ifup ifcfg-ens33:0
[root@lvs2 network-scripts]# systemctl restart network
[root@lvs2 network-scripts]# vim /etc/sysctl.conf
[root@lvs2 network-scripts]# sysctl -p
[root@lvs2 network-scripts]# modprobe ip_vs
[root@lvs2 network-scripts]# cat /proc/net/ip_vs
[root@lvs2 network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs2 network-scripts]# systemctl start ipvsadm
[root@lvs2 network-scripts]# vim /opt/dr.sh
[root@lvs2 network-scripts]# cd /opt
[root@lvs2 opt]# chmod +x dr.sh
[root@lvs2 opt]# cd /etc/keepalived/
[root@lvs2 keepalived]# cp keepalived.conf keepalived.conf.bak
[root@lvs2 keepalived]# vim keepalived.conf
global_defs { #定义全局参数
router_id lvs2 #热备组内的设备名称不能一致
}
vrrp_instance vi_1 { #定义VRRP热备实例参数
state BACKUP #指定热备状态,主为master,备为backup
interface ens33 #指定承载vip地址的物理接口
virtual_router_id 51 #指定虚拟路由器的ID号,每个热备组保持一致
priority 100 #指定优先级,数值越大越优先
advert_int 1
authentication {
auth_type PASS
auth_pass 6666
}
virtual_ipaddress { #指定集群VIP地址
192.168.235.100
}
}
#指定虚拟服务器地址vip,端口,定义虚拟服务器和web服务器池参数
virtual_server 192.168.235.100 80 {
lb_algo rr #指定调度算法,轮询(rr)
lb_kind DR #指定集群工作模式,直接路由DR
persistence_timeout 6 #健康检查的间隔时间
protocol TCP #应用服务采用的是TCP协议
#指定第一个web节点的地址,端口
real_server 192.168.235.144 80 {
weight 1 #节点权重
TCP_CHECK {
connect_port 80 #添加检查的目标端口
connect_timeout 3 #添加连接超时
nb_get_retry 3 #添加重试次数
delay_before_retry 3 #添加重试间隔
}
}
#指定第二个web节点的地址,端口
real_server 192.168.235.156 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@lvs2 keepalived]# systemctl start keepalived
[root@lvs2 opt]# sh -x dr.sh
漂移
[root@lvs1 keepalived]# systemctl stop keepalived.service
[root@lvs2 keepalived]# ip a
小结
vrrp热备协议主要针对的对象是router路由器,同一个路由器下为同一个热备组,同一个热备组中的成员ID不可相同
以viP做为提供服务的IP地址,vIP只会漂移在优先级最高的设备中,多种类型的设备以优先级区分主-备-(备2)关系,主宕机则主优先级下降,备服务器将提升为主(VIP飘逸到备)