一、Keepalived案例分析
在企业应用中,单台服务器承担应用存在单点故障的危险,在企业应用集群中,存在了至少两处单点故障危险,
单点故障一旦发生,企业服务将发生中断,造成极大的危害
1、Keepalived工具介绍
支持故障自动切换(Failover)
支持节点健康状态检查(Health Checking)
官方网站:http://www.keepalived.org/
2、Keepalived实现原理剖析
Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能
VRRP ,虚拟路由冗余协议,是针对路由器的一种备份解决方案
1、由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
2、每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态
3、若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
3、Keepalived案例讲解
1、漂移地址:192.168.100.10
主、备服务器:192.168.100.40、192.168.100.41
提供的应用服务:Web
2、配置文件keepalived.conf
全局设置:global_defs { … }
热备设置:vrrp_instance 实例名称 { … }
样例文件位于:/etc/keepalived/samples/…
3、主服务器配置
state:设置本节点状态,MASTER、BACKUP
priority:设置竞选优先级,数值越大优先级越高
virtual_ipaddress { … }:设置漂移IP地址
4、备用服务器配置
router_id设为自有名称
state设为BACKUP
priority值低于主服务器
5、启用keepalived服务
主、备机中均启用keepalived服务
其中优先级最高的设备将获得VIP的控制权
VIP地址会由keepalived自动设置
5、案列keepalived+LVS案列
IP地址规划:
漂移地址(VIP):192.168.100.10
主调度器:192.168.100.40
辅调度器:192.168.100.41
WEB服务器1:192.168.100.42
WEB服务器2:192.168.100.43
存储服务器:192.168.100.44
#####配置主调度器 192.168.32.40 ####### 关闭防火墙
【1】调整/proc响应参数
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p ###生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
【2】清除负载分配策略
[root@localhost /]# ipvsadm -C
【3】调整keepalived参数
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
router_id HA_TEST_R1
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.100.10
}
}
virtual_server 192.168.100.10 80 {
delay_loop 15
lb_algo rr
lb_kind DR
persistence 60
protocol TCP
real_server 192.168.100.42 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
real_server 192.168.100.43 80 {
weight 1
TCP_CHECK {
connect_port 80