LVS+Keepalived高可用群集

发布于:2025-05-31 ⋅ 阅读:(19) ⋅ 点赞:(0)

目录

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

#关闭防火墙
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