基于 CentOS 7 构建 LVS-NAT 群集

基于 CentOS 7 构建 LVS-NAT 群集

  • 1、LVS-NAT的基本工作原理
  • 2、LVS-NAT的工作逻辑图
  • 3、配置
    • 1)实验环境
    • 2)设置环境
      • ① DS(Director Server)
      • ② RS(Real Server)
    • 3)配置LVS
    • 5)Client访问测试(访问DS外网IP地址)

1、LVS-NAT的基本工作原理

基于 CentOS 7 构建 LVS-NAT 群集_第1张图片

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

2、LVS-NAT的工作逻辑图

基于 CentOS 7 构建 LVS-NAT 群集_第2张图片
模式特点

  • 集群节点,必须在一个网络中
  • 真实服务器必须将网关指向负载调度器
  • RIP 通常都是私有 IP,仅用于各个集群节点通信
  • 负载调度器必须位于客户端和真实服务器之间,充当网关
  • 支持端口映射
  • 负载调度器操作系统必须是 Linux ,真实服务器可以使用任意系统

3、配置

1)实验环境

DS(Director Server):内网DIP 192.168.25.136 & 外网VIP 192.168.43.131
RS1(Real Server):内网RIP 192.168.25.137
RS2(Real Server):内网RIP 192.168.25.138
Client:外网CIP 192.168.43.132

2)设置环境

① DS(Director Server)

添加网卡(双网卡,一外网,一内网)
基于 CentOS 7 构建 LVS-NAT 群集_第3张图片

[root@136 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:c9:ac:45 brd ff:ff:ff:ff:ff:ff
    inet 192.168.25.136/24 brd 192.168.25.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::a14f:b82c:230e:59d9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:c9:ac:4f brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.131/24 brd 192.168.43.255 scope global noprefixroute dynamic ens36
       valid_lft 1491sec preferred_lft 1491sec
    inet6 fe80::771a:de51:3b:1b45/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

配置路由转发功能(实现NAT)

#方法一(重启之后自动恢复默认0):
[root@136 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@136 ~]# cat /proc/sys/net/ipv4/ip_forward
1
//恢复
[root@136 ~]# echo 0 > /proc/sys/net/ipv4/ip_forward
[root@136 ~]# cat /proc/sys/net/ipv4/ip_forward
0

#方法二(重启之后自动恢复默认0):
[root@136 ~]# sysctl -w net.ipv4.ip_forward=1
[root@136 ~]# cat /proc/sys/net/ipv4/ip_forward
1
//恢复
[root@136 ~]# sysctl -w net.ipv4.ip_forward=0
[root@136 ~]# cat /proc/sys/net/ipv4/ip_forward

#方法三(永久生效):
[root@136 ~]# echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
[root@136 ~]# sysctl -p
[root@136 ~]# cat /proc/sys/net/ipv4/ip_forward
1
//恢复
[root@136 ~]# echo net.ipv4.ip_forward=0 >> /etc/sysctl.conf
[root@136 ~]# sysctl -p
[root@136 ~]# cat /proc/sys/net/ipv4/ip_forward
0

② RS(Real Server)

RS1
手工添加网关为DS内网地址

[root@137 ~]# nmcli connection show 	#查看网卡
NAME   UUID                                  TYPE      DEVICE 
ens33  be90387d-bd23-4ab4-944c-cbd722d5c952  ethernet  ens33

[root@137 ~]# nmcli connection modify ens33 ipv4.gateway 192.168.25.136
[root@137 ~]# nmcli connection up ens33

RS2
手工添加网关为DS内网地址

[root@138 ~]# nmcli connection show 	#查看网卡
NAME   UUID                                  TYPE      DEVICE 
ens33  be90387d-bd23-4ab4-944c-cbd722d5c952  ethernet  ens33

[root@137 ~]# nmcli connection modify ens33 ipv4.gateway 192.168.25.136
[root@137 ~]# nmcli connection up ens33

3)配置LVS

安装LVS工具包

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

ipvsadm参数说明

[root@localhost ~]# ipvsadm –h
-A  添加虚拟服务器
-t  设置群集地址(VIP,Virtual IP-s  指定负载调度算法
-a  添加真实服务器
-d  删除真实服务器
-r  指定真实服务器(Real Server)的地址
-m  使用NAT模式
-g	使用DR模式
-i	使用TUN模式
-w  为节点服务器设置权重,默认为1

手工执行配置添加LVS服务

[root@136 ~]# ipvsadm -A -t 192.168.43.131:80 -s rr
[root@136 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.43.131:80 rr

绑定RS

[root@136 ~]# ipvsadm -a -t 192.168.43.131:80 -r 192.168.25.137:80 -m
[root@136 ~]# ipvsadm -a -t 192.168.43.131:80 -r 192.168.25.138:80 -m
[root@136 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.43.131:80 rr
  -> 192.168.25.137:80            Masq    1      0          0         
  -> 192.168.25.138:80            Masq    1      0          0       

5)Client访问测试(访问DS外网IP地址)

使用for循环访问VIP

[root@139 ~]# for ((i=1;i<=10;i++)); do curl 192.168.43.131; done
web2 test page, ip: 192.168.25.138
web1 test page, ip: 192.168.25.137
web2 test page, ip: 192.168.25.138
web1 test page, ip: 192.168.25.137
web2 test page, ip: 192.168.25.138
web1 test page, ip: 192.168.25.137
web2 test page, ip: 192.168.25.138
web1 test page, ip: 192.168.25.137
web2 test page, ip: 192.168.25.138
web1 test page, ip: 192.168.25.137

#可以清晰看出每一个RS轮流被访问

DS上查看

[root@136 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.43.131:80 rr
  -> 192.168.25.137:80            Masq    1      0          5         
  -> 192.168.25.138:80            Masq    1      0          5     

# 可以清晰看出末尾平均每个RS都被访问了5

你可能感兴趣的:(centos,服务器,LVS,运维,linux)