LVS的集群技术和分布式
关于LVS实验环境
配置参考
lvs主机:ens160(对外的):172.25.254.100 。 ens192:192.168.0.100
RS主机两个(仅主机):192.168.0.10 和 192.168.0.20
测试机(NAT):172.25.254.11
lvs主机:# vim /etc/sysctl.conf 【配置参数文件,开启路由功能,可以 # sysctl -p 查看】
net.ipv4.ip_forward=1
火墙:
# systemctl enable --now httpd
# firewall-cmd --list-ports | grep '80'
# firewall-cmd --add-service=http --permanent
# firewall-cmd --reload
检测:
lvs主机可以相互ping通两个RS主机的192.168.0.10/20
两个RS主机:# echo "RS" > /var/www/html/index.html,lvs主机可以# curl RS的IP 访问
安装LVS
# dnf install ipvsadm -y 【安装lvs】
# ipvsadm --help 【查看lvs命令写法】
集群和分布式简介
系统性能扩展
Scale UP :向上扩展,提高性能
Scale Out :向外扩展,调度分配,Cluster
集群Cluster
Cluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统
Cluster常见的三种类型:
LB:LoadBalancing(负载均衡)由多个主机组成,每个主机只承担一部分访问
HA:High Availiablity(高可用)SPOF(single Point Of failure)
MTBF:Mean Time Between Failure 平均无故障时间,正常时间
MTTR:Mean Time To Restoration( repair)平均恢复前时间,故障时间
A=MTBF/(MTBF+MTTR) (0,1):99%, 99.5%, 99.9%, 99.99%, 99.999%
SLA:Service level agreement(服务等级协议)是在一定开销下为保障服务的性能和可用性,服务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。在常规的领域中,总是设定所谓的三个9,四个9来进行表示,当没有达到这种水平的时候,就会有一些列的惩罚措施,而运维,最主要的目标就是达成这种服务水平。
停机时间又分为两种,一种是计划内停机时间,一种是计划外停机时间,而运维则主要关注计划外停机时间
HPC:High-performance computing(高性能计算,国家战略资源,不在课程范围内)
分布式
分布式存储:Ceph,GlusterFs,FastDFS,MogileFs
分布式计算:hadoop,Spark
分布式常见应用:
分布式应用-服务按照功能拆分,使用微服务
分布式静态资源--静态资源放在不同的存储集群上
分布式数据和存储--使用key-value缓存系统
分布式计算--对特殊业务使用分布式计算,比如Hadoop集群
注意:集群是一个不能用了其他的还可以用,分布式是一个不能用了全部都不能用了
集群和分布式
集群:同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的
分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务
分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率,
对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决定由给哪一台去完成响应,并且台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败
Lvs 运行原理
LVS:Linux Virtual Server,负载调度器,内核集成,章文嵩,阿里的四层SLB(Server LoadBalance)是基于LVS+keepalived实现
LVS 相关术语
VS: Virtual Server,负责调度
RS:RealServer,负责真正提供服务
lvs集群体系结构:
工作原理:
VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法挑选RS
LVS概念
VS:Virtual Server
RS:Real Server
CIP:Client IP
VIP: Virtual serve IP VS外网的IP
DIP: Director IP VS内网的IP
RIP: Real server IP
访问流程:CIP <--> VIP == DIP <--> RIP
lvs集群的类型 【lvs四种模式】
lvs-nat: 修改请求报文的目标IP,多目标IP的DNAT
lvs-dr: 操纵封装新的MAC地址
lvs-tun: 在原请求IP报文之外新加一个IP首部
lvs-fullnat: 修改请求报文的源和目标IP
nat模式
Ivs-nat:
本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发
RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP
请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
支持端口映射,可修改请求报文的目标PORT
VS必须是Linux系统,RS可以是任意OS系统
nat模式数据逻辑
发起请求:
客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口(9000port)。
VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口。
RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口(9000port)。
VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP),响应目标端口(9000-->80)。
VS服务器把修改过报文的响应数据包回传给客户端 。
lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机,所以lvs的调度机容易阻塞。
目标地址:
客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,当IPVS存在后访问请求在通过PREROUTING后被ipvs结果并作nat转发。
因为ipvs的作用点是在PREROUTING和INPUT链之间,所以如果在prerouting中设定规则会干扰ipvs的工作。所以在做lvs时要把iptables的火墙策略全清理掉。
lvs部署命令
lvs软件相关信息
程序包: ipvsadm
Unit File: ipvsadm.service
主程序: /usr/sbin/ipvsadm
规则保存工具: /usr/sbin/ipvsadm-save
规则重载工具: /usr/sbin/ipvsadm-restore
配置文件: /etc/sysconfig/ipvsadm-config
ipvs调度规则文件:/etc/sysconfig/ipvsadm
ipvsadm命令
作用:集群服务管理:增、删、改 。 集群服务的RS管理:增、删、改 。 查看集群
# ipvsadm -D -t|u|f service-address 删除
# ipvsadm –C 清空
# ipvsadm –R 重载
# ipvsadm -S [-n] 保存
管理集群服务中的增删改
格式: ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
【# watch -n 1 "ipvsadm -Ln" 监控代码】
-A # 添加
# ipvsadm -A -t 172.25.254.100:80 -s rr 【添加集群】
-E # 修改
# ipvsadm -E -t 172.25.254.100:80 -s wrr 【修改集群】
-C # 全部刷新掉
# ipvsadm -C
-t # tcp服务
-u # udp服务
-d # 删除
# ipvsadm -D -t 172.25.254.100:80
-s # 指定调度算法,默认为WLC
-p # 设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver
-f # firewall mask 火墙标记,是一个数字
管理集群中RealServer的增删改
【要先ipvsadm -A -t 172.25.254.100:80 -s rr建立集群】
格式: ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]
-a #添加realserver
-e #更改realserver
-t #tcp协议
-u #udp协议
-f #火墙 标签
-r #realserver地址
-g #直连路由模式
# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -g 【添加realserver】
-i #ipip隧道模式
# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.20:80 -i 【更改realserver】
-m #nat模式
# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m 【添加realserver,设定nat模式】
-w #设定权重
# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.20:80 -i -w 2 【更改并配置权重】
-Z #清空计数器
# ipvsadm -Z
-C #清空lvs策略
-L #查看lvs策略
-n #不做解析
--rate # 输出速率信息
# ipvsadm-save 【以易读格式输出当前 IPVS 规则(包含服务名称解析)】
# ipvsadm-save -n 【选项表示以数字格式输出(不进行服务名称解析,输出IP)】
备份和恢复
# ipvsadm-save -n > /mnt/ipvsadm.rule 【备份保存】
# ipvsadm -C 【删除全部】
# ipvsadm-restore < /mnt/ipvsadm.rule 【恢复】
# ipvsadm-save -n > /etc/sysconfig/ipvsadm 【另一种备份方法】
# ipvsadm -C 【删除全部】
# systemctl enable --now ipvsadm.service 【也可以恢复】