一 . LB集群简介


LB:Load Balancing:负载均衡集群


负载均衡集群中有一个分发器或者叫调度器,我们将其称之为Director,它处在多台服务器的上面,分发器根据内部锁定义的规则或调度方式从下面的服务器群中选择一个以此来响应客户端发送的请求。


常见的主流负载均衡器有LVS , Nginx , HAProxy . 在这里主要介绍的是LVS的使用 .


 二 . LVS的介绍与使用


LVS概述


LVS(Linux  Virtual  Server) : 意为Linux虚拟服务器 , 也叫做分发器或调度器director ; 由中国的章文嵩博士开发 , 它不是正真提供服务 , 但它能接受客户的访问 , 为整个集群提供了一个唯一的入口 , 虚拟服务器再和真实服务器(Real Server)进行通信 ;因LVS是Linux内核的一部分 , 所以性能很高.


LVS优点和缺点


   1、抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低
   2、工作在网络4层(传输层),通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生。
   3、稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)
   4、应用范围比较广,可以对所有应用做负载均衡;因为他是通过修改网络数据包中的端口号、IP地址来实现负载均衡的,跟上层应用无直接关系。
   5、不支持正则处理,不能做动静分离。(只有应用层(即七层)的负载均衡才支持正则处理)
   6、支持负载均衡算法:rr(轮循、轮询)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接)
   7、配置复杂,对网络依赖比较大,稳定性很高。[这里说的配置复杂是跟nginx的负载均衡来做对比]


 三 . LVS-NAT模式


首先我们得了解LVS相关术语(牢记):


DS(或DR) :Director Server调度服务器。指的是前端负载均衡器节点。(相当于餐厅服务员)
RS :Real Server。后端真实的工作服务器。(相当于餐厅的厨师)
VIP:Virtual  IP虚拟IP,是指向外部直接面向用户请求,作为用户请求的目标的IP地址。(外网IP地址)
DIP:Director Server IP调度服务器IP,主要用于和内部主机通讯的IP地址。(内网IP地址)
RIP:Real Server IP,后端服务器的IP地址。
CIP:Client IP,客户端的IP地址。


LVS基于NAT地址转换模式原理


image.png


LVS-NAT模式工作流程解析


  1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至Linux内核(kernel)空间的PREROUTING链.(此时报文的源IP为CIP , 目标IP为VIP)

  2. PREROUTING检查发现数据包的目标IP为本机IP , 就会将数据包送至INPUT链  

  3. IPVS(IP Virtual Service)是工作在INPUT链上的 , IPVS比对数据包请求的服务是否为集群服务 , 若是,则修改数据包的目标IP地址为后端服务器的IP , 然后将数据包发送至POSTROUTING链 .(此时的报文源IP为CIP,目标IP为RIP)

  4. POSTROUTING链通过选路 , 将数据包发送给Real Server

  5. Real Server比对发现目标为自己的IP , 开始构建响应报文发回给Director Server .(此时报文的源IP为RIP,目标IP为CIP)

  6. Director Server在响应客户端前 , 此时会将源IP地址修改为自己的VIP地址 , 然后响应给客户端 . (此时报文的源IP为VIP,目标IP为CIP)


由上述流程可以看出 , 客户机发送请求和后端服务器响应请求数据包往返都会经过Director server进行处理 , 所以这也是LVS-NAT模型的缺陷


LVS-NAT模型的特性


   1). RS应该使用私有地址,RS的网关必须指向DIP
   2). DIP和RIP必须在同一个网段内
   3). 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈
   4). 支持端口映射
   5). RS可以使用任意操作系统


LVS-NAT模式的部署实例


实验目标 : 搭建LVS-NAT模式实现客户端访问web服务器时进行负载均衡


实验准备:


3台Centos7系统虚拟机 , IP分别为192.168.11.11 , 192.168.11.12 , 192.168.11.13 , 其中

Director Server (负载均衡器)IP为:192.168.11.11 (注 : 负载均衡器上需要两个网卡 , 因此实验还需在192.168.11.11上添加一块IP为192.168.10.11的网卡来作为VIP地址)

Real  Server(后端web服务器)IP为:192.168.11.12 192.168.11.13

Client(客户机)IP为:192.168.10.1


实验拓扑图:

image.png

整个实验的部署的LVS-NAT网络拓扑图(详细过程):

image.png

部署流程步骤 :


首先部署后端web服务器(Real Server) (192.168.11.12 和 192.168.11.13)

关闭防火墙和selinux

systemctl  stop  firewalld

setenforce  0

安装apache服务

rpm  -q  httpd                                        #查看服务是否安装

yun  install  -y  httpd  curl                    #安装httpd服务

systemctl  restart  httpd                       #启动(重启)httpd服务

echo  node12.com  >  /var/www/html/index.html    #给apache服务设置一个主页 , 内容自定义

curl  127.0.0.1                                          #用curl命令进行本地测试

image.png

image.png

将这两台主机网关(gw)设置为192.168.11.11(Director Server的IP , 不明白可借助上述详细的网络拓扑图)

在这里设置网关有两种方法:

临时修改网关:

route  -n                                                      #查看路由表信息

route  del  default  gw  192.168.11.2         #临时删除默认网关

route  add  default  gw  192.168.11.11      #临时设置默认网关

route  -n                                                      #再次查看路由表信息

永久修改网关:

vim  /etc/sysconfig/network-scripts/ifcfg-ens33 , 修改内容为

GATEWAY=192.168.11.11                           #修改网关为192.168.11.11

systemctl  restart  network                         #重启网络服务

route  -n                                                      #查看修改网关后的路由表信息

image.png

image.png


LVS负载均衡器配置(192.168.11.11)


在node11(192.168.11.11)上检查80端口是否被占用 , 如果被占用就关闭服务(apache/nginx)

lsof  -i:80

确保能访问到后端web服务器的网站

curl  192.168.11.12

curl  192.168.11.13

image.png

保证node11上有两块网卡 , 一块IP为192.168.11.11 , 一块为192.168.10.11

添加一块新的NAT类型的虚拟网卡

image.png

image.png

将物理机的VMnet8IP设置为192.168.10.1 , 网关为192.168.10.11(VIP地址)

image.png


将虚拟机网卡ens37的IP地址设置为192.168.10.11 , vim /etc/sysconfig/network-scripts/ifcfg-ens37如图所示:

image.png

ip a                         #查看地址

image.png

route  -n                                  #查看路由表信息

route  del  default gw  192.168.11.2          #删除网关

route  del  default  gw  192.168.10.2

image.png

配置LVS负载均衡集群服务器信息列表:

yum  install -y  ipvsadm

ipvsadm  -Ln

ipvsadm  -A  -t  192.168.10.11:80  -s  rr

ipvsadm  -a  -t  192.168.10.11:80  -r  192.168.11.12:80  -m

ipvsadm  -a  -t  192.168.10.11:80  -r  192.168.11.13:80  -m

image.png

开启路由转发功能

vim  /etc/sysctl.conf 文件 , 添加内容为: net.ipv4.ip_forward=1

image.png

cat  /proc/sys/net/ipv4/ip_forward            #查看路由转发是否开启 , 为1表示开启

image.png


检测负载均衡:

WIN+R 打开cmd ,检测是否负载均衡搭建成功 , 如下图表示访问成功

image.png

如果出现错误 , 对照网络拓扑图检查IP是否正确:

排错:1.  检查负载均衡器路由转发是否开启

        2 . 后端服务器网关是否为192.168.11.11(临时设置可能会掉)

        3 . 检查负载均衡器IP  a 查看ip信息是否正确