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 小时前
TCP 三次握手
服务器·网络·tcp/ip
?!7141 小时前
Socket编程之TCP套件字
linux·网络·c++·网络协议·tcp/ip
小艺E2 小时前
24核32G,千兆共享:裸金属服务器的技术原理与优势
运维·服务器
编程小能手@2 小时前
【计算机网络】子网划分
服务器·网络·计算机网络
中云时代-防御可测试-小余3 小时前
怎么选择合适的高防IP
服务器·网络·网络协议·tcp/ip·阿里云·udp·ddos
小虾米vivian5 小时前
达梦数据库:同1台服务器如何启动不同版本的DMAP服务
运维·服务器
挺6的还7 小时前
15.进程间通信(一)
linux
TA远方7 小时前
【C#】一个简单的http服务器项目开发过程详解
服务器·http·c#·wpf·web·winform·console
一个不知名程序员www8 小时前
Linux基本指令/下
linux·服务器·centos
zhcong_8 小时前
LVS+Keepalived高可用群集
linux·运维·lvs