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 |