LVS负载均衡群集

群集

  • 负载均衡群集
    提高应用程序或服务的访问流量,网络设备链路也常用负载均衡技术,如思科以太网通道,华为的聚合链路
  • 高可用-故障转移群集-故障冗余群集-服务器群集-热备群集(思科:hsrp)
    指定的服务或服务器进行热备份,保障可用性,用于解决架构中单点故障和重要服务器的热备份
  • 高性能
    将加入群集的多个节点服务器的硬件资源进行整合。如CPU、内存。共同运算一个应用程序。

负载均衡群集架构

  • 群集调度器
    接收客户端的访问请求,查询调度规则表,向节点服务器转发请求,是链接客户端和节点服务器的接口
  • 节点服务器池
    接收调度器发送的访问请求,处理请求,返回数据的应用程序服务器
  • 共享存储
    给节点服务器提供存储服务,统一数据
    在这里插入图片描述

概述

Linux Virtual Server的简写,意即 Linux虚拟服务器,是一个虚拟的服务器集群系统。我国章文嵩博士在1998年五月创建,默认编译为ip_vs内核模块,而在linux kernel的2.6版本之后kernel是直接支持ipvs的。 优势:(LVS承受负载能力高、稳定、占用服务器资源小) 缺点:适配场景配置较麻烦、不支持节点的健康检查机制
(LVS中国文档地址)
官网
Linux服务器集群系统(一)

工作模式

☑ NAT模式:负载调度器作为网关使用,配置简单,但不实用(服务器节点使用私有IP地址,隐蔽性高。但是负载调度器是整个架构的瓶颈。安全性高于其他两种方式~)
☑ TUN模式:负载调度器与节点都在公网中(IP隧道模式:采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点服务器具有独立的公网IP地址,通过专用IP隧道与负载互通
☑ DR模式:负载调度器不做网关,与节点服务器在同一个网络中(直接路由:采用半开放式的网络结构,各节点服务器并不是分散在各地。负载与各节点通过本地网络连接,性能最高)

扩展

LVS结构和工作原理
LVS由前端的负载均衡器(Load Balance,LB)和后端的真实服务器(Real Server,RS)群组成的。RS中间可以通过局域网或广域网来连接。LVS的这种结构是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供服务器的RS群。当用户的请求发往虚拟服务器时,LB将会根据设定的包转发策略和负载均衡调度算法将用户请求转发给RS。然后RS根据请求内容将对应的请求结果返回给客户,同请求包一样,应答包的返回方式也与包转发策略有关。

LVS的包转发策略(基本为三种)
1)NAT(Network Address Translation)模式:实现目标地址和目标端口的转发;当客户端发送一个请求到VIP中,然后LVS收到数据包之后,根据调度策略选择一个RIP(其中,LB将请求包中的虚拟服务器中的ip转换为选定的RIP,并转发给RS);RS将应答包发送给LB,LB将应答请求中的RIP转换为VIP,回送给客户端。
客户端向VIP发送请求,进行的是将目的地址VIP地址为转化为RIP;RS响应客户端请求时,进行的是源地址为RIP的转换成VIP

2)IP隧道(IP Tunneling)模式:当LB接收到用户请求包之后,根据IP隧道协议封装请求包,然后传送给某一个特定的RS,RS解析出请求的信息,直接将应答信息传送给用户。此时,要求LB和RS都支持IP隧道协议。

3)DR(Direct Routing)模式:实现的是MAC地址的转换;LB受到数据包之后,将请求包中的MAC地址转换为某一选定RS中目标地址的MAC地址后转发出去,RS受到请求包之后,可直接将应答内容传送给客户端。但此时要求LB和RS在局域网内,且LB和RS群共享一个虚拟IP。
在这里插入图片描述

三种模式对比

NAT模式IP TUN模式DR模式
对服务器要求任何操作系统均支持必须支持IP隧道协议,目前只有Linux支持支持虚拟网卡,且可以禁用ARP响应
网络要求局域网局域网或广域网局域网
支持的节点数10~20个,视Director处理能力而定可以支持到100个节点可以支持到100个节点
安全性较高,可隐藏real server较差,real server 容易暴露较差,real server 容易暴露
IP要求仅需要一个合法IP地址作为VIP除VIP外,每个服务器需要拥有合法IP地址可以直接路由至客户端除VIP外,每个服务器需要拥有合法IP地址可以直接路由至客户端
拓展性很好
特点地址转换封装IP修改MAC地址

LVS负载调度算法

静态:
1、轮询rr:将请求按顺序依次分配给各个web节点;
2、加权轮询wrr:根据web服务器的处理能力,动态调整权重,将请求按照各节点的负载情况进行顺序分配;
3、目标地址散列调度dh:根据请求的目标IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器。若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空;
4、源地址hash:源地址散列”调度算法根据请求的源IP地址,作为散列键(HashKey)从静态分配的散列表找出对应的服务器。若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空

动态
1、最小连接Lc:根据web服务器的连接数量,将请求分配给web节点服务器
2、加权最小连接WLC:根据web服务器的处理能力,动态调整权重,将请求按照各节点的连接数量进行分配,默认;
3、最短延迟调度SED:在WLC基础上改进, Overhead=(ACTIVE+1)*256/加权,不再考虑非
活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是为了考虑加权的时候,非活动连接过多缺陷:当权限过大的时候,会倒置空闲服务器一直处于无连接状态。
4、永不排队/最少队列调度NQ:无需队列。
5、基于局部性的最少连接LBLC:调度算法是针对目标IP地址的负载均衡。
6、带复制的基于局部性最少连接LBLCR:调度算法如上!但它与LBLC算法的不同之处是它要维护从一个目标IP地址到“一组服务器”的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。

LVS-NAT模式工作原理

(第1步)、 client发送 request到LVS的VIP上;
(第2步)、VIP根据负载算法选择一个节点服务器web,并记录连接信息到hash表中,然后修改 client的request的目的IP地址为节点服务器的地址,将请求发给节点服务器;
(第3步)、节点服务器收到 request 包后,发现目的IP是自己的IP,于是处理请求,然后发送 reply 给LVS;
(第4步)、LVS收到 reply 包后,修改 reply 包的源地址为VIP,发送给 client;
(第5步)、 client收到来自LVS发送的数据包;
LVS-NAT模式主要是将客户端发送过来的包目标地址更改为后端RIP的IP,主要把三层的信息做了更改其他都不变!此配置下后端RIP不需要做任何配置,但必须保证RIP的网关必须为与RIP相连的DIR接口IP,因为LVS-NAT主要用到DNAT和SNAT原理。

VIP:虚拟IP,客户机访问的IP
RIP:服务器真实IP

NAT模式优缺点

✔ 1.LB负载均衡调度器有比较大的瓶颈。
✔ 2.只需要在LB上配置一个公网IP地址就可以了。
✔ 3.LB之间暴漏在公网中,安全性低。★
✔ 4.每台内部的节点服务器的网关地址必须是调度器LB的内网地址。
✔ 5.NAT模式支持对IP地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。

集群服务管理

ipvsadm是一个工具,同时它也是一条命令,用于管理LVS的策略规则。

ipvsadm -A|E -t|u|f <集群服务地址> [-s <调度算法>] [-p <超时时间>] [-M <掩码>] [-b <标志>]
ipvsadm -D -t|u|f <集群服务地址>
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f <集群服务地址> -r <真实服务器地址> [选项]
ipvsadm -d -t|u|f <集群服务地址> -r <真实服务器地址>
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f <集群服务地址>]
ipvsadm --set <超时时间>
ipvsadm --start-daemon <主或备> [--mcast-interface <组播接口>] [--syncid <SID>]
ipvsadm --stop-daemon <主或备>
ipvsadm -h

 --add-service     -A        添加一个集群服务,需要使用选项
 --edit-service    -E        编辑一个集群服务,需要使用选项
 --delete-service  -D        删除指定集群服务,需要使用选项
 --clear           -C        删除所有集群服务,包括真实服务器转发策略规则
 --restore         -R        从标准输入中恢复策略规则
 --save            -S        保存策略规则到标准输出
 --add-server      -a        添加一个真实服务器,需要使用选项
 --edit-server     -e        编辑一个真实服务器,需要使用选项
 --delete-server   -d        删除一个真实服务器,需要使用选项
 --list            -L|-l     查看集群服务列表,包括真实服务器转发策略规则
 --zero            -Z        计数器清零。清除连接数、包转发等数量统计信息
 --set <超时时间>            设置TCP、TCPFIN(TCP关闭连接状态)、UDP连接超时时间,用于
                             会话保持。一般情况下TCP和UDP超时时间保持默认就好,TCPFIN
                             可以根据情况设定,指定它则用户请求连接关闭,该连接则会变
                             为非活跃(InActive)空闲等待状态,在空闲等待时间内,如果
                             来自同一源IP的请求,则还会转发给后端的同一台真实服务器上
 --start-daemon              开启连接同步守护进程。在选项后面指定自己是Master(主)还
                             是backup(备),主负载调度器会同步所有策略及连接状态到备
                             负载调度器,当主故障,备可以接替其工作
 --stop-daemon               停止连接同步守护进程
 --help            -h        显示帮助信息

部署

部署LVS-NAT模式群集

配置
两块网卡:

ens33 内网 vmnet3:192.168.6.20
ens37 外网 vmnet1:192.168.7.20

开启路由转发

vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1

sysctl -p
再确认下网卡的IP地址

添加模块

modprobe ip_vs			//添加ip_vs到系统内核
lsmod | grep ip_vs		//查看内核模块

安装ipvsadm管理模块

yum -y install ipvsadm

创建群集

ipvsadm -ln		//查看群集规则列表

ipvsadm -A -t 192.168.7.20:80 -s rr
-A:创建群集
-C:清除策略
-D:删除群集
-t:群集IP:端口号                   群集IP是群集提供给客户端访问,用于接收客户端访问请求的IP地址。
-s:调度规则
	rr:round robin 轮询调度     【给每个节点服务器发送一个访问请求,不判断节点服务器的资源占用状态】            round:圆形的,环绕      weighted:加权的,加重的
	wrr:weighted round robin 加权轮询调度,根据节点的性能进行轮询分配【性能包括硬件配置和使用率】           least:最小的            connections:连接,联系
	lc:least connections 最少连接,根据节点的最小连接数进行分配访问请求
	wlc:weighted least  connections 加权最少连接数,根据节点的性能和最少连接数进行分配访问请求

添加节点服务器
ipvsadm -a -t 192.168.7.20:80 -r 192.168.6.30:80 -m -w 1
ipvsadm -a -t 192.168.7.20:80 -r 192.168.6.50:80 -m -w 1
-a:添加节点服务器
-d:删除节点服务器
-r:节点服务器IP:端口号
-m:指定工作模式为NAT
-i:指定工作模式为TUN
-g:指定工作模式为DR
-w:宽度、优先级、权重。优先级相同时,按照列表顺序发送访问请求;优先级高的先获得访问请求。

ipvsadm-save 		//保存规则列表(永久保存LVS规则:ipvsadm -S)
ipvsadm -ln                                    //查看规则列表(ipvsadm -L -n)
ipvsadm -lnc		//查看数据包转发列表(查看调度列表)
ipvsadm -d -t 192.168.7.20:80 -r 192.168.6.30:80                                //删除节点服务器(注:删除节点时,不需要输入后面的工作类型和权重)
ipvsadm -D -t 192.168.7.20:80                                                                //删除群集时,只需要指定群集IP和端口号,不需要输入算法。

客户机访问192.168.7.20,按F5来回刷新即可(注意http需要关闭keepalive)

部署LVS-DR模式部署

【1】构建LVS-DR模式的群集时要解决的问题

1).群集IP需要配置在调度器上,双IP地址模式,【群集IP接收客户端的访问请求】【通讯IP用于系统管理和连接节点服务器】
2).调度器给节点服务器发送数据包时,不能重新封装数据包中的IP地址,只能重新封装目标MAC地址。 》》》通过sysctl内核响应参数中,关闭send_redirects参数解决。
3).节点服务器收到调度器发送的数据包时,不能丢弃数据包(因为目标地址没有被重封装)。
4).节点服务器配置群集IP后会与调度器群集IP冲突。 》》》通过在节点服务器的lo接口上配置群集ip方式解决。
5).节点服务器将群集IP设置为本地回环地址后,无法处理数据包【给客户端回应的数据包需要用本地回环地址封装】(设置为通讯ip即可)

【2】DR模式的工作流程

✔ 1.客户端发送访问请求给网关,封装的目标IP地址是群集IP。
✔ 2.由调度器接收访问请求,配置数据包转发封装参数,不重新封装目标IP地址。
✔ 3.调度器根据调度规则,将数据包转发给节点服务器。
✔ 4.节点服务器配置本地回环地址为群集ip,并设置arp不响应的参数。
✔ 5.节点服务器收到数据包后,进行处理并直接给客户端发送结果。
优缺点:减轻了调度器的工作压力,调度器只负责调度访问请求,由节点直接回复。缺点:每个节点服务器都需要进行配置,部署步骤比较繁琐。
总结:DR模式(直连路由模式:Virtual Server via Direct Routing)是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样。

【3】DR模式的优缺点

DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。DR模式是互联网使用比较多的一种模式。 RS:后端节点服务器(例如Web服务器)

【4】LVS-DR模式实例

实验环境:

一台客户端(ens33:192.168.2.2 gataway:192.168.2.1)
一台lvs调度器(ens:33 192.168.2.1 ens33:0 192.1681.1 )
两台web服务器(web1: ens33:192.168.2.3 lo:0 192.168.1.1 ens33:192.168.2.4 lo:0 192.168.1.1)

配置IP
# 虚拟IP:
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0

lo:0
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.1.1
NETMASK=255.255.255.255
ONBOOT=yes
NAME=web1

cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.1.1
NETMASK=255.255.255.255
ONBOOT=yes
NAME=web2
lvs上调整响应参数
echo "net.ipv4.conf.all.send_redirects = 0" >>/etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects = 0" >>/etc/sysctl.conf
echo "net.ipv4.conf.ens33.send_redirects = 0" >>/etc/sysctl.conf
lvs上安装ipvsadm
modprobe ip_vs
yum -y install ipvsadm  
ipvsadm -A -t 192.168.1.1:80 -s rr   #将192.168.1.1:80端口作为转换端口
ipvsadm -a -t 192.168.1.1:80 -r 192.168.2.3 -g -w 1   #2.3转换为1.1
ipvsadm -a -t 192.168.1.1:80 -r 192.168.2.4 -g -w 1   #2.4转换为1.1
ipvsadm-save
安装web服务器

web1

yum -y install httpd   
echo "welcome to 192.168.2.3 web server" > /var/www/html/index.html
vim /etc/httpd/conf/httpd.conf 
keepalive off  #关闭页面保持
systemctl  restart  httpd

web2

yum -y install httpd   
echo "welcome to 192.168.2.4 web server" > /var/www/html/index.html
vim /etc/httpd/conf/httpd.conf 
keepalive off  #关闭页面保持
systemctl  restart  httpd
在web服务器添加路由
route add -host 192.168.1.1 dev lo:0  						  #将lo:0作为发送路由   临时的
echo "route add -host 192.168.1.1 dev lo:0" >> /etc/rc.local  #永久的
web上调整响应参数
echo "net.ipv4.conf.all.arp_ignore = 1" >>/etc/sysctl.conf
echo "net.ipv4.conf.all.arp_announce = 2" >>/etc/sysctl.conf
echo "net.ipv4.conf.default.arp_ignore = 1" >>/etc/sysctl.conf
echo "net.ipv4.conf.default.arp_announce = 2" >>/etc/sysctl.conf
echo "net.ipv4.conf.lo.arp_ignore = 1" >>/etc/sysctl.conf
echo "net.ipv4.conf.lo.arp_announce = 2" >>/etc/sysctl.conf
sysctl -p
验证

1、客户端访问:
[root@localhost ~]# http://192.168.1.1/
2、在LVS上查看:
[root@localhost ~]# ipvsadm -Lnc

扩展:

showmount命令 查询“mountd”守护进程,以显示NFS服务器加载的信息。
语法

showmount (选项) (参数)

选项

-d:仅显示已被NFS客户端加载的目录;
-e:显示NFS服务器上所有的共享目录;

参数

NFS服务器:指定NFS服务器的ip地址或者主机名。

举例:

显示指定NFS服务器连接NFS客户端的信息:	# showmount 192.168.1.1 #此ip为nfs服务器的
显示输出目录列表:                     # showmount -e
显示指定NFS服务器输出目录列表(也称为共享目录列表):# showmount -e 192.168.1.1
显示被挂载的共享目录:    			    # showmount -d
显示客户端信息和共享目录:              # showmount -a
显示指定NFS服务器的客户端信息和共享目录: # showmount -a 192.168.1.1

You can be stupid, but I can’t!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星光落入你灰蒙蒙的眼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值