乐趣区

关于云计算:深入浅出-LVS-负载均衡三实操-NATDR-模型

之前介绍了 LVS 负载平衡 NAT、FULLNAT、DR、TUN 模型的实现原理。本章来入手实际一下~

实际环境

LVS 目前曾经是 Linux 内核 - 中的一部分,在内核中的模块叫做 ipvs,反对 NAT、DR、TUNNEL 模型。用户不能间接操作 ipvs 模块,须要装置交互软件 ipvsadm,应用 ipvsadm 和 ipvs 进行交互。

应用 3 台 UCloud 云主机来搭建试验环境,创立云主机的时候抉择分时购买,更划算。

试验机器及环境

  • 3 台 UCloud 云主机,CentOS 7.9 64 位,1 核 1 G,须要留神⼀下防⽕墙规定,实际中抉择的是【Web 服务器举荐】,凋谢 22、3389、80、443 的端⼝号,这个能够⾃⾏配置
  • 两台 Real Server:RS01、RS02,⼀台负载平衡服务器:LB01
  • RS01:10.23.190.76、RS02:10.23.122.152、LB01:10.23.21.184
  • RS01、RS02 装置 httpd,疾速启动 http 服务器,且配置不同的申请响应
  • LB01 装置 ipvsadm,并启动 ipvsadm
    试验机器展现

NAT 模式实操
回顾一下 NAT 模式的特点

  • NAT 模式批改数据包的「指标 IP 地址」或「源 IP 地址」,所有的申请数据包、响应数据包都要通过负载均衡器,所以 NAT 模式反对对端口的转换
  • 实在服务器的默认网关是负载均衡器,所以实在服务器和负载均衡器必须在同一个网段

实操开始,首先要做一些前置的筹备工作,即把该装置的软件和服务,装置和启动起来。

RS01、RS02 装置 httpd,疾速启动 http 服务

yum install httpd -y && service httpd start
echo "HelloFrom RS01/RS02" > /var/www/html/index.html

验证:curl 0.0.0.0,返回对应的信息

LB01 装置 ipvsadm,并启动 ipvsadm

yum install ipvsadm && ipvsadm --save> /etc/sysconfig/ipvsadm && service ipvsadm start

看到下图就示意胜利启动了 ipvsadm

做完这些前置筹备工作之后,接下来对照 NAT 模式来配置具体的负载规定。

RS01、RS02
设置默认网关为 DIP,即 LB01 的内网 IP – 10.23.21.184
查看 RS01、RS02 以后的默认网关
route -n
能够看到以后的默认网关是 10.23.0.1

设置默认网关为 10.23.21.184
route add default gw 10.23.21.184
输出命令并按下回车之后,会很长时间没有响应,是失常的。等它连贯断掉之后,再通过 LB01 登陆到 RS01、RS02 上


删除之前的默认网关
route del default gw 10.23.0.1

LB01
配置路由入口规定,应用 -A 参数

  • 因为试验应用的是云主机,而云主机的 EIP 或者说外网 IP 地址,自身就是通过 NAT 形式映射到了绑定的云主机上,所以不能将 EIP 当作 VIP 绑定端口。这里就间接将内网 IP 当作 DIP 应用

ipvsadm -A -t 10.23.21.184:8000 -s rr

配置路由入口规定,应用 -a 参数

ipvsadm -a -t 10.23.21.184:8000 -r 10.23.190.76:80 -m
ipvsadm -a -t 10.23.21.184:8000 -r 10.23.122.152:80 -m

验证配置
ipvsadm -ln

开启路由转发
echo 1 >/proc/sys/net/ipv4/ip_forward
这里大略解释下对 ipvsadm 的配置信息:
-A 增加一条新的虚构服务器记录,即增加一台新的虚构服务器
-a 增加一条新的实在服务器记录,即在虚构服务器中增加一台实在服务器
-t 实在服务器提供的是 TCP 服务
-s 负载平衡应用的调度算法,rr 示意轮询
-w 设置权重
-r 指定实在服务器
-m 指定 LVS 应用 NAT 模式
-g 指定 LVS 应用 DR 模式
-i 指定 LVS 应用 TUNNEL 模式

能够看到,下面配置是应用 NAT 模式,调度算法为轮询。

到这里配置就全副实现了,接下来验证 LB01 能不能依照预期负载到 RS01、RS02。应用浏览器间接关上 LB01 的外网 IP 地址。


因为浏览器的缓存机制,在短时间内刷新的时候,返回可能不会发生变化。能够应用 curl 更精确的查看。

到此验证胜利~

TUNNEL 模式实操

回顾一下 TUNNEL 模式的特点

TUNNEL 模式不扭转原数据包,而是在原数据包上新增一层 IP 首部信息。所以 TUNNEl 模式不反对对端口的转换,且实在服务器必须可能反对解析两层 IP 首部信息
实在服务器和负载均衡器能够不在同一个网段中
实在服务器须要更改 ARP 协定,“暗藏”lo 接口上的 VIP

TUNNEL 模式和其余模式有点不同,不能像之前那样间接应用 VIP 来充当 DIP。所以须要额定一个 DIP:10.23.21.180。

开始配置具体的负载规定~

RS01、RS02
装置 ipip 模块
modprobe ipip
验证 ipip 模块是否加载胜利
lsmod | grep ipip

批改 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

rp_filter 示意是否开启对数据包源地址的校验,这里间接敞开校验即可。

echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

配置 DIP

ifconfig tunl0 10.23.21.180 broadcast 10.23.21.180 netmask 255.255.255.255 up
route add -host 10.23.21.180 tunl0

验证配置
ifconfig

route -n

LB01
配置路由入口规定
ipvsadm -A -t 10.23.21.180:80 -s wrr
配置路由进口规定,因为在不同的网段,这里须要配置 RS01、RS02 的外网地址

ipvsadm -a -t 10.23.21.180:80 -r 10.23.190.76 -i -w 1
ipvsadm -a -t 10.23.21.180:80 -r 10.23.122.152 -i -w 1

配置 DIP
装置 ipip 模块

modprobe ipip
ifconfig tunl0 10.23.21.180 broadcast 10.23.21.180 netmask 255.255.255.255 up
route add -host 10.23.21.180 tunl0

验证配置
ipvsadm -ln

route -n

配置实现,再申请一台云主机来验证实操后果。

DIP 是虚构进去的 IP 地址,所以理论在网络中是找不到的,须要先手动将拜访 DIP 的路由,拜访到 LB01 上。

route add -host 10.23.21.180 gw 10.23.21.184

验证一下(route -n)


最初来验证一下 TUNNEL 模型是否胜利。

验证胜利~

  • 下篇将持续围绕 DR 模型的实操,及应用 Keepalived 实现
退出移动版