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了

相关推荐
木雷坞1 分钟前
Docker Hub、GHCR、Quay 混在一起后,镜像源要分开测
运维·docker
LT101579744426 分钟前
2026年物流RPA选型指南:物流供应链自动化场景适配
运维·自动化·rpa
AC赳赳老秦31 分钟前
OpenClaw任务复盘自动化:统计每日完成工作、遗留问题,优化工作节奏
java·大数据·linux·运维·服务器·数据库·openclaw
雾岛心情41 分钟前
【小铭邮箱】小铭邮箱工具箱公司版本导入VCF文件
运维·工具·exchage·o365·小铭邮件工具箱(公司版)
kaoa00044 分钟前
Linux入门攻坚——79、XEN虚拟化-2
linux·运维·开发语言
AOwhisky1 小时前
学习自测(MySQL系列第一期、第二期)
linux·运维·数据库·学习·mysql·云计算
Kyrie_Li1 小时前
Kafka-基础知识总结
运维·分布式·kafka
OpsEye1 小时前
一次SSH暴力破解后的安全复盘
运维·服务器·ssh
EntyIU1 小时前
DOCKER_CHEATSHEET
运维·docker·容器
xixingzhe21 小时前
SSH隧道连接服务器、数据库
运维·ssh