1、lvs介绍和模式

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 |

相关推荐
小晶晶京京2 天前
day35-负载均衡
运维·网络·网络协议·学习·负载均衡
xujiangyan_2 天前
HAProxy使用方法以及和LVS区别
lvs
CodeDevMaster3 天前
Gemini Balance:轻松实现Gemini API负载均衡与无缝切换的终极指南
负载均衡·api·gemini
扶风呀6 天前
具有熔断能力和活性探测的服务负载均衡解决方案
运维·负载均衡
Hello World呀6 天前
springcloud负载均衡测试类
spring·spring cloud·负载均衡
菜菜子爱学习7 天前
Nginx学习笔记(七)——Nginx负载均衡
笔记·学习·nginx·负载均衡·运维开发
扶风呀7 天前
负载均衡详解
运维·后端·微服务·面试·负载均衡
PXM的算法星球7 天前
spring gateway配合nacos实现负载均衡
spring·gateway·负载均衡
抛物线.10 天前
Docker Compose 部署高可用 MongoDB 副本集集群(含 Keepalived + HAProxy 负载均衡)
mongodb·docker·负载均衡
ZNineSun10 天前
什么是负载均衡,有哪些常见算法?
负载均衡·osi·七层网络模型