lvs集群

发布于:2024-07-11 ⋅ 阅读:(28) ⋅ 点赞:(0)

1、定义

lvs:linux virtual server

在linux的内核层面实现负载均衡的软件

2、主要作用

将多个后端服务器组成一个高可用、高性能的服务器集群,通过负载均衡的算法将客户端的请求分发到后端的服务器上,来实现高可用和负载均衡

阿里的SLB(server load balance):lvs+keepalive来实现的

3、集群和分布式

3.1应对系统的拓展方式

垂直扩展:向上扩展,增强,性能更强的计算机。有瓶颈,计算机本身设备的限制,硬件本身的性能瓶颈

水平扩展:向外扩展,增加设备,可以并行运行多个服务,依靠网络解决内部通信的问题。cluster集群

集群:为了解决某个特定的问题,将多台计算机组合起来形成的单个系统

3.2集群的类型

LB:load balance负载均衡集群,多个主机组成,每个主机只承担一部分的访问请求

HA:high availablity高可用,在设计系统时,采取一定的措施确保系统当中某一组件或者部分出现故障,整个系统依然能够正常运行。为了维护整个系统的可用性、可靠性、容错性

HPC:high-performance computing高性能,对响应时间、处理能力,要求更高

3.3系统可靠性指标

MTBF:Mean Time Between Failture 平均无故障时间

MTTR:Mean Time To Repair 平均故障恢复时间

A=MTBF/(MTBF+MTTR)

A指标范围:0-1,A指标就是系统可用性的度量,0表示系统越不可用,1表示系统越可用

A指标要无限接近于1

都是以小时为单位

停机时间:

计划内时间,可以忽略不计,但是现在也算在内

计划外时间,故障时间,从故障发生到故障解决的总时间,尤其是运维,计划外时间是我们必须要关注的一个指标

4、lvs适用场景

小集群不需要使用lvs(可以用nginx),大集群使用lvs

5、lvs集群中的术语

VS:virtual server,lvs服务的逻辑名称,也就是我们在外部访问lvs集群时使用的ip地址和端口

DS:director server,lvs集群中的主服务器,也就是调度器(nginx的代理服务器),是集群的核心

调度器就是用来接收客户端的请求转发到后端的服务器

RS:real server,lvs集群中的真实服务器,后端服务器,用来接收DS调度器转发来的请求并且响应结果

CIP:client ip,客户端的ip地址,发起请求的客户端地址

VIP:virtual ip,lvs集群使用的ip地址,对外提供集群访问的虚拟ip地址

DIP:director ip,调度器在集群当中的地址,用于和RS进行通信

RIP:real ip,后端服务器在集群当中的ip地址

6、lvs的工作方式

6.1NAT模式

由调度器响应给客户端,是常用的lvs模式之一

在NAT模式下,lvs会将来自客户端的请求报文中的目标ip地址和端口修改为lvs内部的ip地址和端口,然后把请求转发到后端服务器。

响应结果返回客户端的过程中,响应报文经过lvs的处理,把目标ip和端口修改成客户端的ip和端口

6.1.1好处

对于客户端来说,请求的目标地址始终不变,客户端的配置不需要做特殊修改,只是调度器在对ip地址和端口进行转换,后端的服务器也不需要更改任何配置

6.1.2缺点

性能损失,请求和响应都需要调度器做地址转换,会影响性能

NAT模式只能有一个调度器,如果调度器故障,整个集群就不能正常工作

NAT模式就是地址转换:

内网——外网,转换的源ip snat

外网——内网,转换的目的地址 dnat

6.2DR模式

直接路由模式,由真实服务器直接响应给客户端

6.3TUN模式

隧道模式

常用的模式:NAT和DR

7、lvs的工具

ipvsadm工具,用来配置和管理lvs集群的工具

-A:添加虚拟服务器 vip

-D:删除虚拟服务器地址

-s:指定负载均衡的调度算法

算法:rr默认,轮询

     加权轮询,wrr

     最小连接:lc

     加权最小连接:wlc
#创建vip地址的时候才能指定负载均衡算法,不是在真实服务器添加算法。没有办法修改,只有推倒重来

-a:添加真实服务器

-d:删除真实服务器

-t:指定vip地址和端口

-r:指定rip的地址和端口

-m:使用NAT模式

-g:使用DR模式

-i:使用隧道模式

-w:设置权重

-p:设置连接保持时间

-l:列表查看

-n:数字化展示

8、实验

 添加一个新的网卡ens36,关闭防火墙,安装ipvsadm

配置调度器的网卡

ens33

ens36 

ens36

 修改nginx1的网关,然后重启

 nginx2的网关

更改nginx的访问页面

nginx1

nginx2

都可以正常访问 

 调度器的地址转换

[root@localhost network-scripts]# iptables -t nat -A POSTROUTING -s 192.168.230.0/24 -o ens36 -j SNAT --to 12.0.0.1
#指定nat表,添加POSTROUTING,指定源192.168.230.0/24,指定出的设备ens36,控制类型是SNAT,都转换成12.0.0.1

配置ipvsadm

先清空ipvsadm原有的策略

[root@localhost opt]# ipvsadm -C

 先添加虚拟服务器的ip和端口

[root@localhost opt]# ipvsadm -A -t 12.0.0.1:80 -s rr
#添加指定的VIP地址12.0.0.1:80,指定算法默认是轮询

 添加真实服务器

[root@localhost opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.230.60:80 -m
[root@localhost opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.230.70:80 -m
#指定VIP地址是12.0.0.1:80,真实服务器地址192.168.230.60/70:80,指定模式为NAT模式

查看

 [root@localhost opt]# ipvsadm -ln

 做完之后保存,然后重启

[root@localhost opt]# ipvsadm-save >/etc/sysconfig/ipvsadm

[root@localhost opt]# systemctl restart ipvsadm

 重启之后地址变了

 只能删除策略

[root@localhost opt]# ipvsadm -D -t 127.0.0.1:80

 重新添加

[root@localhost opt]# ipvsadm -A -t 12.0.0.1:80 -s rr
[root@localhost opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.230.60:80 -m
[root@localhost opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.230.70:80 -m

重启并保存

开启路由转发功能

[root@localhost opt]# vim /etc/sysctl.conf

[root@localhost opt]# sysctl -p
net.ipv4.ip_forward = 1

访问正常

 修改客户端的网卡,否则无法访问

 客户端访问正常

 访问日志

加权轮询

先删除策略

[root@localhost opt]# ipvsadm -D -t 12.0.0.1:80

 添加虚拟服务器和真实服务器

[root@localhost opt]# ipvsadm -A -t 12.0.0.1:80 -s wrr
[root@localhost opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.230.60:80 -m -w 2
[root@localhost opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.230.70:80 -m -w 3
#算法wrr,权重变了

 nginx2的权重大一些,轮询到2的几率会大一些

加权最小连接wlc 

先删除策略

[root@localhost opt]# ipvsadm -D -t 12.0.0.1:80

 添加虚拟服务器和真实服务器,算法为wlc

[root@localhost opt]# ipvsadm -A -t 12.0.0.1:80 -s wlc
[root@localhost opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.230.60:80 -m -w 5
[root@localhost opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.230.70:80 -m -w 2

 访问