目录
一:Keepalived双机热备基础知识
1:Keepalived概述及安装
基于 VRRP(虚拟路由冗余协议) 的服务器高可用性解决方案,通过主备节点协同工作,确保服务在单点故障时自动切换,避免业务中断。
1.1:Keepalived的热备方式
Keepalived 基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议) 实现高可用。
提供 主备(Master-Backup) 模式,主服务器故障时,备用服务器自动接管虚拟IP(VIP)。
支持 健康检查,可检测后端服务(如Nginx、MySQL)状态,若服务异常则触发切换。
热备方式分类:
模式 | 特点 |
---|---|
主备模式 | 1 主 N 备,正常情况下仅主节点提供服务,备节点处于待机状态。 |
双主模式 | 两个节点同时提供服务,互为备份(需配合负载均衡或业务隔离)。 |
操作系统 | 配置 | IP | 服务 |
OpenEuler24 | 2C4G | 192.168.10.101 | keepalived/nginx |
OpenEuler24 | 2C4G | 192.168.10.102 | keepalived/nginx |
1.2:Keepalived的安装与服务控制
#关闭防火墙
systemctl stop firewalld
setenforce 0
#安装keepalived、ipvsadm软件包
yum -y install keepalived ipvsadm
#控制keepalived服务
systemctl enable keepalived
2:使用Keepalived实现双机热备
2.1:主服务器配置
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.conf
#修改配置文件
vim keepalived.conf
修改:
router-id LVS_01
#vrrp_strict #一旦启动严格模式,不允许进行单播
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51 #热备组编号,要一致
priority 100
advert_int 1 #心跳间隔
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.172 #配置VIP
}
}
#将下面配置内容全部删除,保存并退出
启动Keepalived服务
systemctl start Keepalived
#通过IP命令查看状态
ip addr show dev ens33
2.2:备用服务器配置
在同一个 Keepalived 热备组内,所有服务器的 Keepalived 配置文件基本相同,包括虚拟路由器的 ID 号、认证信息、漂移地址、心跳频率等。不同之处主要在于路由器名称、热备状态、优先级。
- 路由器名称(router_id):建议为每个参与热备的服务器指定不同的名称。
- 热备状态(state):至少应有一台主服务器,将状态设为 MASTER;可以有多台备用的服务器,将状态设为 BACKUP。
- 优先级(priority):数值越大则取得 VIP 控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺 VIP 控制权时发生冲突。
修改:
router-id LVS_02
#vrrp_strict #一旦启动严格模式,不允许进行单播
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51 #热备组编号,要一致
priority 90
advert_int 1 #心跳间隔
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.172 #配置VIP
}
}
#将下面配置内容全部删除,保存并退出
启动Keepalived服务
systemctl start Keepalived
#通过IP命令查看状态
ip addr show dev ens33
3:测试双机热备功能
准备测试文件
#安装web网站
dnf -y install httpd #安装网站
#测试网页
vim /var/www/html/index.html
test204.com
test205.com
#开启服务
systemctl start httpd
systemctl enable httpd
访问测试文件
#连通性测试
ping -t 192.168.10.172
#web访问测试
curl 192.168.10.201
curl 192.168.10.202
curl 192.168.10.172
#查看日志记录
less /var/log/messages
二:使用Keepalived实现双机热备
操作系统 | 配置 | 主机名 | IP | 服务 |
windows10 | 2C4G | win10 | 192.168.10.101 | 客户端 |
OpenEuler24 | 2C4G | lb01 | 192.168.10.102 | keepalived/ipvsadm |
OpenEuler24 | 2C4G | lb02 | 192.168.10.103 | keepalived/ipvsadm |
OpenEuler24 | 2C4G | web01 | 192.168.10.104 | nginx |
OpenEuler24 | 2C4G | web02 | 192.168.10.105 | nginx |
1:基础环境配置
204,205(web网站):
systemctl stop firewalld
setenforce 0 #关闭防火墙
dnf -y install httpd #安装网站
#测试网页
vim /var/www/html/index.html
test204.com
test205.com
#开启服务
systemctl start httpd
systemctl enable httpd
主,备服务器:192.168.10.202
192.168.10.203
#关闭防火墙
systemctl stop firewalld
setenforce 0
#安装keepalived、ipvsadm软件包
yum -y install keepalived ipvsadm
cd /etc/keepalived/
cp keepalived.conf.sample keepalived.conf
2:配置主调度器
(1)全局配置、热备配置
修改vim keepalived.conf配置文件
router-id LVS_01
#vrrp_strict #一旦启动严格模式,不允许进行单播
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51 #热备组编号,要一致
priority 100
advert_int 1 #心跳间隔
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.172 #配置VIP
}
(2)web服务器池配置
添加web服务器池配置(后端服务器)vim /etc/keepalived/keepalived.conf
virtual_server 192.168.10.172 80 {
delay_loop 6
lb_algo rr
lb_kind DR
#persistence_timeout 50
! persistence 60
protocol TCP
real_server 192.168.10.204 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.10.205 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
##将下面配置内容全部删除,保存并退出
(3)重新启动Keepalived服务
#重启服务
systemctl restart keepalived
systemctl enable keepalived
3:配置从调度器
(1)修改vim keepalived.conf配置文件
vim keepalived.conf
router-id LVS_02
#vrrp_strict #一旦启动严格模式,不允许进行单播
vrrp_instance VI_1 {
state BACKUP
nopreempt #不抢占
interface ens33
virtual_router_id 51 #热备组编号,要一致
priority 90
advert_int 1 #心跳间隔
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.172 #配置VIP
}
(2)web服务器池配置(后端服务器)
vim /etc/keepalived/keepalived.conf
virtual_server 192.168.10.172 80 {
delay_loop 6
lb_algo rr
lb_kind DR
#persistence_timeout 50
! persistence 60
protocol TCP
real_server 192.168.10.204 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.10.205 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
(2)重启服务
systemctl restart keepalived
systemctl enable keepalived
4:配置web节点服务器
(1)添加路由条目
配置web节点服务器:
ip addr add 192.168.10.172/32 dev lo label lo:0
重启网卡:nmcli c reload
nmcli c up ens33
ip a
#添加路由条目(临时生效)
ip route add local 192.168.10.172/32 dev lo #路由条目
route add -host 192.168.10.172 dev lo:0
#添加路由条目(永久生效)
vim /etc/rc.local
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lo
添加权限:
chmod +x /etc/rc.local
(2)修改内核配置文件
vim /etc/sysctl.conf
最后添加:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
生效:sysctl -p
5:测试LVS+Keepalived高可用群集
202、203进行访问:
#查看IP
ip a
ifconfig
#查看策略
ipvsadm -ln
201(客户端)进行访问:
curl 192.168.10.204
curl 192.168.10.205
curl 192.168.10.172