keepalived + LVS NAT模式

本次实验在之前实验拓扑基础上进行改造

keepalived + LVS DR_172.16.1.21:8000-CSDN博客

一、实验拓扑

二、IP地址规划

|-----------------|------|------------------|--------------|--------------------------------------------|
| | 接口 | IP地址 | 网关 | 虚拟IP |
| Client | - | 192.168.10.20/24 | 192.168.10.1 | |
| Virtual Server1 | 外网 | 123.1.1.101/24 | 123.1.1.1 | VIP1: 123.1.1.100/32 VIP2: 172.16.1.100/32 |
| Virtual Server1 | DIP | 172.16.1.101/24 | - | VIP1: 123.1.1.100/32 VIP2: 172.16.1.100/32 |
| Virtual Server2 | 外网 | 123.1.1.102/24 | 123.1.1.1 | VIP1: 123.1.1.100/32 VIP2: 172.16.1.100/32 |
| Virtual Server2 | DIP | 172.16.1.102/24 | - | VIP1: 123.1.1.100/32 VIP2: 172.16.1.100/32 |
| Real Server1 | RIP1 | 172.16.1.201/24 | 172.16.1.100 | |
| Real Server2 | RIP2 | 172.16.1.202/24 | 172.16.1.100 | |
| Real Server3 | RIP3 | 172.16.1.203/24 | 172.16.1.100 | |

三、关键点

virtual server上要配置两个虚拟IP,一个VIP1用户客户端的业务访问,另一个VIP2用于做real server的虚拟网关。

要做两个网卡间的联动,否则单个网卡故障后,此网卡绑定的虚拟IP切换到另一台机器上,但另一个网卡绑定的虚拟地址仍留在原来的机器上,导致通讯故障。

3.1 virtual server1和virtual server2

开启路转发

root@localhost \~# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

root@localhost \~# sysctl -p

3.1.1 keepalived配置文件

virtual server1

root@localhost \~# 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_Master

vrrp_skip_check_adv_addr
! vrrp_strict

vrrp_garp_interval 0

vrrp_gna_interval 0

}

vrrp_instance VI_1 {

state MASTER
interface ens160
interface ens192
virtual_router_id 111
priority 150

advert_int 1

authentication {

auth_type PASS

auth_pass 3690

}
virtual_ipaddress {
123.1.1.100 dev ens160
172.16.1.100 dev ens192
}
track_interface {
ens160
ens192
}

}

virtual_server 123.1.1.100 80 {

delay_loop 6

lb_algo rr

lb_kind NAT

persistence_timeout 0

protocol TCP

real_server 172.16.1.201 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.202 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.203 80 {

weight 1

HTTP_GET {

url {

path /index.html

status_code 200

}

connect_timeout 1

retry 3

delay_before_retry 1

}

}

}

virtual server2

root@localhost \~# 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_Backup

vrrp_skip_check_adv_addr
! vrrp_strict

vrrp_garp_interval 0

vrrp_gna_interval 0

}

vrrp_instance VI_1 {
state BACKUP
interface ens160
interface ens192
virtual_router_id 111
priority 100

advert_int 1

authentication {

auth_type PASS
auth_pass 3690

}
virtual_ipaddress {
123.1.1.100 dev ens160
172.16.1.100 dev ens192
}
track_interface {
ens160
ens192

}

}

virtual_server 123.1.1.100 80 {

delay_loop 6

lb_algo rr

lb_kind NAT

persistence_timeout 0

protocol TCP

real_server 172.16.1.201 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.202 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.203 80 {

weight 1

HTTP_GET {

url {

path /index.html

status_code 200

}

connect_timeout 1

retry 3

delay_before_retry 1

}

}

}

3.2其余配置略

如启动keepalived服务、nginx页面准备等。

四、效果验证

正常情况下访问自动轮询

断开master上的任意关联网卡,两个虚拟IP均转至服务器2上,服务仍正常

恢复master上的网卡,两个虚拟IP均转至服务器1上,服务仍正常

另外,配置了健康检查,real server故障后,超时后会自动踢除故障服务器继续提供服务

相关推荐
你好潘先生17 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
程序员老赵2 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
vivo互联网技术2 天前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
zzzzzz31013 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
大树8816 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
小宇宙Zz16 天前
Maven依赖冲突
java·服务器·maven
网络研究院16 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智16 天前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest16 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全