####LVS:NAT网络地址转换模式####

NAT模式
client ->vs(转换ip)->RS->vs(转换ip)->client

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

LVS-NAT模型的特性

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

配置NAT模式的LVS:
调度器设置:
1.设置两个不同网段的ip,一个用来接收客户端的请求,另一个作为真实服务器的网关

[root@server1 ~]# ip addr add 172.25.254.100/24 dev eth0 ## 添加ip
[root@server1 ~]# ip addr show
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:d9:67:4d brd ff:ff:ff:ff:ff:ff
    inet 172.25.46.1/24 brd 172.25.46.255 scope global eth0 # 作为内网地址,与真实服务器交流
       valid_lft forever preferred_lft forever
    inet 172.25.254.100/24 scope global eth0  # 作为对外的地址,接收客户端的请求
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fed9:674d/64 scope link 
       valid_lft forever preferred_lft forever

2 安装lvs管理工具——ipvsadm服务

[root@server1 ~]#  yum install -y ipvsadm

3 添加vip以及真实服务器到调度器

[root@server1 ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
#-A: 添加vip。 -t: tcp协议 。-s: lvs调度算法 rr 轮叫调度
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.46.3:80 -m # 添加真实服务器,使用nat模式的时候,后面的参数为 -m
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.46.2:80 -m
[root@server1 ~]# ipvsadm 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  server1:http rr
  -> 172.25.46.2:http             Masq    1      0          0         
  -> 172.25.46.3:http             Masq    1      0          0      

4 开启调度器的内核路由功能

[root@server1 ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
[root@server1 ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

5.加载模块

[root@server1 ~]# modprobe iptable_nat

真实服务器设置:

两台真实服务器需要安装httpd服务并设置号资源,设定网关为调度器的对内ip

    [root@server2 ~]# yum install httpd -y # 安装服务
    [root@server2 ~]# vim /var/www/html/index.html # 设定服务器资源页面
    [root@server2 ~]# systemctl start httpd #启动服务
    [root@server2 ~]#  systemctl enable httpd # 设置服务开机自动启动 
    [root@server2 ~]#vim /etc/sysconfig/network-script/ifcfg-eth0  #添加网关

测试:

[root@foundation46 ~]# curl 172.25.245.100
server3
[root@foundation46 ~]# curl 172.25.245.100
server2
[root@foundation46 ~]# curl 172.25.245.100
server3
[root@foundation46 ~]# curl 172.25.245.100
server2

猜你喜欢

转载自blog.csdn.net/weixin_44821839/article/details/93483838
今日推荐