LVS负载均衡:NAT模式的部署

在这里插入图片描述

一、真实服务器配置

后端真实服务器网络的配置,以下配置两台真实服务器都要做。我这边就显示一个了,记住两个都要这样做。

注意:先安装apache,再改网关,不然网关改掉就无法上网了,还安装个毛线啊!

安装apache

安装完成之后,写点区分的内容

[root@localhost ~]# yum -y install httpd
...
[root@localhost ~]# vim /var/www/html/index.html
添加:
server01

网关指向虚拟服务器DIP

真实服务器RS1、RS2
192.168.0.62
192.168.0.63

这两个ip的网卡网关全部指向192.168.0.61,这里就不写了

注意事项:如果你的真实服务器是双网卡或多网卡,那么除了指向虚拟服务器的网卡外,其他所有网卡都不要填写网关。否则,哼哼,你就掉到坑里了。

二、DR-LVS服务器配置

网络的配置

必须添加两个网卡:

  • 网卡1-ens192:配置VIP ,10.5.6.61,这个必须填写网关
  • 网卡1-ens36:配置DIP,192.168.0.61,这个不需要网关和DNS
[root@localhost ~]# ip add
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: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:0d:78:d0 brd ff:ff:ff:ff:ff:ff
    inet 10.5.6.61/24 brd 10.5.6.255 scope global noprefixroute ens192
       valid_lft forever preferred_lft forever
    inet6 fe80::4a3c:3341:9d22:a31f/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::c476:89fb:8042:f372/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:0d:78:da brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.61/24 brd 192.168.0.255 scope global noprefixroute ens36
       valid_lft forever preferred_lft forever
    inet6 fe80::de02:ba10:e7db:8cc2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

上面配置完成之后,先ping一下后端两台正式服务器,看看是否能通信。

[root@localhost ~]# ping 192.168.0.62
PING 192.168.0.62 (192.168.0.62) 56(84) bytes of data.
64 bytes from 192.168.0.62: icmp_seq=1 ttl=64 time=0.261 ms
64 bytes from 192.168.0.62: icmp_seq=2 ttl=64 time=0.258 ms
^C
--- 192.168.0.62 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.258/0.259/0.261/0.016 ms


[root@localhost ~]# ping 192.168.0.63
PING 192.168.0.63 (192.168.0.63) 56(84) bytes of data.
64 bytes from 192.168.0.63: icmp_seq=1 ttl=64 time=0.188 ms
64 bytes from 192.168.0.63: icmp_seq=2 ttl=64 time=0.323 ms
^C
--- 192.168.0.63 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.188/0.255/0.323/0.069 ms

安装ipvsadm

[root@localhost ~]# yum -y install ipvsadm
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包 ipvsadm-1.27-8.el7.x86_64 已安装并且是最新版本
无须任何处理

开启路由转发功能

[root@localhost ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
[root@localhost ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward = 1

[root@localhost ~]# sysctl -p    #让其生效
net.ipv4.ip_forward = 1

加载ip_vs模块

[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

添加服务器节点

开始之前先清空一下

[root@localhost ~]# ipvsadm -C     #清空
[root@localhost ~]# ipvsadm -Ln    #查询,看空了吧
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

开始添加集群

[root@localhost ~]# ipvsadm -A -t 10.5.6.61:80 -s rr
[root@localhost ~]# ipvsadm -a -t 10.5.6.61:80 -r 192.168.0.62:80 -m   
[root@localhost ~]# ipvsadm -a -t 10.5.6.61:80 -r 192.168.0.63:80 -m

注意事项:大写A是添加集群,小写a是添加真实服务器,-t后面永远是VIP,-r是真实服务器

选项注释

  • “-A”:表示添加虚拟服务器
  • “-a”:表示添加真实服务器
  • “-t”:用来指定VIP地址及TCP端口
  • “-r”:用来指定RIP地址及TCP端口
  • “-s”:用来指定负载调度算法——rr(轮询)、wrr(加权轮询)、lc(最少连接)、wlc(加权最少连接)
  • “-m”:表示使用NAT群集模式(是DR模式,是TUN模式)

添加完成后查看一下

[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.5.6.61:80 rr
  -> 192.168.0.62:80              Masq    1      0          0         
  -> 192.168.0.63:80              Masq    1      0          0 

[root@localhost ~]# ipvsadm-save    #保存一下,不然重启就不见了
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.0.62:http -m -w 1
-a -t localhost.localdomain:http -r 192.168.0.63:http -m -w 1

三、验证效果

[root@localhost ~]# curl 10.5.6.61
ser 02
[root@localhost ~]# curl 10.5.6.61
ser 01
[root@localhost ~]# curl 10.5.6.61
ser 02
[root@localhost ~]# curl 10.5.6.61
ser 01
[root@localhost ~]# curl 10.5.6.61
ser 02
[root@localhost ~]# curl 10.5.6.61
ser 01

查看负载均衡的过程

[root@localhost ~]# ipvsadm -Lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:54  TIME_WAIT   10.5.6.61:40166    10.5.6.61:80       192.168.0.62:80
TCP 01:52  TIME_WAIT   10.5.6.61:40164    10.5.6.61:80       192.168.0.63:80
TCP 01:51  TIME_WAIT   10.5.6.61:40160    10.5.6.61:80       192.168.0.63:80
TCP 01:50  TIME_WAIT   10.5.6.61:40158    10.5.6.61:80       192.168.0.62:80
TCP 01:51  TIME_WAIT   10.5.6.61:40162    10.5.6.61:80       192.168.0.62:80 

这条命令可以简单显示,整个负载均衡的过程。这里可以看出,DS使用的源地址中端口是随机的,被放访问的真实服务器。

四、NAT模式的优缺点

优点:相比于DR模式最大的优点,支持更改端口,节省端口。

缺点:扩展性有限。当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。假使TCP包的平均长度是536字节的话,平均包再生延迟时间大约为60us(在Pentium处理器上计算的,采用更快的处理器将使得这个延迟时间变短),负载均衡器的最大容许能力为8.93M/s,假定每台物理服务器的平台容许能力为400K/s来计算,负责均衡器能为22台物理服务器计算。

猜你喜欢

转载自blog.csdn.net/annita2019/article/details/124502618