LVS+Keepalived高可用群集

目录

一:Keepalived双机热备基础知识

1:Keepalived概述及安装

1.1:Keepalived的热备方式

1.2:Keepalived的安装与服务控制

2:使用Keepalived实现双机热备

2.1:主服务器配置

2.2:备用服务器配置

3:测试双机热备功能

二:使用Keepalived实现双机热备

1:基础环境配置

2:配置主调度器

(1)全局配置、热备配置

(2)web服务器池配置

(3)重新启动Keepalived服务

3:配置从调度器

4:配置web节点服务器

(1)添加路由条目

(2)修改内核配置文件

5:测试LVS+Keepalived高可用群集


一: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的安装与服务控制

cpp 复制代码
#关闭防火墙
systemctl stop firewalld
setenforce 0	

#安装keepalived、ipvsadm软件包
yum -y install keepalived ipvsadm

#控制keepalived服务
systemctl enable keepalived

2:使用Keepalived实现双机热备

2.1:主服务器配置

cpp 复制代码
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服务

cpp 复制代码
systemctl start Keepalived

#通过IP命令查看状态
ip addr show dev ens33

2.2:备用服务器配置

在同一个 Keepalived 热备组内,所有服务器的 Keepalived 配置文件基本相同,包括虚拟路由器的 ID 号、认证信息、漂移地址、心跳频率等。不同之处主要在于路由器名称、热备状态、优先级。

  • 路由器名称(router_id):建议为每个参与热备的服务器指定不同的名称。
  • 热备状态(state):至少应有一台主服务器,将状态设为 MASTER;可以有多台备用的服务器,将状态设为 BACKUP。
  • 优先级(priority):数值越大则取得 VIP 控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺 VIP 控制权时发生冲突。
cpp 复制代码
修改:
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服务

cpp 复制代码
systemctl start Keepalived

#通过IP命令查看状态
ip addr show dev ens33

3:测试双机热备功能

准备测试文件

cpp 复制代码
#安装web网站
dnf -y install httpd		#安装网站
#测试网页
vim /var/www/html/index.html
	test204.com
	test205.com
#开启服务
systemctl start httpd		
systemctl enable httpd

访问测试文件

cpp 复制代码
#连通性测试
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网站):

cpp 复制代码
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

cpp 复制代码
#关闭防火墙
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配置文件

cpp 复制代码
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

cpp 复制代码
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服务

cpp 复制代码
#重启服务
systemctl restart keepalived
systemctl enable keepalived

3:配置从调度器

cpp 复制代码
(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)添加路由条目

cpp 复制代码
配置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)修改内核配置文件

cpp 复制代码
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进行访问:

cpp 复制代码
#查看IP
ip a 		
ifconfig
#查看策略
ipvsadm -ln

201(客户端)进行访问:

cpp 复制代码
curl 192.168.10.204
curl 192.168.10.205
curl 192.168.10.172
相关推荐
待什么青丝7 分钟前
【Ubuntu】摸鱼技巧之虚拟机环境复制
linux·运维·ubuntu
Demisse40 分钟前
[MongoDB] 认识MongoDB以及在Windows和Linux上安装MongoDB
linux·windows·mongodb
独行soc1 小时前
2025年渗透测试面试题总结-匿名[校招]高级安全工程师(代码审计安全评估)(题目+回答)
linux·安全·web安全·面试·职场和发展·渗透测试
LB21122 小时前
Maven(黑马)
linux·服务器·maven
拍客圈2 小时前
宝塔专属清理区域,宝塔清理MySQL日志(高效释放空间)
运维·服务器
alex18012 小时前
ubuntu磁盘挂载
linux·数据库·ubuntu
Stardep2 小时前
Linux下目录递归拷贝的单进程实现
linux·运维·服务器·实验
hawk2014bj2 小时前
KVM 安装 Ubuntu 22
linux·运维·ubuntu
nako_sayuri3 小时前
Linux进程间通信----简易进程池实现
linux·服务器·进程池
捏尼卜波卜3 小时前
TCP 四次挥手
服务器·网络·tcp/ip