LVS + KeepAlived 配置HA集群的步骤

LVS + KeepAlived 配置HA集群的步骤

(一)集群准备

准备vmvare linux虚拟主机4台,假设对外提供的VIP是192.168.174.110

主机 IP 备注
LVS1 192.168.174.101 提供4层代理-主机
LVS2 192.168.174.102 提供4层代理-备用
Apache1 192.168.174.201 真实服务器1
Apache2 192.168.174.202 真实服务器2

此处采用LVS的DR模式,需修改真实服务器的内核参数

复制代码
arp_ignore:通常将arp_ignore设置为1,这意味着只有在请求的目标IP地址与接收到请求报文的接口上的IP地址匹配时,才给予ARP响应。
arp_announce:通常将arp_announce设置为2,这意味着避免将接口信息向非直接连接的网络进行通告。

即修改真实服务器的系统配置文件中/etc/sysctl.conf

bash 复制代码
net.ipv4.conf.ens33.arp_announce = 2 # 其中 ens33根据主机的实际网络接口名称做调整
net.ipv4.conf.ens33.arp_ignore = 1		# 其中 ens33根据主机的实际网络接口名称做调整

net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1

并通过执行sysctl -p命令来应用更改。

(二)安装

yum install -y ipvsadm keepalived

(三)配置LVS1 和 LVS2

1. 在LVS1 的/etc/keepalived/keepalived.conf上完成如下配置,其中interface ens33根据主机的实际网络接口名称做调整

bash 复制代码
! Configuration File for keepalived

global_defs {
   router_id Cluster1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 255
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.174.110/24
    }
}


virtual_server 192.168.174.110 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    # persistence_timeout 50
    protocol TCP

    real_server 192.168.174.201 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.174.202 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

2. 在LVS1 的/etc/keepalived/keepalived.conf上完成如下配置

bash 复制代码
! Configuration File for keepalived

global_defs {
   router_id Cluster1
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.174.110/24
    }
}


virtual_server 192.168.174.110 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    # persistence_timeout 50
    protocol TCP

    real_server 192.168.174.201 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.174.202 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

3. 参数解释

全局定义部分 (global_defs)

复制代码
router_id Cluster1:标识这个Keepalived实例。

VRRP实例部分 (vrrp_instance VI_1)

复制代码
state MASTER:指定这个Keepalived实例的初始状态是MASTER。
interface ens33:指定Keepalived使用哪个网络接口来发送和接收VRRP广告。
virtual_router_id 51:虚拟路由器的ID,用于标识这个VRRP实例。
priority 255:优先级,用于决定哪个节点应该成为MASTER
advert_int 1:MASTER节点发送VRRP广播的频率。
authentication:认证配置,用于确保只有合法的节点可以加入VRRP集群。
    auth_type PASS:使用简单密码认证。
    auth_pass 1111:认证密码。
virtual_ipaddress:虚拟IP地址,这是当这个节点成为MASTER时,会被分配到这个节点的IP地址。

负载均衡部分 (virtual_server)

复制代码
192.168.174.110 80:定义了虚拟服务器的IP地址和端口号。
delay_loop 6:健康检查的时间间隔,单位是秒。
lb_algo rr:负载均衡算法,这里使用的是轮询(Round Robin)。
lb_kind DR:负载均衡模式,这里使用的是直接路由(Direct Routing)。
protocol TCP:指定使用TCP协议进行健康检查。

真实服务器部分 (real_server)

复制代码
real_server:分别定义了两个真实服务器的IP地址和端口号。
weight 1:权重,用于在负载均衡决策中考虑。
TCP_CHECK:TCP健康检查配置。
    connect_timeout 3:连接超时时间,单位是秒。
    retry 3:如果健康检查失败,重试的次数。
    delay_before_retry 3:在重试之前的延迟时间,单位是秒。

(四)测试

配置完成后,LVS1 和 LVS2systemctl start keepalived启动keepalived服务,分别

复制代码
curl 192.168.174.110
curl 192.168.174.201
curl 192.168.174.202

测试响应情况,如果配置正常,可在LVS1上看到浮动ip 192.168.174.110

然后强制关机LVS1,模拟LVS1宕机,此时可以发现浮动ip 192.168.174.110漂移到了LVS2,再次测试

复制代码
curl 192.168.174.110
curl 192.168.174.201
curl 192.168.174.202

然后将LVS1开机,会发现该浮动ip又漂移回LVS1了

相关推荐
古法老登瞎折腾7 小时前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
琥珀.8 小时前
mysql中json数组转列表查询
linux·运维·服务器
dawnsky.liu8 小时前
在 RHEL 中使用 goose 实现远程主机管理
linux·运维·ai
Linux运维技术栈10 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
云边云科技_云网融合10 小时前
连锁门店组网怎么做?SD-WAN 多分支组网的架构选型、部署与成本结构
服务器·数据库·php
云上先途110 小时前
企业 AI 服务部署周期多久,会不会影响原有业务运转?
大数据·运维·人工智能
网络小江11 小时前
组网第35课:静态路由——下一跳、出接口、默认路由、浮动静态与黑洞路由
服务器·网络·默认路由·黑洞路由·浮动静态路由
执伞人ONLY11 小时前
AI知识库自动化知识加工没做对,人工整理永远追不上知识产生
运维·人工智能·自动化
叼烟扛炮11 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节
无足鸟ICT12 小时前
【RHCA+】who命令(查看已登陆用户)
linux·运维·服务器