LVS+Keepalived 高可用群集

目录

[一、keepalived 双机热备基础知识](#一、keepalived 双机热备基础知识)

[1. keepalived 概述及安装](#1. keepalived 概述及安装)

[2. keepalived 的热备方式](#2. keepalived 的热备方式)

[3. Keepalived 的安装与服务控制](#3. Keepalived 的安装与服务控制)

[(1)安装 Keepalived](#(1)安装 Keepalived)

[(2)控制Keepalived 服务](#(2)控制Keepalived 服务)

[二、LVS+keepalived 案例 双机热备](#二、LVS+keepalived 案例 双机热备)

环境

部署

验证


一、keepalived 双机热备基础知识

1. keepalived 概述及安装

核心定位

Keepalived 最初是为 LVS(Linux Virtual Server)设计的高可用辅助工具,提供 故障切换(Failover)健康检查(Health Checking) 功能:

  • 故障切换:当主节点(Master)故障时,自动将流量迁移至备用节点(Backup),业务恢复后切回主节点16。

  • 健康检查 :监控 LVS 调度器及后端节点服务器的可用性,自动隔离故障节点并重新纳入恢复节点37。
    适用场景

  • 负载均衡器高可用(如 LVS 主备调度器)。

  • 非 LVS 环境(如 Web、数据库、FTP 服务的双机热备)

2. keepalived 的热备方式

基于 VRRP 协议实现

  • VRRP(虚拟路由冗余协议)

    • 多台服务器组成热备组,共享一个虚拟 IP(VIP)对外提供服务

    • 主备角色

      • MASTER:活跃节点,持有 VIP 并处理流量

      • BACKUP:待命节点,监听 MASTER 状态,故障时接管 VIP

  • VIP 漂移机制

    • VIP 根据优先级(priority)在热备组内动态转移,无需手动配置虚拟接口(如 eth0:0
  • 核心优势

    • 透明切换:客户端无感知故障转移(仅 1-2 个数据包丢失)

    • 跨服务兼容:适用于任何基于 IP 的服务(Web、SSH、DNS 等)

3. Keepalived 的安装与服务控制

(1)安装 Keepalived
sql 复制代码
yum install -y keepalived ipvsadm    # 安装 Keepalived 及 LVS 管理工具
(2)控制Keepalived 服务
sql 复制代码
systemctl start keepalived    # 启动服务  
systemctl stop keepalived     # 停止服务
systemctl enable keepalived   # 启用开机自启

systemctl status keepalived   # 查看运行状态  
ip addr show dev eth0         # 检查 VIP 是否绑定(MASTER 节点可见

二、LVS+keepalived 案例 双机热备

环境

105:客户端 101,102:keepa+LVS 103,104:网站服务器

部署
sql 复制代码
-安装
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
dnf -y install keepalived ipvsadm
-配置文件是模板需拷贝
cd /etc/keepalived
cp keepalived.conf.sample  keepalived.conf
--101
可选参数:nopreempt(不抢占模式)
vim /etc/keepalived/keepalived.conf
	 router_id LVS_01		#id可以一样,该id仅本地有效
	 #vrrp_strict			#注销掉
	vrrp_instance  VI_1 {
		state MASTER
		virtual_router_id 51   //热备组号,需要在同一个组
		interface ens33
		priority 100   //优先级
		advert_int 1
		authentication {    //热备组密码认证
		auth_type PASS    //特定认证类型
		auth_pass 1111   //密码的认证机制
		}
	}
	virtual_ipaddress {
       		 192.168.10.172	  #Vip
	}
	
     -------为LVS真实服务器设置
	virtual_server 192.168.10.172 80 {    //与vip保持一致
    		delay_loop 6    //检查状态的间隔时间
		lb_algo rr    //负载均衡算法
		lb_kind DR      //负载均衡类型
		# persistence_timeout 50   //持久化超时时间
		protocol TCP   //传输控制协议

        
        real_server 192.168.10.103 80 {
		weight 1  //权重
		TCP_CHECK {     //检查机制,采用 TCP 协议进行健康检查
            	 connect_port 80   //尝试连接的端口
         	 connect_timeout 3   //连接超时时间
          	 retry 3       //重试次数
           	 delay_before_retry 3   //重试前的延迟时间
		}
	    }

	 real_server 192.168.10.104 80 {
		weight 1
		TCP_CHECK {
            	 connect_port 80 
         	 connect_timeout 3   
          	 retry 3      
           	 delay_before_retry 3  

##:set paste   粘贴取消自动换行
--102
vim /etc/keepalived/keepalived.conf
	 router_id LVS_02		
	 #vrrp_strict			#注销掉
	vrrp_instance  VI_1 {
		state BACKUP
		nopreempt  	//不抢占,注意只有备可以设置
		virtual_router_id 51   //热备组号,需要在同一个组
		interface ens33
		priority 90  
		advert_int 1
		authentication {   
		auth_type PASS
		auth_pass 1111
		}
	}
	virtual_ipaddress {
       		 192.168.10.172	
	}

	virtual_server 192.168.10.172 80 {
    		delay_loop 6
		lb_algo rr
		lb_kind DR
		#persistence_timeout 50  //测试先去掉
		protocol TCP

        real_server 192.168.10.103 80 {
		weight 1     
       		TCP_CHECK {
            	 connect_port 80 
         	 connect_timeout 3
          	 retry 3
           	 delay_before_retry 3
       	 	}
	}
        real_server 192.168.10.104 80 {
		weight 1
       		TCP_CHECK {
            	 connect_port 80 
         	 connect_timeout 3
          	 retry 3
           	 delay_before_retry 3
       	 	}
	}
-启动服务
systemctl restart keepalived
-查看VIP
ip add
sql 复制代码
#真实服务器网站部署
systemctl stop firewalld
systemctl distable firewalld
setenforce 0
dnf -y install httpd
--103
	echo "test333333">/var/www/html/index.html
	systemctl start httpd
	systemctl enable httpd

--104
	echo "test444444">/var/www/html/index.html
	systemctl start httpd
	systemctl enable httpd


#web服务器设置DR模式

-VIP设置
ip addr add 192.168.10.172/32 dev lo label lo:0
-重启
nmcli c reload
nmcli c up lo 
-添加路由条目
ip route add local 192.168.10.172/32 dev lo   //本地回环地址路由
或
route add -host 192.168.10.172 dev lo   //针对特定主机的路由设置

-改内核(路由没成功)
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
-重启服务
systemctl restart httpd
systemctl enable httpd
验证
sql 复制代码
#模拟故障
关闭一个web,测试网站访问是否正常
在101,102 用"ipvsadm -ln" 可以查看统计信息,发现少了关闭的web信息
重新打开后会恢复,体现出来keepalived的功能。

关闭一个 keepalived 服务器,测试 VIP 漂移效果
相关推荐
胡耀超1 小时前
Umi-OCR 的 Docker安装(win制作镜像,Linux(Ubuntu Server 22.04)离线部署)
linux·深度学习·ubuntu·docker·容器·nlp·ocr
诗人不说梦^1 小时前
[BUUCTF 2018]Online Tool
linux·运维·服务器
wa的一声哭了1 小时前
python基础知识pip配置pip.conf文件
java·服务器·开发语言·python·pip·risc-v·os
别枫了1 小时前
TCP的连接
服务器·网络·tcp/ip
晚风_END2 小时前
Linux|服务器|二进制部署nacos(不是集群,单实例)(2025了,不允许还有人不会部署nacos)
linux·运维·服务器·数据库·编辑器·个人开发
阿沁QWQ3 小时前
应用层协议和JSON的使用
运维·服务器·网络
I'mSQL3 小时前
C#与FX5U进行Socket通信
运维·服务器·自动化·wpf
Gene_20224 小时前
[TOOL] ubuntu 使用 ffmpeg 操作 gif、mp4
linux·ubuntu·ffmpeg
哈哈浩丶4 小时前
Linux驱动开发2:字符设备驱动
linux·运维·驱动开发
啊森要自信4 小时前
【Linux 学习指南】网络基础概念(一):从协议到分层,看透计算机通信的底层逻辑
linux·运维·服务器·网络·网络协议·tcp/ip·ip