linux运维—LVS(NAT模式)

NAT方式原理图

linux运维—LVS(NAT模式)_第1张图片

  • 当用户请求到达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

以下实验在7.3主机上进行

调度器设置:

1、设置两个不同网段的ip,一个用来接收客户端的请求,另一个作为真实服务器的网关。

[root@toto1 ~]# ip addr add 172.25.254.110/24 dev eth0   # 添加ip
[root@toto1 ~]# ip addr show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:5e:44:1d brd ff:ff:ff:ff:ff:ff
    inet 172.25.47.110/24 brd 172.25.47.255 scope global eth0   # 作为内网地址,与真实服务器交流
       valid_lft forever preferred_lft forever
    inet 172.25.254.110/24 scope global eth0   # 作为对外的地址,接收客户端的请求
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe5e:441d/64 scope link 
       valid_lft forever preferred_lft forever

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

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

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

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

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

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

5 加载模块

modprobe iptable_nat

如果不加载此模块,也可以在第一次访问时成功,但是会在再次访问时出现延迟过长,或访问超时现象

真实服务器设置:

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

[root@toto2 ~]# yum install httpd -y  # 安装服务
[root@toto2 ~]# echo toto2 > /var/www/html/index.html   # 设定服务器资源页面
[root@toto2 ~]# systemctl start httpd  #启动服务
[root@toto2 ~]# systemctl enable httpd   # 设置服务开机自动启动

[root@toto2 ~]# route -n 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.25.47.110   0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
172.25.47.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
[root@toto3 ~]# ip addr show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:30:0c:b2 brd ff:ff:ff:ff:ff:ff
    inet 172.25.47.130/24 brd 172.25.47.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe30:cb2/64 scope link 
       valid_lft forever preferred_lft forever

测试:

[root@foundation47 ~]# curl 172.25.254.110
toto3
[root@foundation47 ~]# curl 172.25.254.110
toto2
[root@foundation47 ~]# curl 172.25.254.110
toto3
[root@foundation47 ~]# curl 172.25.254.110
toto2
[root@foundation47 ~]# curl 172.25.254.110
toto3

你可能感兴趣的:(linux运维—LVS(NAT模式))