欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LVS 的三种模式: NAT 、 IP TUN 和 DR 技术

程序员文章站 2022-07-02 17:54:13
...
====== NAT ======
说明:
LVS 服务器需要两块网卡,一块配置公网 IP (vip) ,一块配置私网 IP ;并且需要打开路由管道,让自己变成一个路由器。
整个网络环境只需要一个公网 IP 。
真实服务器不需要做任何配置。

------ ip config ------
LVS Server:
vip: 8.8.8.8 (eth1)
ip: 192.168.1.1 (eth0)

Real Server1:
ip: 192.168.1.2 (eth0)

Real Server2:
ip: 192.168.1.3 (eth0)
------ ip config ------

------ settings ------
LVS Server:
# 开启路由管道
echo 1 > /proc/sys/net/ipv4/ip_forward
# 清除调度记录
ipvsadm -C
# 添加转发策略:对 8.8.8.8 的 80 端口的 tcp  访问,使用轮叫算法进行调度
ipvsadm -At 8.8.8.8:80 -s rr
# 调度到下面两台机器, m 表示使用 nat 模式
ipvsadm -at 8.8.8.8:80 -r 192.168.1.2:80 -m
ipvsadm -at 8.8.8.8:80 -r 192.168.1.3:80 -m
------ settings ------

====== IP TUN ======
说明:
LVS 服务器和各真实服务器都需要一块支持 IP 隧道协议的网卡 (tunl0) ,配置为 vip 。
vip 配置在各自的隧道网卡上,真实服务器需要对 vip 做 arp 忽略。
LVS 服务器和各真实服务器都需要公网地址。

------ ip config ------
LVS Server:
# vip: 200.168.10.10
ip: 200.168.10.1 (eth0)

Real Server1:
ip: 200.168.10.2 (eth0)

Real Server2:
ip: 200.168.10.3 (eth0)
------ ip config ------

------ settings ------
LVS Server:
# 子网掩码设为4个255,以保证计算机内两块网卡的 ip 位于不同网段
# 一个计算机内无论有几块网卡,其网段必须互不不同,否则不能通信
ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up
# 手工添加路由表,避免路由表短缺
route add -host 200.168.10.10 dev tunl0
ipvsadm -C
ipvsadm -At 200.168.10.10:80 -s rr
ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -i
ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -i

Real Server1:
ifconfig tunl0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev tunl0
# arp 忽略:忽略 200.168.10.10 的 arp 广播,响应 200.168.10.2 的 arp 广播
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

Real Server12:
# 和 Server1 类似
------ settings ------

====== DR ======
说明:
LVS 服务器利用自己 eth0 网卡的第二个接口代替隧道网卡;真实服务器利用自己 eth0 网卡的 lookback 回环接口代替隧道网卡;其它和 IP TUN 模式一模一样。
LVS 服务器不能也使用回环接口,因为回环接口没有 MAC ,无法响应 arp 广播。

------ ip config ------
假设和 IP TUN 一样
------ ip config ------

------ settings ------
LVS Server:
# 子网掩码设为4个255,以保证计算机内两块网卡的 ip 位于不同网段
# 一个计算机内无论有几块网卡,其网段必须互不不同,否则不能通信
ifconfig eth0:0 200.168.10.10 netmask 255.255.255.255 up
# 手工添加路由表,避免路由表短缺
route add -host 200.168.10.10 dev eth0:0
ipvsadm -C
ipvsadm -At 200.168.10.10:80 -s rr
ipvsadm -at 200.168.10.10:80 -r 200.168.10.2:80 -g
ipvsadm -at 200.168.10.10:80 -r 200.168.10.3:80 -g

Real Server1:
ifconfig lo:0 200.168.10.10 netmask 255.255.255.255 up
route add -host 200.168.10.10 dev lo:0
# arp 忽略:忽略 200.168.10.10 的 arp 广播,响应 200.168.10.2 的 arp 广播
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

Real Server12:
# 和 Server1 类似
------ settings ------