环境准备
keepalived 原理
通过 vrrp 协议协商主从 master backup 响应 arp 广播

nat 类型介绍
-
SNAT
场景:云上的vm主机用户作为客户端访问外网服务器
vm(client)--->SNAT(将数据包中的内网源IP转换为外网IP)--->Internet(服务器)--->SNAT(将数据包内的目的IP转换为内网IP)--->vm(client) -
DNAT
场景:云上的VM主机作为服务器端为外网提供服务
Internet(client用户)--->DNAT(将数据包中的目的公网IP转换为目的内网IP)--->VM(server)--->DNAT(将数据包中的源内网IP转换为外网IP)--->Internet(client用户)
lvs DNAT模式

机器列表
-
keepalived1
- 192.168.10.2
- 192.168.20.2
- vip 192.168.10.100
- vip 192.168.20.100
-
keepalived2
- 192.168.10.3
- 192.168.20.3
- vip 192.168.10.100
- vip 192.168.20.100
-
rs server1
- 192.168.20.4 gw 192.168.20.100
-
rs server2
- 192.168.20.5 gw 192.168.20.100
-
rs server3
- 192.168.20.6 gw 192.168.20.100
配置要点
- 不同的网段
- <span style='color:#ff0000'>关闭 selinux</span>
- 关闭防火墙
- 在 DS 上开启 IP 转发 net.ipv4.ip_forward = 1
安装方式
yum install keepalived
yum install nginx
# 在 DS 上安装
yum install ipvsadm
配置 keepalived
- 备用节点 配置为 backup
- priority 小于master节点
- persistence_timeout 需要配置为0 ,要不然在失效之前如果 RS 不能使用了那么不会自动切换到
! 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_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.100
}
}
virtual_server 192.168.10.100 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 0
protocol TCP
real_server 192.168.20.4 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 6
nb_get_retry 3
delay_before_retry 6
}
}
real_server 192.168.20.5 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 6
nb_get_retry 3
delay_before_retry 6
}
}
real_server 192.168.20.6 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 6
nb_get_retry 3
delay_before_retry 6
}
}
}
# 做虚拟网关
vrrp_instance VI_2 {
state MASTER
interface ens37
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.20.100
}
}
RS 主机配置
- 添加网关
route add default gw 192.168.20.100
- 修改nginx响应文件区分服务主机
工具使用
- ipvsadm -ln 查看转发规则
- ipvsadm -lnc 查看当前转发的 TCP 连接
- 对于同网段需要添加 clientip 的路由到 DS
route add -host clientIP gw DS
NAT模式特性总结:
- realserver应该使用私有ip地址
- 一般realsever的网关应该指向DIP,不然的话无法保证响应报文经过director
- RIP要和DIP应该在同一网段内
- 进出的报文,无论请求还是响应都要经过Directory
- 支持端口映射
- realserver可以使用任意系统,只要端口对应即可
- 在高负载下,directory可能会成为性能瓶颈,所以不使用于并发很高的应用场景
网友评论