前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入浅出 LVS 负载均衡(三)实操 NAT、DR 模型

深入浅出 LVS 负载均衡(三)实操 NAT、DR 模型

作者头像
CNCF
发布2021-07-07 14:31:38
9530
发布2021-07-07 14:31:38
举报
文章被收录于专栏:CNCFCNCF

之前介绍了 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 实现 DR 模型的高可用。

文章转载自UCloud技术。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NAT 网关
NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档