1、lvs介绍和模式

时间:2024-12-18 13:20:51

lvs介绍

lvs:linux   virtual   server

lvs也是负载均衡的一种方法,lvs是四层的负载均衡。

集群和分布式:

分布式:把不同的组件部署在不同的服务器上,组件之间(应用)依靠网络进行通信,实现定制化的功能。

集群:多个应用。相同的应用,部署在不同的服务器,提供统一的服务,以及同样的功能。机器的性能大致相同。

lvs是基于集群的方式实现。

系统性能扩展方式:

单节点的扩展方式:垂直扩展,向上扩展,提升计算机的性能(硬件性能)。性能提升是有瓶颈。

                                水平扩展,向外扩展,增加设备的方式提供性能。这就是集群的由来。

串行————>并行

集群的类型:

负载均衡 LB:load  balancing 

高可用 HA:high  Availiablity

负载均衡的高可用

主备高可用:有 keepalive,用的就是 vrrp。

系统的可靠性指标:

值范围:0-1

MTBF:平均无故障时间

MTTR:平均恢复时间

A  =  MTBF/(MTBF+MTTR)*100%

A的值要无限接近于1

淘宝要求可靠性指标是:99.99999% == 365*24*(1-99.99999% )= 31秒

停机时间:不算在故障时间范围之内。

计划内停机时间,这个是不算在故障时间。

计划外的停机时间算在故障时间内。

lvs集群的术语:

VS:virtual  server,lvs的逻辑名字,外部访问lvs的ip地址和端口。

DS:director  server,lvs集群当中的主服务器,调度器,是整个集群的核心,接受客户端的请求然后根据负载均衡的算法转发到后端的RS。

RS:real  server,lvs集群中的真实服务器,也就是后端服务器,接受调度器转发过来的请求。

CIP:client  ip,客户端的ip地址

VIP:virtual  ip,集群对外提供的好的虚拟ip地址

DIP:调度器的ip地址

RIP:后端服务器的ip地址

lvs模式

工具:ipvsadm用来管理和配置lvs集群的工具,集成在Linux系统的内核当中。

ipvsadm的操作命令:

-A:添加虚拟服务器

-D:删除整个虚拟服务器,虚拟服务器对应的就是后台的真实服务器

-C:清空所有策略

-s:知道负载均衡的算法,加载时算法必须申明,轮询也需要。

      rr(轮询)     wrr(加权轮询)     lc(最小连接数)     wlc(加权最小连接数)

-a:添加真实服务器

-t:指定调度服务器的vip地址和ip地址

-r:指定RIP的Ip地址和端口

-m:表示集群使用nat模式

-g:表示使用DR模式

-i:表示使用TUN模式

-w:设置权重

-I:列表形式查看策略

-n:数字化查看策略

NAT模式

NAT:NAT方式是最常用的负载均衡方式之一

NAT的性能较差,第一要进行转化,第二要进行数据包的路由。

NAT模式的后端真实服务器10-30台之间,太多调度器处理不过来。

实操:数据流向如下图所示,具体配置如下,模拟12.0.0.10为公网地址。

lvs1:调度器                           ens37:12.0.0.10                 ens33:192.168.254.21 

lvs2:后端真实服务器1           ens33:192.168.254.22            

lvs3:后端真实服务器2           ens33:192.168.254.23           

1、apt -y install ipvsadm       #安装ipvsadm

2、modprobe ip_vs               #加载模块

3、配置调度器和服务器网卡

配置调度器网卡

配置后端服务器1网卡

配置后端服务器2网卡

注意:后端服务器的网关要设置成调度器的ens33网卡IP地址一样,这样才能于调度器相通。

4、开启ipvsadm服务

5、 添加策略(轮询rr)

  • 表示当访问12.0.0.10时,数据包可以转发到真实服务器之一,-m指定使用NAT模式

ipvsadm -ln        #查看策略是否成功

6、配置内核文件

开启Linux服务器内核转发功能,并使之生效。

7、NAT地址转换

  • 从ens37设备出去的数据包且网段属于192.168.254.0,把这个网段地址统一转换成12.0.0.10

8、实现,这时候我们访问公网地址,调度器会采取轮询方式让我们访问两个后端真实服务器

但是NAT模式调度器的压力很大,地址转换,负载均衡算法,数据包转发、响应,非常影响性能。

补充

删除规则某一项规则

NAT模式加权轮询

DR模式

DR:直连路由模式,性能是最高的。

DR虚拟出一个IP,这个虚拟IP用来访问的。客户端都是访问虚拟的IP地址。

虚拟IP地址也是在调度器上,调度器根据负载均衡算法选择一条RS,RS处理完之后直接响应给客

户端,不是由调度器再来响应客户端。

1、直接路由模式就是二层转发。

调度器的IP地址和真实服务器的IP必须在同一个网段,同一网段才能进行二层转发。

内核来进行判断数据包,判断目标是本机的VIP,ipvs对数据包的请求进行分析,是否在集群的范围之内。是的话,对数据包进行重新封装,源MAC地址是vip地址,目标MAC地址是真实服务器的地址。源IP和目的IP都没有发生变化。

DR模式的特点:

1、调度器和真实服务器必须在同一个网段

2、真实服务器地址可以是内网也可以是公网,如果真实服务器是公网可以直接访问(没人会干)

3、VIP地址在调度器上有,在真实服务器也需要配置。(ARP根据MAC地址,找到相应的IP地址,如果不配置,调度服务器和真实服务器之间无法通信,需要修改内核的方式,让真实的物理地址来响应请求)

4、所有真实服务器的网关不能指向到调度器的IP地址,真实服务器的数据包不通过调度器转发。

实操:数据流向如下图所示,具体配置如下

zw4:调度器                          ens33:192.168.254.14                ens37:192.168.254.100  

zw5:后端真实服务器1          ens33:192.168.254.15                ens37:192.168.254.100          

zw6:后端真实服务器2          ens33:192.168.254.16                ens37:192.168.254.100 

真实网卡ens37作为VIP

1、调度器和后端服务器都配置真实网卡ens37

注意配置完之后检查是否ens37设置成功

2、配置调度器内核文件 /etc/sysctl.conf,添加如下内容,并 -p 使之生效

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens37.send_redirects = 0

3、配置2台后端服务器内核文件 /etc/sysctl.conf,添加如下内容,并 -p 使之生效

net.ipv4.conf.ens37.arp_ignore = 1
net.ipv4.conf.ens37.arp_announce = 2
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

4、route add -host 192.168.254.100 dev ens37        #路由指向到虚拟网卡ens37

三台服务器路由都需要指向VIP

5、调度器添加策略(轮询rr)

启动ipvsadm服务并做如下策略配置

ipvsadm -A -t 192.168.254.100:80 -s rr

ipvsadm -a -t 192.168.254.100:80 -r 192.168.254.15:80 -g

ipvsadm -a -t 192.168.254.100:80 -r 192.168.254.16:80 -g

6、实现,这时候我们访问192.168.254.100,调度器会采取轮询方式让我们访问两个后端真实服务器

TUN

TUN:隧道模式,vpn(需要运营商提供vpn的地址)

lvs模式的总结

NAT DR TUN
优点 配置简单 性能最好 支持vpn
缺点 性能最弱 不支持跨网段 只能用vpn进行隧道模式
真实服务器 任何都可以 必须要屏蔽ARP的响应 必须要有vpn
支持网络类型 内网 内网 内网/外网
真实服务器数量 10-30 100 1000