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 漂移效果
相关推荐
willhuo11 分钟前
基于xray的匿名、授权、IP白名单代理访问研究
服务器·网络·tcp/ip
qiuqyue16 分钟前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
linux·运维·网络
切糕师学AI27 分钟前
Linux 操作系统简介
linux
南烟斋..1 小时前
GDB调试核心指南
linux·服务器
爱跑马的程序员1 小时前
Linux 如何查看文件夹的大小(du、df、ls、find)
linux·运维·ubuntu
像风一样自由3 小时前
android native 中的函数动态注册方式总结
android·java·服务器·安卓逆向分析·native函数动态注册·.so文件分析
oMcLin3 小时前
如何在 Ubuntu 22.04 LTS 上部署并优化 Magento 电商平台,提升高并发请求的响应速度与稳定性?
linux·运维·ubuntu
Qinti_mm4 小时前
Linux io_uring:高性能异步I/O革命
linux·i/o·io_uring
优雅的38度4 小时前
linux环境下,使用docker安装apache kafka (docker-compose)
linux·架构
小李独爱秋4 小时前
计算机网络经典问题透视:TLS协议工作过程全景解析
运维·服务器·开发语言·网络协议·计算机网络·php