LVS负载均衡之NAT模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVS负载均衡之NAT模式相关的知识,希望对你有一定的参考价值。

LVS负载均衡之NAT模式

重点理解NAT方式的实现原理和数据包的改变。

(a). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP?
(b). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(c). IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP?
(d). POSTROUTING链通过选路,将数据包发送给Real Server
(e). Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP?
(f). Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP

  1. LVS-NAT模型的特性
    ? RS应该使用私有地址,RS的网关必须指向DIP
    ? DIP和RIP必须在同一个网段内
    ? 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈
    ? 支持端口映射
    ? RS可以使用任意操作系统
    ? 缺陷:对Director Server压力会比较大,请求和响应都需经过director server

1、实验环境
三台服务器,一台作为 director,两台作为 real server,director 有一个外网网卡(172.16.254.200)?和一个内网ip(192.168.0.8),两个 real server 上只有内网 ip?(192.168.0.18)?和?(192.168.0.28),并且需要把两个 real server 的内网网关设置为 director 的内网 ip(192.168.0.8)
2、安装和配置
两个 real server 上都安装 nginx 服务
# yum install -y nginx
Director 上安装 ipvsadm# yum install -y ipvsadm
Director 上编辑 nat 实现脚本

# vim /usr/local/sbin/lvs_nat.sh
# 编辑写入如下内容:
#! /bin/bash
# director服务器上开启路由转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward

# 关闭 icmp 的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects

# director设置 nat 防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

# director设置 ipvsadm
IPVSADM=‘/sbin/ipvsadm‘
$IPVSADM -C
$IPVSADM -A -t 172.16.254.200:80 -s wrr
$IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.18:80 -m -w 1
$IPVSADM -a -t 172.16.254.200:80 -r 192.168.0.28:80 -m -w 1

保存后,在 Director 上直接运行这个脚本就可以完成 lvs/nat 的配置
/bin/bash /usr/local/sbin/lvs_nat.sh
查看ipvsadm设置的规则
ipvsadm -ln

3、测试LVS的效果
通过浏览器测试2台机器上的web内容?http://172.16.254.200?。为了区分开,我们可以把 nginx 的默认页修改一下:
在 RS1 上执行
# echo "rs1rs1" >/usr/share/nginx/html/index.html
# echo "rs2rs2" >/usr/share/nginx/html/index.html
注意,切记一定要在两台 RS 上设置网关的 IP 为 director 的内网 IP。

以上是关于LVS负载均衡之NAT模式的主要内容,如果未能解决你的问题,请参考以下文章

LVS负载均衡之NAT模式原理及配置详细流程

lvs负载均衡实践之lvs-nat

LVS负载均衡群集之构建NAT模式,可跟做!!!

LVS负载均衡之LVS-NAT实例部署(配置篇)

linux之集群LVS

LVS负载均衡之NAT模式