|NO.Z.00008|——————————|^^ 构建 ^^|——|LVS-NAT构建.V2|——|4台server|
一、LVS-NAT概述

### --- LVS_NAT
~~~ C:20.20.20.22:充当本机的客户端
~~~ D:Eht0:20.20.20.11:负载路由器网卡0:公网地址:和C:20.20.20.22公网相互连接
~~~ D:Eht1:10.10.10.11:负载路由器网卡1:模拟的是私有地址
~~~ RS1:Eth0:10.10.10.12:私有地址:Apache充当负载路由器真实服务器地址
~~~ RS2:Eth0:10.10.10.13:私有地址:Apache充当负载路由器真实服务器地址
~~~ C 想访问真实服务器:C会发起一个数据包:
~~~ 原地址是:20.20.20.22;目标地址指向负载路由器的Eth0:20.20.20.11;
~~~ 访问到负载路由器的外网网卡之后,数据包会发给负载路由器,
~~~ 负载路由器LVS组件会根据自己的算法把它改为RS1或RS2机器的IP地址,
~~~ 此环境使用的是S-NAT转换;
~~~ 假设数据包发送给RS1,RS1接收到数据报文之后,RS1会回信给网关,
~~~ 此环境它会把网关指向负载调度器10.10.10.11,负载调度器会把这个数据报文传递给客户端。
~~~ 为了维持原目标地址对调的一致性,所以在负载路由器使用了S-NAT地址转换去保证它的一致性。
二、环境准备:
### --- 本机地址为20.20.20.11:
### --- 本机网络配置:VMnet1——>属性——>IPV4——>高级——>20.20.20.22/255.255.255.0
### --- 实验环境
~~~ Windows:20.20.20.22:client:本地物理主机
~~~ server1:10.10.10.11:充当负载调度器,2块网卡,仅主机模式,默认会跳转到VMnet1上。
~~~ server2:10.10.10.12:真实物理服务主机RS1;仅主机模式
~~~ server3:10.10.10.13:真实物理服务主机RS2;仅主机模式
三、实验基础环境配置:
### --- HA-server1:10.10.10.11,HA-server2:10.10.10.12,HA-server3:10.10.10.13
### --- 配置网卡信息
[root@server11 ~]# cd /etc/sysconfig/network-scripts/
[root@server11 network-scripts]# vim ifcfg-eth1
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.11
NETMASK=255.255.255.0
[root@server11 network-scripts]# vim ifcfg-eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.20.20.11
NETMASK=255.255.255.0
[root@server11 network-scripts]# service network restart
[root@server11 network-scripts]# ip addr // 查看网卡是否生效
### --- 关闭网卡守护进程
[root@server11 ~]# service NetworkManager stop
Stopping NetworkManager daemon: [ OK ]
[root@server11 ~]# chkconfig NetworkManager off
### --- 其它物理业务真实服务器也需要关闭
[root@server11 ~]# service NetworkManager stop && chkconfig NetworkManager off
四、LVS实验构建:HA-server1:10.10.10.11
### --- HA-server1:10.10.10.11
### --- 安装ipvsadm
[root@server11 ~]# yum install -y ipvsadm
### --- 开启路由转发
[root@server11 ~]# vim /etc/sysctl.conf // 开启路由转发功能
# Controls IP packet forwarding
net.ipv4.ip_forward = 1 // 改为1,表示开启;0表示不开启
[root@server11 ~]# sysctl -p
net.ipv4.ip_forward = 1
### --- 开启iptables
[root@server11 ~]# service iptables start
iptables: Applying firewall rules: [ OK ]
[root@server11 ~]# chkconfig iptables on
[root@server11 ~]# iptables -F // 清空它的默认规则
### --- 添加一条防火墙规则
[root@server11 ~]# iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT --to-source 20.20.20.11
// -t nat POSTROUTING把nat表中的POSTROUTING;
//-s 10.10.10.0/24:的时候; ——>内网环境中的网段
//-o eth0:出口网卡是eth0的时候,
//-j SNAT:进行一次SNAT转换,
//--to-soutce:20.20.20.11:把原地址准换为20.20.20.11 ——>eth0环境中的网卡
### --- 添加防火墙记录,当源地址是内网网段并且出口网卡为eth0 的时候进行SNAT转换,转换源地址为外网卡地址
[root@server11 ~]# iptables -t nat -L // 查看记录是否保存成功
SNAT all -- 10.10.10.0/24 anywhere to:20.20.20.11
[root@server11 ~]# service iptables save // 保存规则,防止重启后失效
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@server11 ~]# chkconfig iptables on // 设置开机自启动
### --- 添加LVS-NAT TCP集群规则
[root@server11 ~]# ipvsadm -A -t 20.20.20.11:80 -s rr // 添加ipvsadm TCP集群地址
[root@server11 ~]# ipvsadm -a -t 20.20.20.11:80 -r 10.10.10.12:80 -m // 添加ipvsadm集群节点
[root@server11 ~]# ipvsadm -a -t 20.20.20.11:80 -r 10.10.10.13:8080 -m // LVS-NAT模式支持端口映射,证明实验是否是否生效
[root@server11 ~]# ipvsadm -Ln
TCP 20.20.20.11:80 rr
-> 10.10.10.12:80 Masq 1 0 0
-> 10.10.10.13:8080 Masq 1 0 0
### --- 保存ipvs集群设置到文件进行持久化
[root@server11 ~]# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
[root@server11 ~]# chkconfig ipvsadm on
五、LVS实验构建:HA-server2:10.10.10.12
### --- LVS实验构建:HA-server2:10.10.10.12
### --- 添加网关 //真实服务器只需要把网关指向到负载调度器(路由器)
[root@server12 ~]# echo "GATEWAY=10.10.10.11" >> /etc/sysconfig/network-scripts/ifcfg-eth0
[root@server12 ~]# service network restart
### --- 查看路由配置是否生效
### --- 去任何地方都交给10.10.10.11地址处理
[root@server12 ~]# route -n
0.0.0.0 10.10.10.11 0.0.0.0 UG 0 0 0 eth0
### --- 开启Apache服务
[root@server12 ~]# service httpd start
[root@server12 ~]# chkconfig httpd on
[root@server12 ~]# echo "11111111111" >> /var/www/html/index.html
[root@server12 ~]# curl localhost
11111111111
六、LVS实验构建:HA-Server3:10.10.10.13
### --- HA-Server3:10.10.10.13
### --- 添加网关 //真实服务器只需要把网关指向到负载调度器(路由器)
[root@server13 ~]# echo "GATEWAY=10.10.10.11" >> /etc/sysconfig/network-scripts/ifcfg-eth0
[root@server13 ~]# service network restart
### --- 查看路由配置是否生效
[root@server13 ~]# route -n
0.0.0.0 10.10.10.11 0.0.0.0 UG 0 0 0 eth0
### --- 开启Apache服务
[root@server13 ~]# service httpd start
[root@server13 ~]# echo "22222222222" >> /var/www/html/index.html
[root@server13 ~]# vim /etc/httpd/conf/httpd.conf
Listen 8080 // 修改默认端口为8080
[root@server13 ~]# service httpd restart
[root@server13 ~]# chkconfig httpd on
[root@server13 ~]# curl localhost:8080
22222222222
七、验证:
1、通过IE浏览器:http://20.20.20.11/


2、在负载调度器服务器上验证
### --- 在负载调度器服务器上验证
### --- 入站-出站:数据都有,LVS-NAT模式及负责入站又负责出站
[root@server11 ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 20.20.20.11:80 28 140 138 19219 13588
-> 10.10.10.12:80 14 70 70 9830 7061
-> 10.10.10.13:8080 14 70 68 9389 6527
附录一:实验架构图

附录二:构建代码:
### --- 负载调度器
vi /etc/sysctl.conf // 开启路由转发功能
net.ipv4.ip_forward=1
sysctl -p
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT -j SNAT --to-source 20.20.20.11
### --- 添加防火墙记录,当源地址是内网网段并且出口网卡为eth0 的时候进行SNAT转换,转换源地址为外网卡地址
iptables -t nat -L / /查看记录是否保存成功
ipvsadm -A -t 20.20.20.11:80 -s rr // 添加ipvsadm TCP集群
ipvsadm -a 20.20.20.11:80 -r 10.10.10.12:80 -m // 添加ipvsadm节点
ipvsadm -Ln
service ipvsadm save // 保存ipvs集群设置到文件进行持久化
chkconfig ipvsadm on
### --- 真实服务器
route add default gw IP地址 // 指定网关至负载调度器
service httpd start // 开启Apache服务器
chkconfig httpd on
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv001-lbchac
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通