实战-LVS-NAT集群模式
实战-LVS-NAT集群模式
1. LVS-NAT 模式工作原理
客户端访问调度器时,调度器通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
如图:
步骤1:客户端访问VIP1的网站
图上各IP注解:
CIP 客户端的IP
VIP 是域名解析的IP, 是集群对外的公网IP
DIP 用来和后端服务器进行数据交互的IP, 请求报文转发给后端服务器从此口出去
RIP 真实服务器的IP
步骤2:客户端访问调度器时,调度器通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;
步骤3:真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
步骤总结及过程地址变化:
1: 客户端请求访问www.example.com[www.example.com ===> VIP]
源地址: CIP 目标地址: VIP
2: 请求报文到达负载均衡器
源地址: CIP 目标地址: RIP
3: RealServer收到报文处理, 响应
源地址: RIP 目标地址: CIP
4: 负载调度器收到报文, 根据自身之前的转发修改记录, 还原报文
源地址: VIP 目标地址: CIP
2.实战-LVS-NAT集群
原理简图:
拓扑图:
部署安装
1、IP地址规划:
服务器 | ip类型 | IP | 注: |
dirctor分发器 | VIP | 10.27.17.91 | ens33 客户端可以访问 |
DIP | 192.168.8.1 | ens37 与web服务器同一网段 | |
realserver1(web1) | RIP | 192.168.8.2 | ens33与DIP在一个网段,并且网关是DIP |
realserver1(web2) | RIP | 192.168.8.3 | ens33 与DIP在一个网段,并且网关是DIP |
client | CIP | 10.27.17.41 | 可以访问VIP地址 |
2、配置网络环境
[root@dirctor ~]# vim /etc/sysctl.conf
改:net.ipv4.ip_forward = 0
为:net.ipv4.ip_forward = 1
让配置生效:
[root@dirctor ~]# sysctl -p
添加一个网卡(需要两张网卡), 配置成以下网络环境:
ens33 10.27.17.91 模式:桥接模式 模拟公网
ens37 192.168.8.1 模式:LAN1 模拟内网
[root@dirctor ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=288e688f-dd28-46f7-9ce2-debee7c1ce34
DEVICE=ens33
ONBOOT=yes
IPADDR=10.27.17.91
NETMASK=255.255.255.0
GATEWAY=10.27.17.1
DNS1=61.139.2.69
[root@dirctor ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.8.1
NETMASK=255.255.255.0
3 安装: LVS管理工具:ipvsadmin
[root@dirctor ~]# yum install ipvsadm
[root@dirctor ~]# systemclt enable ipvsadm
4、使用ipvsadm命令设置规则
[root@dirctor ~]# ipvsadm -A -t 10.27.17.91:80 -s rr #rr代表轮循
选项:
-A 添加虚拟服务器
-t 表示TCP的服务 VIP:PORT
-s 指定调度算法 rr表示round-robin 轮循
[root@dirctor ~]# ipvsadm -a -t 10.27.17.91:80 -r 192.168.8.2 -m
[root@dirctor ~]# ipvsadm -a -t 10.27.17.91:80 -r 192.168.8.3 -m
选项:
-a 表示添加real server的地址
-r 指定real server的IP地址
-m 表示masquerade 也就是NAT方式的LVS
查看
[root@dirctor ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.27.17.91:80 rr
-> 192.168.8.2:80 Masq 1 0 0
-> 192.168.8.3:80 Masq 1 0 0
5、realserver 配置安装
[root@realserver1 ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens37
BOOTPROTO=none
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.8.2
NETMASK=255.255.255.0
GATEWAY=192.168.8.1
[root@realserver1 ~]yum install -y httpd
[root@realserver1 ~]echo "192.168.8.2" > /var/www/html/index.html
[root@realserver1 ~]systemctl restart httpd
[root@realserver1 ~]systemctl enable httpd
realserver2 同上操作
6、测试