LVS负载均衡企业之NAT模式实战

一、LVS负载均衡概念

(1)LVS(全称Linux Virtual Server),设计用于缓解高并发访问的软件,1998年由章文嵩博士开发的,是国内最早的一款开源免费的软件服务之一,得到企业的广泛采用
(2)互联网可伸缩架构(服务器集群),都会具备相同的特点,可扩展、统一访问入口、调度器(负载均衡器),在所有的调度器技术中,基于IP负载调度效率是最高的,LVS就是基于IP负载调度的一款调度软件。
(3)LVS负载均衡技术中有三种均衡转发实现方式:

  1. NAT方式
  2. DR方式
  3. TUN方式

二、LVS负载均衡之NAT方式

1、工作过程图解:

在这里插入图片描述文字描述:
(1)用户通过互联网向LVS负载服务器的VIP发起请求,LVS服务器收到用户的请求之后,将用户请求的报文中的目标IP修改为后端Realserver的IP,同时修改报文中目标端口为后端Realserver的对应端口,最终将修改(封装)完成的报文发送给Realserver服务器。
(2)Realserver服务器接收LVS发送的请求,并且处理请求,将处理的数据发送给目标(LVS),LVS服务器接收到数据之后,会读取之前记录修改的IP会话信息,将数据包的目标IP改成用户的IP,将请求发送给用户。

2、通过上述其工作过程,总结一下NAT方式的特点

  1. 中间中的LVS既要和外网相连,又有自己的内网,所以我们的LVS服务器需要一块外网网卡和一块内网网卡
  2. 用户的请求和服务器的响应回复都需要经过LVS服务器,所以LVS的压力很大,会成为服务器集群的瓶颈
  3. LVS服务器需要开启路由转发,即开启路由转发功能,就相当于变成了一台路由器,可以寻路。echo 1 > /proc/sys/net/ipv4/ip_forward;
  4. 节省公网IP
  5. 所有后端的RealServer服务器必须将自己的网关设置为LVS服务器的内网ip

三、LVS负载均衡之NAT方式配置流程详解

1、实验环境:
一台LVS服务器:172.16.193.200
两台Nginx服务器:172.16.193.201、172.16.193.202
172.16.193.100为公网网卡的ip地址(VIP)

2、实验目的:LVS服务器在前端实现对两台Nginx的负载均衡

3、实验步骤:

(1)查看ip_vs模块是否加载
lsmod |grep ip_vs
#若没有加载则采用下面的命令进行加载
modprobe ip_vs

注:ip_vs模块是集成在linux内核中的,所以不需要下载,只需要加载即可

(2)关闭三台服务器的防火墙和SElinux
(3)下载ipvsadm软件

注:此工具是用于对ip_vs模块进行管理的,即是用于配置ip_vs的工具

yum install ipvsadm -y
(4)配置ip_vs模块及ipvsadm命令参数详解
首先配置须知:我们的网卡应该有两块,一个公网网卡,一个内网网卡,我们linux虚拟机中默认存在一个ens33的网卡,这个网卡是内网网卡。我们还需要创建一个公网网卡,可以用桥接模式,整一个和内网服务器不在一个网段的ip地址。因为我这个电脑是苹果电脑,采用桥接我没整出来,所以我这里就采用和内网服务器在同一网段的模式做。大家把它看成公网ip即可。
注意:网卡不一样,LVS服务器配置的网关的ip地址需要注意一下。

直接在终端输入以下命令:

#添加VIP虚拟服务器
ipvsadm -A -t 172.16.193.100:80 -s wrr
#添加后端服务器193.201
ipvsadm -a -t 172.16.193.100:80 -r 172.16.193.201:80 -m -w 100
#添加后端服务器193.202
ipvsadm -a -t 172.16.193.100:80 -r 172.16.193.202:80 -m -w 50
ipvsadm -L -n 查看ip_vs模块配置的所有规则

在这里插入图片描述保存ipvs的配置到ipvs.conf文件中,方便下次使用:
在这里插入图片描述
ipvsadm命令配置参数说明:

-A						增加一台虚拟服务器VIP地址;
-t						虚拟服务器提供的是tcp服务;
-s						使用的调度算法;
-a						在虚拟服务器中增加一台后端真实服务器;
-r						指定真实服务器地址;
-w						后端真实服务器的权重;
-m						设置当前转发方式为NAT模式;-g为直接路由模式;-i  模式为隧道模式。
(5)添加公网网卡

注:关机添加网卡!
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述这样就添加好了网卡。
开机,ifconfig查看添加的网卡的名称
在这里插入图片描述发现自己添加的网卡名称为ens37
然后编辑网卡配置文件

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37

vim ifcfg-ens37
#写如以下内容
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
DEVICE="ens37"
ONBOOT="yes"
IPADDR=172.16.193.100
NETMASK=255.255.255.0
GATEWAY=172.16.193.2  #这里的网关需要填你添加的网卡的ip地址

systemctl restart network
#再ifconfig查看是否生效即可!
(6)打开LVS服务器的路由转发功能
find / -name "*ip_forward*"
echo "1" > /proc/sys/net/ipv4/ip_forward

在这里插入图片描述

(7)将后端服务器(即两台Nginx服务器)的网关设置为LVS服务器的内网网卡ip

两台Nginx服务器都要执行下面的动作:

vim /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述改这个GATEWAY参数值为LVS服务器的内网网卡ip(即为172.16.193.200)

systemctl restart network
(8)分别给两台Nginx服务器做标记
echo "1" > /usr/local/nginx/html/index.html
echo "2" > /usr/local/nginx/html/index.html
(9)curl测试是否实现了负载均衡

在这里插入图片描述访问公网ip,确实访问到了后端的Nginx服务器,且我们最开始采用的是加权轮询调度算法,也确实是按比例分配请求的。所以实验成功!

发布了162 篇原创文章 · 获赞 142 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44571270/article/details/104206846