一.Keepalived高可用集群
1.Keepalived简介:
Keepalived高可用集群是一种用于提高系统可用性和防止单点故障的技术方案,它利用VRRP(虚拟路由冗余协)实现高可用功能.
(1)VRRP协议:解决静态路由单点故障问题的协议,它能够将多台提供相同功能的路由器组成一个路由器组,其中有一个master(主服务器)和多个backup(备用服务器)。Master上面有一个对外提供服务的VIP,当master发生故障时,backup会根据VRRP的优先级来选举一个新的master,继续提供服务。
(2)心跳检测与切换机制:Keepalived定期向备用服务器发送心跳包,来监控集群中服务器的健康状况。当主服务器宕机后,Keepalived会根据VRRP的优先级来选举一个新的主服务器。
2.Keepalived的工作原理
LVS不能进行健康检查,真实业务服务器集群里面设计一个虚拟服务器,使用虚拟服务器暴露给用户,当某一台机器发生故障,自动切换其它服务器提供服务.
3.Keepalived可实现的功能
(1)基于vrrp解决单点故障(高可用)
(2)LVS集群真实服务器状态监测
(3)管理VIP(虚拟ip)
4.Keepalived高可用的配置操作:直接以真是服务器为例
(1)安装keepalived软件
(2)配置文件:/etc/keepalived/keepalived.conf,应用服务器集群web1,web2
(3)配置Keepalived关联服务
(4)web1,web2进行相同的配置
(1)安装keepalived软件
---
- name: install keepalive on webservers
hosts: webservers
tasks:
- name: install keepalived #安装软件
yum:
name: keepalived
state: present
(2)应用服务器集群web1,web2配置:/etc/keepalived/keepalived.conf
web1和web2进行主从配置
3 global_defs {
...
11 smtp_connect_timeout 30
12 router_id web1 #集群节点唯一标识
13 vrrp_iptables #放行iptables规则
14 vrrp_skip_check_adv_addr
15 vrrp_strict #这里会默认丢弃入站流量,需配置iptables
16 vrrp_garp_interval 0
17 vrrp_gna_interval 0
18 }
20 vrrp_instance VI_1 { #实例设备
21 state MASTER #主备角色状态,MASTER和BACKIP
22 interface eth0 #实际网卡名
23 virtual_router_id 51 # 实例的值
24 priority 100 #优先级值默认100
25 advert_int 1 #心跳平率100
26 authentication { #主备服务器的认证方式
27 auth_type PASS
28 auth_pass 1111
29 }
30 virtual_ipaddress { #应用服务器集群的虚拟ip
192.168.88.80/24:默认为前面绑定的 eth0
31 192.168.88.80/24 dev eth0 label eth0:1:dev,label指定设备和编号
32 }
33 }
(3)配置Keepalived关联服务:
比如:解决当nginx服务错误,keepalived不会自动切换
-- 解决方案:内嵌脚本,要求是,退出码为0表示访问成功;退出码为1表示失败
[root@web1 ~]# vim /etc/keepalived/check_http.sh
#!/bin/bash
ss -antpul | grep -q nginx && exit 0 || exit 1
chmod +x check_http.sh
-- 配置Keepalived关联服务
1 ! Configuration File for keepalived
2
...
18 }
19
20 vrrp_script chk_http_port { #定义监控监本,手工编辑本段内容
21 script "/etc/keepalived/check_http.sh" #定义检测脚本位置
22 interval 2 #定义脚本执行时间
23 }
24
25 vrrp_instance VI_1 {
26 state MASTER
27 interface eth0
28 virtual_router_id 51
29 priority 100
30 advert_int 1
31 authentication {
32 auth_type PASS
33 auth_pass 1111
34 }
35 virtual_ipaddress {
36 192.168.88.80/24 dev eth0 label eth0:1
37 }
38 track_script { #引用脚本,这里的脚本执行结果影响vrrp状态
39 chk_http_port
40 }
41 }
Keepalived会监控这个脚本的返回状态,并根据配置中的规则来调整VRRP实例的优先级或触发状态切换(通常是0表示成功,1表示失败)
--web2进行相同的配置
二.LVS-DR+keepalived高可用实现负载均衡web集群(通过管理虚拟ip)
1.实验环境准备
client1:eth0->192.168.88.10
lvs1:eth0->192.168.88.5
lvs2:eth0->192.168.88.6
web1:eth0->192.168.88.100
web2:eth0->192.168.88.200
2.LVS-DR模式+keepalived高可用配置步骤(keepalived通过服务方式管理LVS-DR)
(1)lvs1和lvs2节点安装ipvsadm和Keepalived软件
(2)配置web1,web2的共享ip(使用该共享ip作为虚拟ip)
lvs1,lvs2的通过keepalived配置
(3)web1,web2调整内核参数设置是否接收ARP请求
(4)lvs1,lvs2进行Keepalived高可用配置,以及服务搭建=ipvsadm
(keepalived通过服务方式管理LVS-DR)
lvs1.5
client ---> (虚拟ip.15) ---> web1,web2(虚拟ip.15)
lvs2.6
[root@lvs1 ~]# vim /etc/keepalived/keepalived.conf
[root@lvs1 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lvs1 #集群节点唯一标识
vrrp_iptables #放行防火墙规则
vrrp_strict #严格遵守VRRP规则
}
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 { #定义VIP
192.168.88.15/24 dev eth0 label eth0:0 #这里是之前的共享ip
}
}
//配置文件的这部分=ipvsadm命令的配置
virtual_server 192.168.88.15 80 { #定义LVS虚拟服务器
delay_loop 6 #健康检查延时6s开始
lb_algo wrr #调度算法
lb_kind DR #LVS工作模式
persistence_timeout 50 #50s内相同客户端发起请求由同一服务器处理
protocol TCP #虚拟服务器协议
real_server 192.168.88.100 80 { #定义真实服务器
weight 1 #权重
TCP_CHECK { #健康检查方式
connect_timeout 3 #连接超时时间为3s
nb_get_retry 3 #连续3次访问失败则认为真实服务器故障
delay_before_retry 3 #健康检查包时间间隔
}
}
real_server 192.168.88.200 80 {
weight 2
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
一.Keepalived高可用集群
1.Keepalived简介:
Keepalived高可用集群是一种用于提高系统可用性和防止单点故障的技术方案,它利用VRRP(虚拟路由冗余协)实现高可用功能.
(1)VRRP协议:解决静态路由单点故障问题的协议,它能够将多台提供相同功能的路由器组成一个路由器组,其中有一个master(主服务器)和多个backup(备用服务器)。Master上面有一个对外提供服务的VIP,当master发生故障时,backup会根据VRRP的优先级来选举一个新的master,继续提供服务。
(2)心跳检测与切换机制:Keepalived定期向备用服务器发送心跳包,来监控集群中服务器的健康状况。当主服务器宕机后,Keepalived会根据VRRP的优先级来选举一个新的主服务器。
2.Keepalived的工作原理
LVS不能进行健康检查,真实业务服务器集群里面设计一个虚拟服务器,使用虚拟服务器暴露给用户,当某一台机器发生故障,自动切换其它服务器提供服务.
3.Keepalived可实现的功能
(1)基于vrrp解决单点故障(高可用)
(2)LVS集群真实服务器状态监测
(3)管理VIP(虚拟ip)
4.Keepalived高可用的配置操作:直接以真是服务器为例
(1)安装keepalived软件
(2)配置文件:/etc/keepalived/keepalived.conf,应用服务器集群web1,web2
(3)配置Keepalived关联服务
(4)web1,web2进行相同的配置
(1)安装keepalived软件
- name: install keepalive on webservers
hosts: webservers
tasks:
- name: install keepalived #安装软件
yum:
name: keepalived
state: present
(2)应用服务器集群web1,web2配置:/etc/keepalived/keepalived.conf
web1和web2进行主从配置
3 global_defs {
...
11 smtp_connect_timeout 30
12 router_id web1 #集群节点唯一标识
13 vrrp_iptables #放行iptables规则
14 vrrp_skip_check_adv_addr
15 vrrp_strict #这里会默认丢弃入站流量,需配置iptables
16 vrrp_garp_interval 0
17 vrrp_gna_interval 0
18 }
20 vrrp_instance VI_1 { #实例设备
21 state MASTER #主备角色状态,MASTER和BACKIP
22 interface eth0 #实际网卡名
23 virtual_router_id 51 # 实例的值
24 priority 100 #优先级值默认100
25 advert_int 1 #心跳平率100
26 authentication { #主备服务器的认证方式
27 auth_type PASS
28 auth_pass 1111
29 }
30 virtual_ipaddress { #应用服务器集群的虚拟ip
192.168.88.80/24:默认为前面绑定的 eth0
31 192.168.88.80/24 dev eth0 label eth0:1:dev,label指定设备和编号
32 }
33 }
(3)配置Keepalived关联服务:
比如:解决当nginx服务错误,keepalived不会自动切换
-- 解决方案:内嵌脚本,要求是,退出码为0表示访问成功;退出码为1表示失败
[root@web1 ~]# vim /etc/keepalived/check_http.sh
#!/bin/bash
ss -antpul | grep -q nginx && exit 0 || exit 1
chmod +x check_http.sh
-- 配置Keepalived关联服务
1 ! Configuration File for keepalived
2
...
18 }
19
20 vrrp_script chk_http_port { #定义监控监本,手工编辑本段内容
21 script "/etc/keepalived/check_http.sh" #定义检测脚本位置
22 interval 2 #定义脚本执行时间
23 }
24
25 vrrp_instance VI_1 {
26 state MASTER
27 interface eth0
28 virtual_router_id 51
29 priority 100
30 advert_int 1
31 authentication {
32 auth_type PASS
33 auth_pass 1111
34 }
35 virtual_ipaddress {
36 192.168.88.80/24 dev eth0 label eth0:1
37 }
38 track_script { #引用脚本,这里的脚本执行结果影响vrrp状态
39 chk_http_port
40 }
41 }
Keepalived会监控这个脚本的返回状态,并根据配置中的规则来调整VRRP实例的优先级或触发状态切换(通常是0表示成功,1表示失败)
--web2进行相同的配置
二.LVS-DR+keepalived高可用实现负载均衡web集群(通过管理虚拟ip)
1.实验环境准备
client1:eth0->192.168.88.10
lvs1:eth0->192.168.88.5
lvs2:eth0->192.168.88.6
web1:eth0->192.168.88.100
web2:eth0->192.168.88.200
2.LVS-DR模式+keepalived高可用配置步骤(keepalived通过服务方式管理LVS-DR)
(1)lvs1和lvs2节点安装ipvsadm和Keepalived软件
(2)配置web1,web2的共享ip(使用该共享ip作为虚拟ip)
lvs1,lvs2的通过keepalived配置
(3)web1,web2调整内核参数设置是否接收ARP请求
(4)lvs1,lvs2进行Keepalived高可用配置,以及服务搭建=ipvsadm
(keepalived通过服务方式管理LVS-DR)
lvs1.5
client ---> (虚拟ip.15) ---> web1,web2(虚拟ip.15)
lvs2.6
[root@lvs1 ~]# vim /etc/keepalived/keepalived.conf
[root@lvs1 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id lvs1 #集群节点唯一标识
vrrp_iptables #放行防火墙规则
vrrp_strict #严格遵守VRRP规则
}
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 { #定义VIP
192.168.88.15/24 dev eth0 label eth0:0 #这里是之前的共享ip
}
}
//配置文件的这部分=ipvsadm命令的配置
virtual_server 192.168.88.15 80 { #定义LVS虚拟服务器
delay_loop 6 #健康检查延时6s开始
lb_algo wrr #调度算法
lb_kind DR #LVS工作模式
persistence_timeout 50 #50s内相同客户端发起请求由同一服务器处理
protocol TCP #虚拟服务器协议
real_server 192.168.88.100 80 { #定义真实服务器
weight 1 #权重
TCP_CHECK { #健康检查方式
connect_timeout 3 #连接超时时间为3s
nb_get_retry 3 #连续3次访问失败则认为真实服务器故障
delay_before_retry 3 #健康检查包时间间隔
}
}
real_server 192.168.88.200 80 {
weight 2
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}