linux之集群(负载均衡,高可用,高性能)和LVS集群,调度算法

集群

集群(cluster)也称为群集,表示一群的意思,在服务器领域表示大量的服务器的集合体。

将各个主机组成集群,形成一个系统协调工作,其可扩展性、可用性、容量、性能都会有大规模的提升

1.)企业级集群分类:LB  HA  HP  负载均衡实现方式和集群工作层次划分

1)负载均衡集群LB,Load Balance)并发访问量

2)高可用集群HA,High Availability)什么地方都可用,在任何时候都可以

3)高性能集群HP,High Performance)把很多机器集合在一起, 性能增强

 

1、负载均衡集群(LB)

提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体能力LB负载分配依赖于主节点的算法,将来自客户机访问请求分担给多个服务器节点。

2、高可用集群(HA)

提高应用系统的可靠性、尽可能减少终端宕机时间为目标确保服务的连续性,达到高可用(HA)的容错效果,例“故障切换”“双击热备”“多机热备”等都属于高可用群集技术。HA工作方式包括双工主从两种模式双工所有节点同时在线主从则只有主节点在线,但当出现故障时从才切换为主节点。

3、高性能集群(HP)

以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算HPC,High performance computing)能力。如“云计算”“网格计算”。高性能群集依赖于“分布式运算”、并行计算:通过专用硬件和软件将多个服务器CPU、内存等资源整合在一起,实现大型、大型、超级计算机才具备的计算能力。

 

 

负载均衡集群实现方式

1)硬件方式:F5、A10、Citrix、NetScaler、array、梭子鱼、绿盟

2)软件方式:LVS、haproxy、nginx

 

 

负载均衡集群工作的层次划分

传输层:LVS,haproxy

应用层:haproxy、nginx、ats

 

2.)LVS集群

LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如下图1所示,互联网用户从外部访问公司的外部负载均衡服务器,用户的Web请求会发送给LVS调度器,调度器根据预设的算法决定将该请求发送给后端的某台Web服务器。根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到用户。LVS工作模式分为NAT模式、TUN模式、以及DR模式。

 

1)LVS(Linux Virtual Server)工作在传输层基于TCP和UDP进行调度工作。

 

2)工作方式:根据目标IP和端口转发到后端主机集群服务器池)中某一台主机(如何转发请求,基于某种特定的算法

 

3)LVS基于netfilter进行设计的但是由于LVS有自己的会话表,可能会与iptables中会话表产生冲突导致了二者无法完美并行。这样的后果就是会丧失部分安全功能。LVS运行时关闭iptabs

 

4)LVS由ipvsadm和ipvs   两个部分组成

ipvsadm是用户命令工具,用于管理LVS集群服务     ipvs是LVS的内核功能模块。

 

查看系统内核是否编译了LVS,以及支持的功能

grep -i 'IPVS' /boot/config-3.10.0-XXX.el7.x86_64

通常ipvs模块在Linux内核中被自动装载,若没有被装载,执行modprobe ip_vs进行装载,然后cat /proc/net/ip_vs 查看是否装载成功。

 

安装ipvsadm

yum install ipvsadm –y

 

LVS架构各个组成部分名词:

调度器director ,DIP          负载均衡器 ip

RSreal server,RIP    真实提供服务的服务器     ip

CIPclient IP客户端的ip

VIPDirector Virutal IP调度器的  连接外网 虚拟ip

DIPDirector IP调度器的 真实ip

 

LVS结构类型

1)lvs-nat

2)lvs-dr(direct routing)

3)lvs-tun

 

1.NAT模式:   (LVS调度器即网关)

用户通过DNS解析到负载均衡设备上外网地址LVS外网IP又称VIPVirtual IP Address),用户将请求发送至VIP,LVS根据预设的算法选择后端的一台真实服务器,通过NAT的方式 修改 目标IP与port)将数据请求包转发给真实服务器    --修改目标ip  DNAT

真实的服务器将响应数据包  返回给LVS调度器,调度器在得到响应的数据包后通过NAT的方式修改源ip   port)将响应数据包发送回用户。--修改源地址ip  SNAT

 

注意事项:①:RS应该和DIP都使用私网地址,并且RS网关须指向内网的ip地址DIP

       ②:请求和响应报文都要基于director转发

       ③:director支持端口映射

2.DR模式也叫直接路由模式,

LVS接收入站请求  (VIP端口等待连接)以及根据算法选出真实服务器,由后端真实服务器负责响应请求。DR模式要求调度器(DIP)与后端服务器在同一个局域网内    VIP地址在调度器与后端所有的真实服务器间共享   回应 客户端时会返回 调度器VIP  真实服务器的ip对外不可见   所以 把真实服务器的的源地址改为                                调度器对外可见的VIP    真实服务器发送数据给客户端

 

(因为真实服务器  给客户端回应数据包时   需要设置IP为VIP地址目标IP为客户端IP  这样客户端访问的是调度器的VIP地址,回应的源地址也是VIP地址)。

由于多台计算机设置相同的VIP地址,所以要求调度器的VIP地址是对外可见的真实服务器的VIP对外是不可见的)

因此要求真实服务器的VIP地址必须配置在Non-ARP回环地址的网络设备上,不会向外广播自己的MAC及对应的IP地址。

调度器根据算法在选出真实服务器后,在不修改数据报文的情况下,将数据帧的MAC地址修改为选出的真实服务器的MAC地址,将该数据帧发给真实服务器。

 

负载均衡器  通过 交换机  和后台机器来

注意事项:

①:保证前端路由器将目标IP为VIP的请求报文发送给director

          ②:RS跟director必须在同一物理网络中

          ③:请求报文经由director调度,但响应报文一定不能经过director

          ④:不支持端口映射

          ⑤:RS网关不能指向director

3.tun模式: 

数据发给调度器, 把选出的真实服务器 IP地址和端口   封装添加到报头  把数据包转发给 后台真实服务器  (所以要求服务器公网ip 来沟通)  一般在局域网架设集群

 

IP隧道(IP tunning)是一种数据包封装技术,可将原数据包封装并添加新的报头(包括新的源地址及端口、目标地址及端口),

实现将一个发往  目标为调度器VIP地址的数据包封装(修改目标地址为选择出来的真实服务器的IP地址及对应端口),之后通过隧道转发给后端的真实服务器Real Server),

LVS(TUN)模式要求真实服务器可以直接与外部网络连接,真实服务器在收到请求数据包后直接给客户端主机响应数据。

 

注意事项:DIP、RIP、VIP全是公网地址

          ②RS的网关不能指向DIP

          ③请求报文必须由director调度,响应报文必须不能经过director

          ④不支持端口映射

          ⑤RS的OS必须支持隧道功能

 

 

3.调度算法(lvs scheduler)

负载均衡集群进行调度,如何挑选后端RS进行调度?--->基于调度算法

静态方法根据算法  本身进行调度

RR(轮询)WRR(加权轮询)SH(源地址hash,实现session保持)、DH(目的地址hash)    

动态方法:根据算法  以及各个RS的当前负载状态   进行调度

LC(最小连接数)、WLC(加权最小连接)、SED(最短期望延迟)、NQ(永不排队)、LBLC、LBLCR

 

 

 

1)rr:轮询 rr 算法就是将外部请求顺序轮流分配到集群中node 上,但不考虑每台node 的负载情况。

2)wrr:加权轮询 wrr 算法在rr 算法的基础上会考察每台node的负载情况,并尝试让负较轻的node 承担更多请求。  权重 能者多劳     node真实服务器 也叫节点

3)lc:最少连接算法可以让LVS 尝试把新的请求交给当前连接数最少的node ,直到此node 连接数不再属于最少为止。

4)wlc:加权最少连接 wlc 算法也有权重的干预。LVS 会根据每台node的权重并综合连接数控制转发行为。     连接数   权重

5)lblc:局部最少连接算法会加上针对源请求IP地址的路由估算,并尝试把请求发送到与源请求IP路由最近的node 上。此种方法一般用于远程或者是大规模的集群组。

来数据请求  调度器 计算路由 发送给   距离最短的 服务器节点(一个节点)

6)lblcr:带有复制的局部最少连接算法 lblcr 算法是在lblc 算法的基础上增加了一个node 列表,先依据lblc 算法计算出与源请求IP地址最近的一组node ,然后再决定把请求发送到最近一组中的最近的一台node 。

来数据请求  调度器 计算路由 发送给   最短的 一组 服务器节点  然后发送给最近的 一个服务器节点

若此node没有超载则将请求转发给这台node, 如果超载则依据”最少连接”原则找到最少连接的node并将此node 加入集群组中。并将请求转给此node。

7)dh:目标地址  散列算法,相当于随机。 

8)sh:原地址    散列算法,相当于随机。

 

4.LB负载均衡集群的操作方法(LVS)

在一个ipvs主机中可以定义多个集群服务,一个集群服务中一个director至少应该能调度一个RS

ipvsadm用法

管理LVS集群服务新增和修改集群

 

ipvsadm -A |E  -t|u  service-address  -s scheduler调度算法       service-addressip地址加端口  

-A 添加      -E 修改      -t 指定tcp     -u 指定udp     -s:指定调度算法

 

service-address的形式:

如果是tcp为 -t ip:port

如果是udp为 -u ip:port

scheduler:调度算法,默认是wlc

例如:

ipvsadm -A -t 192.168.10.10:80 -s rr  

添加VIP为192.168.10.10的集群服务,基于TCP协议,端口为80,调度算法为轮询

10.10对外可见的ip地址  调度器的虚拟IP地址  VIP     (集群对外提供服务ip端口)

 

ipvsadm -E -t 192.168.10.88:80 -s wrr  

修改VIP为192.168.10.88集群的调度算法为加权轮询

 

删除集群

ipvsadm -D -t|u|f service-address      (-D 删除)

例如:

ipvsadm -D -t 192.168.10.88:80  

删除VIP为173.16.16.88,并且端口为80的集群

 

ipvsadm -C清空所有集群规则:

 

 

管理服务器池中的RS

添加和修改

ipvsadm -a|e  -t|u|  service-address  -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]

-a:添加可调度的服务器节点   

-e:修改添加的服务器节点

-t :  tcp

-u :  udp

-r:指定节点服务器IP地址(RIP)

-g:使用DR模型   直连路由的方式  

-i:TUN模型   

-m:NAT模型  默认是DR模型

-w:权重

例如:

ipvsadm -a -t 192.168.10.88:80 -r 192.168.20.10 -m -w 1   

添加服务器池中的RS服务器192.168.20.10,被192.168.10.88调度,-r使用NAT模型,-w权重为1

 

ipvsadm -a -t 192.168.10.88:80 -r 192.168.20.20 -m -w 2   

添加服务器池中的 RS服务器192.168.20.20,被192.168.10.88调度, -r使用NAT模型,-w权重为2

 

删除RS节点

ipvsadm -d -t|u|f service-address -r server-address

    例如:

ipvsadm -d -t 192.168.10.88 -r 192.168.20.10

 

查看LVS配置的相关节点和规则

ipvsadm -L   [-n]   [--stats]   [--rate]

动态监控访问数量   watch [-n #]    "ipvsadm -L -n"

-n:不反解    

-c:显示当前的连接  

--stats 显示统计数据    

--rate:统计速率

 

5.实验配置LVS-NAT模型

1.四台机器 一台客户端,一台LVS调度服务端 两台内网 LVS配置两块网卡,做路由

准备LVS调度服务器,为设置NAT模型,需准备两块网卡,例如ens33、ens37

ip 地址为192.168.10.100  和   192.168.20.100

 

准备两台被调度节点web服务器,网关需指向LVS的director

ip地址为192.168.20.10   和192.168.20.20

 

2.开启LVS调度服务器的路由转发功能

确定LVS调度服务器director的转发功能开启,并清空所有防火墙规则(ipvs和iptables不能兼容)

echo “1” > /proc/sys/net/ipv4/ip_forward

 

或者开启永久路由转发

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

sysctl -p

 

3.在两台内网服务端写入测试网页

在两台节点上部署web服务器,在网页根路径写入不同的网页内容,方便结果验证

 

 

 

 

 

 

 

 

 

 

 

 

 

4.在director上部署ipvs规则

ipvsadm -A -t 192.168.10.100:80 -s rr

ipvsadm -a -t 192.168.10.100:80 -r 192.168.20.100 -m

ipvsadm -a -t 192.168.10.100:80 -r 192.168.20.200 -m

 

 

 

 

 

5.浏览器访问验证调度效果  保存ipvs规则

 

使ipvs规则永久有效,进行保存

ipvsadm -S -n > /etc/sysconfig/ipvsadm-config

 

清空ipvs所有规则

ipvsadm -C

 

恢复之前保存好的ipvs规则

ipvsadm -R < /etc/sysconfig/ipvsadm-config

 

cat  /etc/sysconfig/ipvsadm-config | ipvsadm

 

 

 

 

 

6.实验配置LVS-DR模型

保证前端路由器将目标IP为VIP的请求报文发送给director

使客户端只能看到 VIP 外网ip     看不到后台的服务器ip

解决方案:修改RS主机内核参数

1内核参数

arp_ignore:是否响应请求    

0表示只要接收请求,一律响应

1表示请求报文从哪个接口进来,响应报文就要从哪个接口出去

 

2内核参数

arp_announce:是否接收通告,参数值  0  1  2     广播

0表示任何地址都通告 

1表示尽量避免向非本网络中的接口通告

2总是用最佳本地地址向网络通告 ens33发起请求 那么就会回应 ens33的IP而不是VIP的ip

 

1.在director上配置客户端能访问的VIP,VIP配置在物理网卡的子接口上即可。然后配置VIP的路由

修改客户端的ip为 20网段  修改ip     

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

systemctl restart network

 

 

 

 

 

LVS 负载均衡器设定

ifconfig ens38:0 192.168.20.88 broadcast 192.168.20.88 netmask 255.255.255.255 up

route add -host 192.168.20.88 dev ens38:0增加路由

 

 

Ifconfig

 

 

 

 

Ip  a

 

 

 

 

2.两台WEB机器设置   RS节点内核参数调整,并配置VIP,VIP的地址配置在自身网卡的回环地址lo子接口上。

echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

ifconfig lo:0 192.168.20.88 netmask 255.255.255.255 broadcast 192.168.20.88 up  --回环地址

 

 

 

 

3.web服务端   RS上配置VIP的路由

route add -host 192.168.20.88 dev lo:0

20.11客户端

 

 

 

 

4.用别的主机ping  VIP,检查连通性,并查看arp地址表验证RS是否未响应。

 

 

 

 

5.配置director的ipvs调度规则

ipvsadm -A -t 192.168.20.88:80 -s rr

ipvsadm -a -t 192.168.20.88:80 -r 192.168.20.100:80 -g

ipvsadm -a -t 192.168.20.88:80 -r 192.168.20.200:80 -g

 

6.浏览器验证LVS-DR集群结果

 

 

 

posted @ 2020-08-01 21:13  浅唱I  阅读(950)  评论(0编辑  收藏  举报