LVSNAT模式负载均衡集群!
!!!警告!!!
- 1 你可以自由转载,但请务必注明出处,
写作不宜,请珍惜我的劳动成果 … - 2 技术应该被共享,你可以自由学习,但
禁止用于任何的商业,以及各种私自盈利行为 …
NAT模式LVS负载均衡搭建.
🔧准备.
- 🔧 3台计算机,或3台虚拟机.
- 🔧 操作系统Debian10.
- 🔧 安装类型,全部最小安装.

博客中的实验环境.
- 物理系统Arch Linux
- 虚拟化平台KVM
- 虚拟机操作系统Debian10
| 名称 | 虚拟化平台 | 虚拟机系统 |
|---|---|---|
| DS | KVM | Debian10 |
| RS0 | KVM | Debian10 |
| RS1 | KVM | Debian10 |
博客中虚拟机IP及主机名配置.
| IP | 节点 |
|---|---|
| 10.43.0.29 | DS |
| 10.43.0.58 | RS0 |
| 10.43.0.31 | RS1 |
配置RS0虚拟机.

- 配置
DS0虚拟机网络.
#--RS0
cat << "EOF" >>/etc/network/interfaces
auto enp1s0
iface enp1s0 inet static
address 192.168.222.52
netmask 255.255.255.0
gateway 192.168.222.85 #此处的网关指向DIP
EOF- 重启网络.
systemctl daemon-reload && \
systemctl restart networking.service
配置RS1虚拟机.
- 配置
DS1虚拟机网络.

#--RS0
cat << "EOF" >>/etc/network/interfaces
auto enp1s0
iface enp1s0 inet static
address 192.168.222.215
netmask 255.255.255.0
gateway 192.168.222.85 #此处的网关指向DIP
EOF- 重启网络.
systemctl daemon-reload && \
systemctl restart networking.service
配置DS虚拟机.(调度器)
DS虚拟机(调度器)网络配置.
#--RS0
cat << "EOF" >>/etc/network/interfaces
auto enp1s0
iface enp1s0 inet static
address 192.168.222.215
netmask 255.255.255.0
gateway 192.168.222.1
EOF- 重启网络.
systemctl daemon-reload && \
systemctl restart networking.service

1,配置DS虚拟机(调度器)LVS规则.
ipvsadm -C
ipvsadm -A -t 10.43.0.29:80 -s rr
ipvsadm -a -t 10.43.0.29:80 -r 192.168.222.52:80 -m -w 1
ipvsadm -a -t 10.43.0.29:80 -r 192.168.222.215:80 -m -w 1开启路由转发,以及屏蔽icmp重定向.
- 仅临时生效
echo '1' >/proc/sys/net/ipv4/conf/all/send_redirects
echo '1' >/proc/sys/net/ipv4/conf/default/send_redirects编写LVS启动脚本.
- 将此脚本加入
PATH环境变量中,启动或停止LVS.
#!/usr/bin/env bash
case $1 in
start)
echo 1 >/proc/sys/net/ipv4/ip_forward
echo '0' >/proc/sys/net/ipv4/conf/all/send_redirects
echo '0' >/proc/sys/net/ipv4/conf/default/send_redirects
for i in /sys/class/net/*; do
if ! [[ `echo $i |cut -d / -f 5` == 'lo' ]]; then
echo '0' >/proc/sys/net/ipv4/conf/$(echo $i |cut -d / -f 5)/send_redirects
echo '0' >/proc/sys/net/ipv4/conf/$(echo $i |cut -d / -f 5)/send_redirects
fi
done
ipvsadm -C
ipvsadm -A -t 10.43.0.29:80 -s rr
ipvsadm -a -t 10.43.0.29:80 -r 192.168.222.52:80 -m -w 1
ipvsadm -a -t 10.43.0.29:80 -r 192.168.222.215:80 -m -w 1
;;
stop)
echo 0 >/proc/sys/net/ipv4/ip_forward
echo '1' >/proc/sys/net/ipv4/conf/all/send_redirects
echo '1' >/proc/sys/net/ipv4/conf/default/send_redirects
for i in /sys/class/net/*; do
if ! [[ `echo $i |cut -d / -f 5` == 'lo' ]]; then
echo '0' >/proc/sys/net/ipv4/conf/$(echo $i |cut -d / -f 5)/send_redirects
echo '0' >/proc/sys/net/ipv4/conf/$(echo $i |cut -d / -f 5)/send_redirects
fi
done
ipvsadm -C
;;
esac永久生效内核参数规则.
cat << "EOF" >>/etc/sysctl.conf
#--开启ip转发.
net.ipv4.ip_forward = 1
#--禁止ICMP重定向.
net.ipv4.conf.enp1s0.send_redirects=0
net.ipv4.conf.lo.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.send_redirects=0
EOF永久生效的LVS规则.
- 2,载入lvs规则.
/etc/init.d/ipvsadm load开机子启动lvs规则.
- 6,配置使用systemd启动LVS.
systectl start lvs.serviceLVSNAT模式数据包请求流程.
- 1,当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
- 2,PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP,将数据包发往 INPUT 链
- 3,IPVS 是工作在 INPUT 链上的,当用户请求到达 INPUT 时,IPVS 会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时 IPVS 会强行修改数据包里的目标 IP 地址及端口,并将新的数据包发往 POSTROUTING 链
- 4,POSTROUTING 链接收数据包后发现目标 IP 地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器
LVSNAT负载均衡模式配置要点.
- 1,RS和DIP属于同一IP网络中网卡应该使用私网地址,且RS的网关要指向DIP.
- 2,请求和响应报文都要经由director转发,极高负载的场景中,director可能会成为系统瓶颈.
- 3,支持端口映射.
- 4,RS可以使用任意操作系统(OS);
- 5,DIR需要两块网卡(属于典型的lan/wan)RIP和Director的必须有一块网卡在同一IP网络.
- 6,VIP需要配置在DIR接受客户端请求网卡上,且直接对外提供服务.
LVSNAT模式的优点以及缺点.
👉缺点:在整个过程中,所有输入输出的流量都要经过 LVS 调度服务器.显然,LVS 调度服务器的网络 I/O 压力将会非常大,因此很容易成为瓶颈,特别是对于请求流量很小,而响应流量很大的 Web 类应用来说尤为如此.
优点:NAT 模式的优点在于配置及管理简单,由于了使用 NAT 技术,LVS 调度器及应用服务器可以在不同网段中,网络架构更灵活,应用服务器只需要进行简单的网络设定即可加入集群.


