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
访问