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了

相关推荐
乘云数字DATABUFF16 小时前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
荣--3 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森3 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜3 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB4 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
zzzzzz3106 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode6 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220706 天前
如何搭建本地yum源(上)
运维
大树889 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠9 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql