keepalived + LVS DR

前面实现了单个LVS集群

LVS DR模式实验-CSDN博客

但存在调度器单点故障的问题

本实验在之前的实验基础上进行改进,增加一台LVS高度器,再通过Keepalived实现高可用性以及LVS规则自动添加,无需使用ipvsadm服务进行管理

一、实验拓扑

二、地址规划

需对原来的IP地址进行规划调整

|-----------------|------|------------------|--------------|----------------|
| | 接口 | IP地址 | 网关 | 虚拟IP |
| Client | - | 192.168.10.20/24 | 192.168.10.1 | |
| Virtual Server1 | 外网 | 123.1.1.101/24 | 123.1.1.1 | 123.1.1.100/32 |
| Virtual Server1 | DIP | 172.16.1.101/24 | - | 123.1.1.100/32 |
| Virtual Server2 | 外网 | 123.1.1.102/24 | 123.1.1.1 | 123.1.1.100/32 |
| Virtual Server2 | DIP | 172.16.1.102/24 | - | 123.1.1.100/32 |
| Real Server1 | RIP1 | 172.16.1.21/24 | 172.16.1.1 | |
| Real Server1 | lo | 123.1.1.100/32 | | |
| Real Server2 | RIP2 | 172.16.1.22/24 | 172.16.1.1 | |
| Real Server2 | lo | 123.1.1.100/32 | | |
| Real Server3 | RIP3 | 172.16.1.23/24 | 172.16.1.1 | |
| Real Server3 | lo | 123.1.1.100/32 | | |

三、基础环境调整

由于前面实验已经实现LVS DR模式,调度器(Virtual Server)上已开启路由转发,Real Server上已开启arp_ignnore和arp_announce

只需按照上面规划调整服务器IP地址即可,参考前面文档中设置方法

调度器(Virtual Server)上把ipvsadm服务自启动关闭,停止服务,并清空lvs规则

systemctl disable --now ipvsadm

ipvsadm -C

四、配置keepalived

装包

两台Virtual Server安装keepalived

dnf -y install keepalived

配置文件1

root@virt-serv1 \~# cat /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_Virtual_Server01 //两台Virtual Server的ID设置成不一样的

vrrp_skip_check_adv_addr
! vrrp_strict //必须注释掉,否则VIP不通

vrrp_garp_interval 0

vrrp_gna_interval 0

}

vrrp_instance VI_1 {

state MASTER //一端为MASTER,另一端为BACKUP

interface ens160 //VIP关联的网卡

virtual_router_id 100 //两台Virtual Server的ID必须一致

priority 150

advert_int 1

authentication {

auth_type PASS
auth_pass 147369 //两台Virtual Server的认证密码必须一致

}

virtual_ipaddress {

123.1.1.100

}

}

virtual_server 123.1.1.100 80 {

delay_loop 3

lb_algo wrr

lb_kind DR

persistence_timeout 0 //改为0,否则一直单台real server回复

protocol TCP

real_server 172.16.1.212 80 {

weight 1

HTTP_GET {

url {
path /index.html //健康检查,配错导致无法添加LVS规则
status_code 200

}

connect_timeout 1

retry 3

delay_before_retry 1

}

}

real_server 172.16.1.213 80 {

weight 1

HTTP_GET {

url {

path /index.html

status_code 200

}

connect_timeout 1

retry 3

delay_before_retry 1

}

}

real_server 172.16.1.214 80 {

weight 1

HTTP_GET {

url {

path /index.html

status_code 200

}

connect_timeout 1

retry 3

delay_before_retry 1

}

}

}

配置文件2

root@virt-serv2 \~# cat /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_Virtual_Server02

vrrp_skip_check_adv_addr

! vrrp_strict

vrrp_garp_interval 0

vrrp_gna_interval 0

}

vrrp_instance VI_1 {

state BACKUP

interface ens160

virtual_router_id 100

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 147369

}

virtual_ipaddress {

123.1.1.100

}

}

virtual_server 123.1.1.100 80 {

delay_loop 3

lb_algo wrr

lb_kind DR

persistence_timeout 0

protocol TCP

real_server 172.16.1.212 80 {

weight 1

HTTP_GET {

url {

path /index.html

status_code 200

}

connect_timeout 1

retry 3

delay_before_retry 1

}

}

real_server 172.16.1.213 80 {

weight 1

HTTP_GET {

url {

path /index.html

status_code 200

}

connect_timeout 1

retry 3

delay_before_retry 1

}

}

real_server 172.16.1.214 80 {

weight 1

HTTP_GET {

url {

path /index.html

status_code 200

}

connect_timeout 1

retry 3

delay_before_retry 1

}

}

}

启服务

systemctl enable --now keepalived

五、实验效果

master获得虚拟IP

两台virtual server均自动添加了lvs规则,此处显示IP根据实际配置而定

调度效果

停用master的网卡后,自动切换到backup上,服务未中断

如果有多个网卡,除VIP所在网卡外,其余的都设置成"始终不使用此网络于默认路由",否则会导致切换后网络不通

启用master网卡后,服务又切换回来了

相关推荐
不像程序员的程序媛6 小时前
检测网络的命令mtr详解
网络
天启HTTP7 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
运维行者_7 小时前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
hz567899 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC9 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
优橙教育9 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
AIgorithmGEEK9 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Nil20810 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)10 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter62510 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器