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了

相关推荐
cpsvps5 分钟前
容器内部DNS解析针对美国服务器微服务的调试指南
运维·服务器·微服务
8K超高清18 分钟前
汇世界迎全运 广州国际社区运动嘉年华举行,BOSMA博冠现场展示并分享与科技全运的故事
运维·服务器·网络·数据库·人工智能·科技
郁大锤1 小时前
Docker 中删除镜像与容器的完整指南
运维·docker·容器
yy_xzz1 小时前
Debian开发板TQ3658设置日期和时间显示 配置无法装入 发生未知的错误
运维·debian
铜峰叠翠2 小时前
tomcat创建bat启动,结合任务计划实现自动重启tomcat服务
运维
Dovis(誓平步青云)2 小时前
《Linux 构建工具核心:make 命令、进度条、Gitee》
linux·运维·学习
LB21123 小时前
苍穹外卖-菜品新增、删除
java·服务器·windows
奥尔特星云大使6 小时前
ALTER 与 UPDATE、DROP 与 DELETE区别
linux·运维·数据库·mysql
野犬寒鸦6 小时前
多级缓存架构:性能与数据一致性的平衡处理(原理及优势详解+项目实战)
java·服务器·redis·后端·缓存