你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

LVS群集 LVS-DR架构 LVS-TUN模式

2021-11-10 9:08:47

1、群集

群集,集群,cluster :多台服务器构建服务节点,安装配置相同的服务,能够给用户访问提供更高速的响应能力,更多用户访问的负载能力,服务器或服务的故障冗余能力。


2、群集类型

负载平衡群集(负载均衡群集 Load Balancer):提供高速响应和高并发访问负载

如:以太网通道----聚合链路


高可用群集(High Available):故障冗余群集,故障转移群集,构建主备设备,当主设备出现故障时,备用设备在不间断服务的状态下接替主设备的工作。

如:HSRP   VRRP  

高性能运算群集(High Performance Computer),运算群集,将多台服务器的CPU,内容进行整合,共同运算一个或多个应用进程。

如:3Dmax  

3、负载均衡群集结构

1.负载均衡调度器:接收客户端的访问请求,通过调度规则表,将访问请求转发给响应的节点服务器。收到节点服务器的恢复数据后,将数据发送给客户端。

2.节点服务器:安装相应的服务,接收调度器转发的访问请求,进行请求处理的服务器。

3.共享存储设备:为实现多台节点服务器之间的数据统一性和完整性,为节点服务器提供共享存储目录。


4、负载均衡群集的工作模式

1.NAT模式:结构部署简单,但在生产环境中使用率比较低。配置调度器当做网关使用,收到客户端的访问请求后,通过目标地址转换的方式,发送给节点服务器。

2.DR模式:内部路由转发模式,调度器不是网关,与节点服务器在同一层面。由调度器接收请求,转发给节点服务器,由节点服务器直接给用户返回数据。

3.TUN模式:隧道模式,调度器,节点服务器,客户端都在公网上,调度器接收到客户端访问请求后,有调度器与节点服务器连接隧道,在隧道中转发请求和回应数据。在现在的生产环境中应用比较多。


5、LVS群集

1.LVS : linux  virtual  server  linux虚拟服务器


第14.2章  构建NAT模式的LVS群集

1、LVS的调度算法

1.轮询(round robin):RR,调度器将客户端的访问请求,按照添加节点服务器的顺序或,按照节点服务器的优先级,轮换传递。使每台节点服务器都能收到数量相同的访问请求。

2.加权轮询(weighted round robin):WRR,加权添加额外的分配权。调度器统计节点服务器的硬件资源使用率,给使用率高的服务器节点少分配访问请求,给使用率低的服务器节点多分配访问请求。

3.最少连接(Least Connections):LC,调度器记录节点服务器的并发连接数,将客户端的访问请求发送给并发连接数最少的节点服务器。

4.加权最少连接(weighted Least Connections):WLC,调度器除了统计节点服务器的并发链接数,还要统计硬件资源使用率,如果某个节点服务器的硬件资源使用率比较高,但并发链接数低,也不会给该节点发送访问请求。适用于多台服务器硬件配置不同的环境。


2、LVS-NAT群集模式的工作原理

1.客户端给LB群集服务器的公网接口发送访问请求。
2.LB服务器收到请求后,通过查看调度列表,通过调度算法确认目标节点服务器。
3.LB服务器修改请求数据包中的目标IP地址为节点服务器IP地址。
4.节点服务器收到请求后,进行相应,并给客户端返数据。
5.LB服务器收到节点服务器的响应数据包后,修改源IP地址为LB公网接口地址,并发送给客户端。

3、LVS-NAT群集模式的优缺点

1.LB服务器有比较大的瓶颈,因为LB服务器除了要进行调度计算为,还要进行地址转换计算。
2.LB服务器的配置比较简单,只需要配置公网ip与内网ip。
3.LB服务器会直接暴露在公网中,安全性比较低。
4.所有节点服务器配置的网关地址为LB服务器的内网IP地址。
5.LB服务器可以对IP地址和端口号进行转换。


4、部署LVS-NAT群集架构

1.添加内核模块

modprobe ip_vs        #添加内核模块  ip_vs IP地址虚拟服务器

lsmod |grep ip_vs    #查看内核模块


2.启用路由转发功能

[root@localhost ~]# vim /etc/sysctl.conf 
添加:
net.ipv4.ip_forward = 1


[root@localhost ~]# sysctl -p

3.安装ipvsadm管理工具

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

5、配置管理调度规则

1.创建群集调度器

[root@localhost ~]# ipvsadm -A -t 1.1.1.1:80 -s rr        //创建群集调度器

参数说明:
-A   添加调度器
-D   删除调度器
-C   清除所有策略
-t   指定群集IP与端口号,一般使用公网接口地址或链接客户端的网络接口地址。
-s   指定调度算法,rr  wrr  lc  wlc 四种调度算法


2.添加群集中的节点服务器

[root@localhost ~]# ipvsadm -a -t 2.2.2.1:80 -r 192.168.1.10:80 -m -w 1        //添加节点1
[root@localhost ~]# ipvsadm -a -t 2.2.2.1:80 -r 192.168.1.20:80 -m -w 1        //添加节点2

参数说明:
-a    添加节点服务器
-d    删除节点服务器
-t    指定群集IP和端口号
-r    指定节点服务器IP和端口号
-m    LVS工作模式为NAT模式
-g    LVS工作模式为DR模式
-i    LVS工作模式为TUN模式
-w    优先级,数字越大,优先级越高


3.保存策略

ipvsadm-save

4.查看LVS的信息

ipvsadm  -ln    #查看调度规则列表(规则)

ipvsadm  -lnc   #查看调度信息表(过程)


6、安装节点服务器

yum -y install httpd

配置httpd.conf,关闭keepalive

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
添加:
keepalive off


7、客户端访问测试

客户端访问1.1.1.1,按F5刷新测试。


1、LVS-DR
调度器通过访问路由表,进行内部的数据转发,调度器与节点服务器在同一网络层面

1.如何使调度器接收客户端访问请求,而其他节点服务器不接受?
2.如果使调度器在转发数据包时,不重新封装目标IP地址,只封装目标MAC地址?
3.节点服务器如何能够接收调度器转发的,未重封装的数据包?
4.如何解决节点服务器的群集ip与调度器群集iP的冲突?
5.如何解决节点服务器本地回环地址接收数据包与封装数据包的问题?


2、DR模式的工作流程

1.客户端发送访问请求给网关,封装的目标IP地址是群集IP。
2.由调度器接收访问请求,配置数据包转发封装参数,不重新封装目标IP地址。
3.调度器根据调度规则,将数据包转发给节点服务器。
4.节点服务器配置本地回环地址为群集ip,并设置apr不响应的参数。
5.节点服务器收到数据包后,进行处理并直接给客户端发送结果。


优缺点:减轻了调度器的工作压力,调度器只负责调度访问请求,由节点直接回复。缺点:每个节点服务器都需要进行配置,部署步骤比较繁琐。


3、配置部署LVS-DR

安装配置LVS服务器:

1.添加子接口IP地址:192.168.10.254
cd /etc/sysconfig/network-scripts/

vim ifcfg-ens33:1
修改:
DEVICE=ens33:1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.10.254
NETMASK=255.255.255.0

重启服务:
systemctl restart network

2.配置内核响应参数

vim  /etc/sysctl.conf
添加:(对转发的数据不重新封装)
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0        #ens33为配置了群集IP的接口

执行参数:
sysctl -p

3.安装ipvsadm工具

modprobe ip_vs

yum -y install ipvsadm

4.配置群集调度器

[root@localhost ~]# ipvsadm -A -t 192.168.10.254:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.10.254:80 -r 192.168.10.2:80 -g -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.10.254:80 -r 192.168.10.3:80 -g -w 1
[root@localhost ~]# ipvsadm-save


4、web节点服务器配置

1.配置本地回环子接口地址
cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:1
vim ifcfg-lo:1
修改:
DEVICE=lo:1
IPADDR=192.168.10.254
NETMASK=255.255.255.255
ONBOOT=yes
NAME=web1

重启服务:
systemctl restart network


2.修改内核参数

 vim /etc/sysctl.conf
添加:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2


[root@localhost ~]# sysctl -p


arp_ignore - INTEGER
0:默认值,表示可使用本地任意接口上配置的任意地址进行arp应答;
1:仅当请求的目标IP配置在本地主机接受到报文的接口上时,才给予响应;
2:仅当目的IP配置在收到报文的接口上,且arp请求的源IP和该接口同一网段,才响应arp请求;
3:如ARP请求的IP作用域是主机则不响应,如果作用域是全局或者链路则响应ARP
4-7:保留
8:不应答所有本地IP

arp_announce - INTEGER
0:默认值,允许使用本机上所有接口的IP作ARP通告。
1:尽量避免使用本地IP向非本网卡直接连接网络进行ARP通告。
2:必须避免使用本地IP向非本网卡直接连接网络进行ARP通告。


3.配置本地路由
目的:将收到的访问请求,强行通过路由表转发给本地回环地址。

[root@localhost /]# route add -host 192.168.10.254 dev lo:1

小问题:路由表条目是临时添加的,重新启动网络服务或系统后,需要重新添加路由表条目。

解决方法:将添加路由表条目的命令添加到/etc/rc.local文件中,启动系统时自动运行。
      重新修改network服务脚本,添加命令行到脚本中。

[root@localhost /]# echo  "route add -host 192.168.10.254 dev lo:1" >> /etc/rc.local

[root@localhost /]# vim /etc/rc.d/init.d/network 
在start)的最后一行添加:
route add -host 192.168.10.254 dev lo:1


4.安装httpd服务,添加测试页面


5、添加华为防火墙,发布群集ip到公网

1.配置防火墙接口:

<SRG>sys
[SRG]undo info en
[SRG]int g0/0/1
[SRG-GigabitEthernet0/0/1]ip add 1.1.1.1 24
[SRG-GigabitEthernet0/0/1]undo shut
[SRG-GigabitEthernet0/0/1]int g0/0/2
[SRG-GigabitEthernet0/0/2]ip add 192.168.10.253 24
[SRG-GigabitEthernet0/0/2]undo shut
[SRG-GigabitEthernet0/0/2]quit

2.安全区域配置

[SRG]firewall zone trust 
[SRG-zone-trust]add int g0/0/2
[SRG-zone-trust]firewall zone untrust
[SRG-zone-untrust]add int g0/0/1
[SRG-zone-untrust]quit

[SRG]firewall packet-filter default permit all

3.添加目标地址转换策略

[SRG]nat server protocol tcp global interface g0/0/1 www inside 192.168.10.254 www

1、LVS-TUN模式工作原理

1.客户端发送访问请求给LB服务器。
2.LB服务器对数据包进行隧道协议头部封装。并通过调度表连接节点服务器。
3.LB服务器与节点服务器建立隧道,将封装后的数据传输给节点服务器。
4.节点服务器收到后,进行隧道协议的解封装,还原原始数据。
5.节点服务器对客户端的请求进行处理,并直接给客户端返回结果。


2、LVS-TUN模式的优缺点

优点:    
1.节省LB服务器的工作量,支持高并发处理,但是并发处理速度没有DR模式快。
2.可以在公网上进行不同地域的节点服务器连接。

缺点:
1.TUN模式的所有节点服务器都需要有合法的公网IP。
2.需要所有的服务器支持“IP Tunneling”(IP Encapsulation)协议    

3、配置部署LVS-TUN调度器配置

1.添加ip_vs模块

modprobe ip_vs

2.安装ipvsadm管理工具

yum -y install ipvsadm

3.启用包转发功能

vim /etc/sysctl.conf
添加:
net.ipv4.ip_forward = 1

启用参数:

sysctl -p

4.配置群集调度

[root@localhost ~]# ipvsadm -A -t 192.168.10.1:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.10.1:80 -r 192.168.10.2:80 -i
[root@localhost ~]# ipvsadm -a -t 192.168.10.1:80 -r 192.168.10.3:80 -i
[root@localhost ~]# ipvsadm-save


4、LVS-TUN节点配置

1.加载ipip模块

modeprob  ipip

2.配置tunl0接口的IP地址,ip地址为群集地址

ifconfig  tunl0  192.168.10.1 netmask 255.255.255.255

查看地址:
ip add

3.编辑内核选项

vim  /etc/sysctl.conf
添加:
net.ipv4.conf.tunl0.arp_ignore=1    #设置隧道接口上的ARP接收规则
net.ipv4.conf.tunl0.arp_announce=2    #设置隧道接口上的ARP接收规则
net.ipv4.conf.all.arp_ignore=1        #设置所有arp接收规则
net.ipv4.conf.all.arp_announce=2    #设置所有arp发送规则
net.ipv4.conf.tunl0.rp_filter=0        #设置隧道接口上的数据转发封装规则
net.ipv4.conf.all.rp_filter=0        #设置所有接口上的数据转发封装规则


启用选项:
sysctl -p


4.安装httpd服务,进行配置

yum -y install httpd  httpd-tools

vim  /etc/httpd/conf/httpd.conf
添加:
keepalive off


启动服务
systemctl  restart httpd

5.创建测试页