LVS-DR高可用-Keepalived

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

目录

Keepalved双机热备

核心概念

关键组件

工作流程

实例环境

配置keepalived

Web服务器配置


Keepalved双机热备

Keepalived双机热备是一种基于VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)实现的高可用性解决方案,广泛应用于Linux服务器集群中,确保关键服务的持续运行

核心概念

  • VRRP协议
    通过虚拟路由器(Virtual Router)实现冗余,同一组内的物理服务器共享一个虚拟IP(VIP)。主服务器(MASTER)负责处理流量,备份服务器(BACKUP)实时监控主服务器状态,若主服务器故障,备份服务器自动接管VIP,确保服务不中断。

  • 角色分工

    • MASTER:当前提供服务的服务器,拥有最高优先级。
    • BACKUP:备用服务器,监控MASTER状态,随时准备接管

关键组件

  • 虚拟IP(VIP)
    客户端通过VIP访问服务,实际请求由MASTER处理。MASTER故障时,VIP自动漂移至BACKUP,实现无缝切换。
  • 优先级(Priority)
    MASTER的优先级高于BACKUP(如100 vs 90),确保故障时优先级最高的BACKUP接管。
  • 健康检查(Health Check)
    Keepalived定期检测服务(如Nginx、MySQL)是否存活。若服务异常,自动降低服务器优先级,触发VIP切换。

工作流程

  1. 启动阶段
    • 所有服务器启动Keepalived服务,MASTER绑定VIP并开始处理流量。
    • BACKUP进入监听状态,不处理流量。
  2. 正常运行
    • MASTER定期发送VRRP广播包,BACKUP接收并确认MASTER存活。
  3. 故障切换
    • 若MASTER宕机或服务异常,BACKUP检测到心跳超时,自动提升为MASTER并绑定VIP。
    • 客户端无感知,服务持续可用。
  4. 故障恢复
    • 原MASTER恢复后,若优先级仍最高,可重新抢占VIP(需配置抢占模式)

实例环境

两台keepalived、两台web服务器、一台客户机

配置keepalived

01、02关闭防火墙

[root@localhost ~]# systemctl stop firewalld        #关闭防火墙
[root@localhost ~]# setenforce 0                #关闭系统内核

01、02下载 keepalived

[root@localhost ~]# dnf -y install keepalived        #下载keepalved

 01、02修改配置文件

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf

01配置文件

[root@localhost ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }7
notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_01             #id
   vrrp_skip_check_adv_addr
   #vrrp_strict                	#严格模式
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER                #先前定义的主
    interface ens33             #ens33
    virtual_router_id 51        #热备组 
    priority 100                #优先级
    advert_int 1
    authentication {	    	#认证类型
        auth_type PASS		    #类型
        auth_pass 1111		    #密码
    }
    virtual_ipaddress {
        192.168.10.100      #VIP漂移地址
    }
}

virtual_server 192.168.10.100 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 {		            #TCP健康检查
            connect_port 80        	#检查端口
            connect_timeout 3	    #连接超时时间
            retry 3		            #重试次数
            delay_before_retry 3	#重试间隔
        }
    }
}

02配置文件

[root@localhost ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_02            #id
   vrrp_skip_check_adv_addr
   #vrrp_strict                #注释严格模式
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP                #先前定义的主
    interface ens33             #网卡信息ens33
    virtual_router_id 51        #热备组
    priority 90                 #优先级
    advert_int 1
    authentication {            #认证类型
        auth_type PASS          #类型
        auth_pass 1111          #密码
    }
    virtual_ipaddress {
        192.168.10.100          #VIP漂移地址
    }
}

virtual_server 192.168.10.100 80 {         #虚拟服务器(虚拟VIP)
    delay_loop 6
    lb_algo rr                             #负载均衡调度算法
    lb_kind NAT                            #工作模式
    #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{                         #TCP健康检查
            connect_port 80                #检查端口
            connect_timeout 3              #连接超时时间
            retry 3                        #重试次数
            delay_before_retry 3           #重试间隔
        }
    }
}

启动Keepalived

[root@localhost ~]# systemctl restart keepalived

Web服务器配置

 03、04关闭防火墙

[root@localhost ~]# systemctl stop firewalld			#关闭防火墙
[root@localhost ~]# setenforce 0				#关闭内核

下载httpd

[root@localhost ~]# dnf -y install httpd

配置网站内容

[root@localhost ~]# echo "33333333">/var/www/html/index.html	#03网站内容
[root@localhost ~]# echo "444444444">/var/www/html/index.html	#04网站内容

 启动httpd

[root@localhost ~]# systemctl satart httpd

 配置动态路由

[root@localhost ~]# ip addr add 192.168.10.100/32 dev lo label lo:0	#动态路由添加
(如果没有生效 nmcli c reload;nmcli c up lo 重载)

静态路由

[root@localhost ~]# route add -host 192.168.10.100 dev lo		#静态

如果想要开机自启动 修改配置文件 /etc/rc.local

[root@localhost ~]# vim /etc/rc.local
route add -host 192.168.10.100 dev lo

修改sysctl.conf

[root@localhost ~]# 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

验证:

 

[root@localhost ~]# curl 192.168.10.100
44444444
[root@localhost ~]# curl 192.168.10.100
33333333
[root@localhost ~]# curl 192.168.10.100
44444444
[root@localhost ~]# curl 192.168.10.100
33333333
[root@localhost ~]# curl 192.168.10.100
44444444
[root@localhost ~]# curl 192.168.10.100
33333333

后续可以尝试将其中一个web关掉或者将调度器关掉

up主只测试了关掉其中一个web 至于调度器 关掉了一个 就访问不进去了 备用的调度器没有抢占又或者不是Master 导致一直访问不上 也有可能是 两台keepalived还没有检测出来对方是否已经挂了 时间太长 所以就没有再尝试了 感兴趣的小伙伴可以尝试一下 我的配置应该是没问题的 有问题及时评论 及时解决 互相学习 还有噢 此外 还可以多添加一台NFS服务器 之前的文章有关于这方面的操作 应该是LVS—DR中 只不过觉得没必要 所以就没在做了 ok就这样 

 

 

 

 

 

 

 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到