linux vritual server
章文嵩发起的开源项目,阿里。linux的内核层面实现负载均衡的软件。
主要作用:将多个后端服务器组成一个高可用,高性能的服务器集群,通过负载均衡的算法将客户端的请求分发到后端的服务器上。
来实现高可用和负载均衡。
阿里的SLB
sever loab balance lvs+keeplive实现的。
集群和分布式:
系统的拓展方式:
垂直扩展:向上扩展,增强 ,性能更强的计算机。瓶颈,计算机本身设备的限制,硬件本身的性能瓶颈。
水平扩展:向外扩展,增加设备。并行的运行多个服务,依靠网络解决内部通信的问题,cluster 集群。
集群:为了解决某个特定的问题将多台计算机组合起来形成的单个系统。
集群的类型:三种类型
LB:load balance 负载均衡集群,多个主机组成,每个主机只承担一部分的访问请求
HA:high availiablity 高可用,在设计系统时,采取一定的措施,确保系统当中某一组件或者部分出现故障,整个系统依然能够正常的运行。为了维护系统的可用性、可靠性,容错性。
HPC:high—performance computing 高性能 对响应时间,处理能力要求更高。
系统可靠性指标:
MTBF:Mean time Between Failure 平均无故障时间
MTTR:Mean time Restoration 平均故障回复时间
A=MTBF/(MTBF+MTTR)
A指标要在0-1之间,A指标就是系统可用性的度量,0表示系统越不可用,1表示系统越可用。
A指标要无线接近于1
99.99%
90-95%不合格
都是以小时为单位的
停机时间:
计划内时间,计划内的时间可以忽略不计,但是现在也算在内
计划外时间,故障时间,从故障发生到故障解决的时间,尤其是运维,计划外时间是我们必须关注的一个指标。
hpc------------当天事必须当天解决-----------------------没有解决之前,人不可以离开--------------解决完之后必须生成报告,备案。
日报,周报,月报,年报
lvs适用场景:
小集群不需要使用lvs,大集群使用lvs
lvs集群中的术语:
VS vritual sever lvs服务的逻辑名称,也就是我们在外部访问lvs集群时使用的ip地址和端口
DS Driector Sever lvs集群中的主服务器,也就是调度器(nginx的代理服务器)是集群的核心
调度器就是用来接受客户端的请求转发到后端的服务器。
RS real server lvs集群中的真实服务器,后端服务器,用来接收DS转发来的请求,并且响应结果。
CIP:Client ip 客户端的地址,发起请求的客户端地址。
VIP:Virturl Ip lvs集群使用的ip地址,双发提供集群访问的虚拟ip地址
Dip:Director ip 调度器在集群当中的地址,用于和RS通信
Rip:REAL ip 后端服务器在集群当中ip地址
lvs的工作方式
nat模式 响应要由调度器响应给客户端
DR模式 直接路由模式 真实服务器之间响应给客户端
TUN 隧道模式
常用的模式 :NAT和DR模式
NAT模式
nat模式常用的lvs的模块之一
在nat模式下,lvs会将来自客户端的请求报文中的目标ip地址和端口,修改为lvs内部的ip地址和端口,然后把请求转发到后端服务器
响应结果返回客户端的过程中,响应报文经过lvs的处理,把目标ip和端口修改成客户端的ip地址和端口。
好处在于,对于客户端来说,请求的目标地址始终不变,客户端的配置不需要做特殊修改,只是调度器在对ip和端口进行转换,后端的服务器也不需要更改任何配置。
缺点:性能损失,请求和响应都需要调度器做地址转换,影响性能
nat模式只能有一个调度,调度故障,整个集群不能正常工作。
地址转换:
内网----外网 转换的源ip地址
外网----内网 转换目的地址 dnat
lvs的工具
ipvsadm工具,用来配置和管理lvs集群的工具。
-A 添加虚拟服务器 vip
-D 删除虚拟服务器地址
-s 指定负载均衡的调度算法
算法:
rr默认,轮询
加权轮询:wrr
最小连接:lc
加权最小连接:wlc
-a 添加真实服务器
-d 删除真实服务器
-t 指定vip地址和端口
-r 指定rip的地址和端口
-m 使用nat模式
-g 使用DIR模式
-i 使用隧道模式
-w 设置权重
-p 连接保持60s,设置连接保持时间
-l 列表查看
-n 数字化展示
NAT模式实验部署操作步骤
把test1(192.168.233.10)当做调度器,对调度器进行配置
[root@test1 ~]# systemctl stop firewalld.service
[root@test1 ~]# setenforce 0
[root@test1 ~]# systemctl restart nginx
[root@test1 ~]# modprobe ip_vs
#这条命令加载了 ip_vs 内核模块,该模块提供了 IP 负载均衡的功能。
[root@test1 ~]# yum -y install ipvsadm
#安装 ipvsadm 工具
[root@test1 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.233.100:80 -m
#配置 IPVS 规则 - 添加服务器节点#
[root@test1 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.233.110:80 -m
[root@test1 opt]# systemctl restart ipvsadm.service
[root@test1 opt]# ipvsadm-save >/etc/sysconfig/ipvsadm
#备份文件
[root@test1 opt]# vim /etc/sysctl.conf
#配置 Linux 内核参数net.ipv4.ip_foward=1
#设置网络转发
[root@test1 opt]# sysctl -p
#重新加载 sysctl.conf 文件中的配置,使设置生效。
第二步配置两个节点服务器 (nginx1:192.168.233.100,nginx2:192.168.233.110
[root@nginx1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@nginx2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@nginx1 ~]# systemctl restart network
第三步配置客户端test2(192.168.233.20)
[root@test2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@test2 ~]# systemctl restart network
保存LVS的配置策略以及删除策略的方法:
ipvsadm-save > /opt/ipvsadm #保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
----------------------------------------------------------------------------------------------------------
ipvsadm -d -t 12.0.0.1:80 -r 192.168.73.106:80 #删除群集中某一节点服务器
ipvsadm -D -t 12.0.0.1:80 #删除整个虚拟服务器
systemctl stop ipvsadm #停止服务(清空策略)
systemctl start ipvsadm #启动服务(根据/etc/sysconfig/ipvsadm重建配置)
ipvsadm-restore < /opt/ipvsadm #恢复LVS 策略