LVM总结

发布时间:2026/8/1 19:54:56
LVM总结 集群ClusterCluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统Cluster: 集群是为了解决某个特定问题将堕胎计算机组合起来形成的单个系统集群的分类LBLoadBalancing负载均衡由多个主机组成每个主机只承担一部分访问HAHigh Availiablity高可用SPOFsingle Point Of failureMTBF:Mean Time Between Failure 平均无故障时间正常时间MTTR:Mean Time To Restoration repair平均恢复前时间故障时间AMTBF/MTBFMTTR (0,1)99%, 99.5%, 99.9%, 99.99%, 99.999%SLAService level agreement服务等级协议是在一定开销下为保障服务的性能和可用 性服务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的 主要因素。在常规的领域中总是设定所谓的三个9四个9来进行表示当没有达到这种水 平的时候就会有一 些列的惩罚措施而运维最主要的目标就是达成这种服务水平。 停机 时间又分为两种一种是计划内停机时间一种是计划外停机时间而运维则主要关注计划 外停机时间HPCHigh-performance computing高性能计算国家战略资源不在课程范围内lvs集群体系结构工作原理 VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS根据调度算法来 挑选RSLVSLinux Virtual Server核心功能是通过IP负载均衡技术将客户端请求分发至服务器 集群实现服务的可伸缩性与透明性支持及持久连接LVS:Linux Virtual Server负载调度器是一种基于Linux操作系统 内核的高性能、高可用网络服 务负载均衡解决方案。创始人章文嵩阿里的四层SLB(Server LoadBalance)是基于LVSkeepalived实现LVS 官网: http://www.linuxvirtualserver.org/LVS 相关术语 Virtual Server负责调度RS:RealServer负责真正提供服务CIPClient IP 客户端主机的ipVIP: Virtual serve IP VS外网的IP 对外开放的让客户访问的ipDIP: Director IP VS内网的IP 调度器负责访问内网的ipRIP: Real server IP 真实业务主机IP访问流程CIP -- VIP DIP -- RIPlvs集群的类型lvs-nat模式修改请求报文的目标IP,多目标IP的DNAT本质是多目标IP的DNAT通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发RIP和DIP应在同一个IP网络且应使用私网地址;RS的网关要指向DIP请求报文和响应报文都必须经由Director转发Director易于成为系统瓶颈支持端口映射可修改请求报文的目标PORTVS必须是Linux系统RS可以是任意OS系统nat模式数据逻辑1.客户端发送访问请求请求数据包中含有请求来源cip访问目标地址VIP访问目标端口9000port2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口3.RS1相应请求发送响应数据包包中的相应保温为数据来源RIP1响应目标CIP相应端口9000port4.VS服务器接收到响应数据包改变包中的数据来源RIP1--VIP,响应目标端口9000--805.VS服务器把修改过报文的响应数据包回传给客户端6.lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机所以lvs的调度机容易阻塞nat模式数据传输过程客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,当IPVS存在后访问请求在通过PREROUTING后被ipvs结果并作nat转发因为ipvs的作用点是在PREROUTING和INPUT链之间所以如果在prerouting中设定规则会干扰ipvs的工作。所以在做lvs时要把iptables的火墙策略全清理掉。lvs-dr模式操纵封装新的MAC地址DRDirect Routing直接路由LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首 部进行转发源MAC是DIP所在的接口的MAC目标MAC是某挑选出的RS的RIP所在接口 的 MAC地址源 IP/PORT以及目标IP/PORT均保持不变在DR模式中RS接收到访问请求后不需要回传给VS调度器直接把回传数据发送给client所以RS和vs上都要有vipDR模式数据传输过程1.客户端发送数据帧给vs调度主机帧中内容为客户端IP客户端的MACVIPVIP的MAC2.VS调度主机接收到数据帧后把帧中的VIP的MAC该为RS1的MAC此时帧中的数据为客户端 IP客户端的MACVIPRS1的MAC3.RS1得到2中的数据包做出响应回传数据包数据包中的内容为VIPRS1的MAC客户端IP客户 端IP的MACDR模式特点1.Director和各RS都配置有VIP2.确保前端路由器将目标IP为VIP的请求报文发往Director3.在前端网关做静态绑定VIP和Director的MAC地址在RS上使用arptables工具arptables -A IN -d $VIP -j DROP arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP在RS上修改内核参数以限制arp通告及应答级别/proc/sys/net/ipv4/conf/all/arp_ignore /proc/sys/net/ipv4/conf/all/arp_announce4.RS的RIP可以使用私网地址也可以是公网地址RIP与DIP在同一IP网络5.RIP的网关不能指向DIP以确保响应报文不会经由Director6.RS和Director要在同一个物理网络7.请求报文要经由Director但响应报文不经由Director而由RS直接发往Client8.不支持端口映射端口不能修败9.RS可使用大多数OS系统TUN模式在原请求IP报文之外新加一个IP首部转发方式不修改请求报文的IP首部源IP为CIP目标IP为VIP而在原IP报文之外再封装一个IP首部 源IP是DIP目标IP是RIP将报文发往挑选出的目标RSRS直接响应给客户端源IP是VIP目标IP是CIPTUN模式传输过程1.客户端发送请求数据包包内有源IPvipdport2.到达vs调度器后对客户端发送过来的数据包重新封装添加IP报文头新添加的IP报文头中包含TUNSRCIP(DIP)TUNDESTIP(RSIP1)并发送到RS13.RS收到VS调度器发送过来的数据包做出响应生成的响应报文中包含SRCIP(VIP)DSTIPCIPport响应数据包通过网络直接回传给clientTUN模式特点1.DIP, VIP, RIP都应该是公网地址2.RS的网关一般不能指向DIP3.请求报文要经由Director但响应不能经由Director4.不支持端口映射5.RS的OS须支持隧道功能lvs-fullnat模式fullnat模型fullnat通过同时修改请求报文的源IP地址和目标IP地址进行转发CIP -- DIPVIP -- RIP1.VIP是公网地址RIP和DIP是私网地址且通常不在同一IP网络因此RIP的网关一般不会指 向DIP2.RS收到的请求报文源地址是DIP因此只需响应给DIP但Director还要将其发往Client3.请求和响应报文都经由Director4.支持端口映射总结NAT模式TUN模式DR模式RS操作系统不限支持隧道禁用arp调度器和服务器网络可跨网络可跨网络不可跨网络调度服务器数量少多多RS服务器网关指向到调度器DIP指向到路由指向到路由lvs-nat与lvs-fullnat请求和响应报文都经由Directorlvs-natRIP的网关要指向DIPlvs-fullnatRIP和DIP未必在同一IP网络但要能通信lvs-dr与lvs-tun请求报文要经由Director但响应报文由RS直接发往Clientlvs-dr通过封装新的MAC首部实现通过MAC网络转发lvs-tun通过在原IP报文外封装新IP头实现转发支持远距离通信Lvs调度算法算法类型ipvs scheduler根据其调度时是否考虑各RS当前的负载状态被分为两种静态方法和动态方法静态方法仅根据算法本身进行调度不考虑RS的负载情况1、RRroundrobin 轮询 RS分别被调度当RS配置有差别时不推荐2、WRRWeighted RR加权轮询根据RS的配置进行加权调度性能差的RS被调度的次数少3、SHSource Hashing实现session sticky源IP地址hash将来自于同一个IP地址的请求始 终发往第一次挑中的RS从而实现会话绑定4、DHDestination Hashing目标地址哈希第一次轮询调度至RS后续将发往同一个目标地 址的请求始终转发至第一次挑中的RS典型使用场景是正向代理缓存场景中的负载均衡 如宽带运营商动态方法主要根据每RS当前的负载状态及调度算法进行调度Overheadvalue较小的RS将被调度1、LCleast connections最少链接发适用于长连接应用Overhead负载值activeconns活动链接数 x 256inactiveconns 非活动链接数2、WLCWeighted LC权重最少链接默认调度方法Overhead(activeconns x 256inactiveconns)/weight3、SEDShortest Expection Delay,初始连接高权重优先Overhead(activeconns1inactiveconns) x 256/weight但是当node1的权重为1node2的权重为10经过运算前几次的调度都会被node2承接4、NQNever Queue第一轮均匀分配后续SED5、LBLCLocality-Based LC动态的DH算法使用场景根据负载状态实现正向代理6、LBLCRLBLC with Replication带复制功能的LBLC解决LBLC负载不均衡问题从负载重 的复制到负载轻的RS4.15版本内核以后新增调度算法1.FO(Weighted Fai Over)调度算法常用作灰度发布在此FO算法中遍历虚拟服务所关联的真实服务器链表找到还未过载(未设置IP_VS_DEST_FOVERLOAD标志)的且权重最高的真实服务器进行调度当服务器承接大量链接我们可以对此服务器进行过载标记IP_VS_DEST_F OVERLOAD那么vs调度器就不会把链接调度到有过载标记的主机中。2.OVF(Overflow-connection)调度算法基于真实服务器的活动连接数量和权重值实现。将新连接调 度到权重值最高的真实服务器直到其活动连接数量超过权重值之后调度到下一个权重值最高的真实服务器,在此OVF算法中遍历虚拟 服务相关 联的真实服务器链表找到权重值最高的可用真实服务器。一个可用的真实服务器需 要同时满足以下条件:未过载(未设置IP_VS_DEST_F OVERLOAD标志)真实服务器当前的活动连接数量小于其权重值其权重值不为零Lvs相关命令Lvs相关信息程序包ipvsadmUnit File: ipvsadm.service主程序/usr/sbin/ipvsadm规则保存工具/usr/sbin/ipvsadm-save规则重载工具/usr/sbin/ipvsadm-restore配置文件/etc/sysconfig/ipvsadm-configipvs调度规则文件/etc/sysconfig/ipvsadmidvsadm命令核心功能:集群服务管理:增、删、改集群服务的RS管理:增、删、改查看开启监控[rootlocalhost ~]# watch -n 1 ipvsadm -Lnlvs集群中的增删改管理集群服务中的增删改管理集群服务ipvsadm -A|E -ttcp|uudp|f防护墙标签 \service-address(集群地址) \[-s scheduler(调度算法)] \[-p [timeout]] \[-M netmask] \[--pepersistence_engine] \[-b sched-flags]ipvsadm -D -t|u|f service-address 删除ipvsadm –C 清空ipvsadm –R 重载ipvsadm -S [-n] 保存管理集群中的real serveripvsadm -a|e -t|u|f service-address -r server-address [-g | -i| -m](工作模式) [-wweight](权重)ipvsadm -d -t|u|f service-address -r server-address 删除RSipvsadm -L|l [options] 查看rsipvsadm -Z [-t|u|f service-address] 清楚计数器#设定服务器vip端口及调度算法 [rootlocalhost ~]# ipvsadm -A -t 172.25.254.128:80 -s rr [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.128:80 rr #指定使用防火墙标记来进行轮询 [rootlocalhost ~]# ipvsadm -A -f 66 -p 3000 [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.128:80 rr FWM 66 wlc persistent 3000 #更改权重 [rootlocalhost ~]# ipvsadm -E -t 172.25.254.128:80 -s wrr [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.128:80 wrr FWM 66 wlc persistent 3000 #删除IP [rootlocalhost ~]# ipvsadm -D -f 66 [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.128:80 wrr管理集群RealServer的增删改ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]-A #添加-E #修改-t #tcp服务-u #udp服务-s #指定调度算法默认为WLC-p #设置持久连接超时持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver-f #firewall mask 火墙标记是一个数字#增加 [rootlocalhost ~]# ipvsadm -a -t 172.25.254.128:80 -r 192.168.0.10 -m [rootlocalhost ~]# ipvsadm -a -t 172.25.254.128:80 -r 192.168.0.20 -m [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.128:80 wrr - 192.168.0.10:80 Masq 1 0 0 - 192.168.0.20:80 Masq 1 0 0 #修改 [rootlocalhost ~]# ipvsadm -e -t 172.25.254.128:80 -r 192.168.0.10 -w 2 -m [rootlocalhost ~]# ipvsadm -e -t 172.25.254.128:80 -r 192.168.0.20 -w 5 -i [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.128:80 wrr - 192.168.0.10:80 Masq 2 0 0 - 192.168.0.20:80 Tunnel 5 0 0 #删除 [rootlocalhost ~]# ipvsadm -d -t 172.25.254.128:80 -r 192.168.0.20 [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.128:80 wrr - 192.168.0.10:80 Masq 2 0 0 #清空策略 [rootlocalhost ~]# ipvsadm -C [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn自定义文件保存策略[rootlocalhost ~]# ipvsadm -A -t 172.25.254.128:80 -s rr [rootlocalhost ~]# ipvsadm -a -t 172.25.254.128:80 -r 192.168.0.10 -m [rootlocalhost ~]# ipvsadm -a -t 172.25.254.128:80 -r 192.168.0.20 -m [rootlocalhost ~]# ipvsadm-save -A -t 172.25.254.128:http -s rr -a -t 172.25.254.128:http -r 192.168.0.10:http -m -w 1 -a -t 172.25.254.128:http -r 192.168.0.20:http -m -w 1 [rootlocalhost ~]# ipvsadm-save /mnt/haha [rootlocalhost ~]# ipvsadm -C [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn [rootlocalhost ~]# ipvsadm-restore /mnt/haha [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.254.128:80 rr - 192.168.0.10:80 Masq 1 0 0 - 192.168.0.20:80 Masq 1 0 0开机自启动ipvs策略[rootlvs-server ~]# ipvsadm-save /etc/sysconfig/ipvsadm [rootlvs-server ~]# systemctl enable --now ipvsadm.service reboot #重启后仍然生效 [rootlvs-server ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.100:80 rr - 192.168.0.10:80 Masq 1 0 0 - 192.168.0.20:80 Masq 1 0 0lvs的多端口轮询问题解决方案利用火墙标记解决轮询错误#在RS1和RS2中开启https [rootRS1RS2 ~]# dnf install mod_ssl -y [rootRS1RS2 ~]# systemctl restart httpd [rootRS1RS2 ~]# systemctl restart httpd在vsnode中添加https的轮询策略IPa [rootlocalhost ~]# ipvsadm -A -t 192.168.0.128:80 -s rr [rootlocalhost ~]# ipvsadm -a -t 192.168.0.128:80 -r 192.168.0.10 -g [rootlocalhost ~]# ipvsadm -a -t 192.168.0.128:80 -r 192.168.0.20 -g [rootlocalhost ~]# ipvsadm -A -t 192.168.0.128:443 -s rr [rootlocalhost ~]# ipvsadm -a -t 192.168.0.128:443 -r 192.168.0.10:443 -g [rootlocalhost ~]# ipvsadm -a -t 192.168.0.128:443 -r 192.168.0.20:443 -g [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.128:80 rr - 192.168.0.10:80 Route 1 0 0 - 192.168.0.20:80 Route 1 0 0 TCP 192.168.0.128:443 rr - 192.168.0.10:443 Route 1 0 0 - 192.168.0.20:443 Route 1 0 0错误示范[rootclient ~]# curl 192.168.0.128;curl -k https://192.168.0.128 RS2 - 192.168.0.20 RS2 - 192.168.0.20 #当上述设定完成后http和https是独立的service轮询会出现重复问题解决方案使用火墙标记访问vip的80和443的所有数据包设定标记为6666然后对此标记进行负载解决方案使用火墙标记访问vip的80和443的所有数据包设定标记为6666然后对此标记进行负载 [rootlocalhost ~]# iptables -t mangle -A PREROUTING -d 192.168.0.128 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 6666 [rootlocalhost ~]# ipvsadm -A -f 6666 -s rr [rootlocalhost ~]# ipvsadm -a -f 6666 -r 192.168.0.10 -g [rootlocalhost ~]# ipvsadm -a -f 6666 -r 192.168.0.20 -g #测试在客户端 [rootclient ~]# curl 192.168.0.128;curl -k https://192.168.0.128 RS2 - 192.168.0.20 RS1 - 192.168.0.10利用持久连接实现会话粘滞1.设定ipvs调度策略rootlocalhost ~]# ipvsadm -A -f 6666 -s rr -p 1 [rootlocalhost ~]# ipvsadm -a -f 6666 -r 192.168.0.10 -g [rootlocalhost ~]# ipvsadm -a -f 6666 -r 192.168.0.20 -g [rootlocalhost ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags - RemoteAddress:Port Forward Weight ActiveConn InActConn FWM 6666 rr persistent 1 - 192.168.0.10:0 Route 1 0 0 - 192.168.0.20:0 Route 1 0 02.测试[rootclient ~]# curl 192.168.0.128 RS1 - 192.168.0.10 [rootclient ~]# curl 192.168.0.128 RS1 - 192.168.0.103.观察[rootlocalhost ~]# watch -n 1 ipvsadm -Lnc IPVS connection entries pro expire state source virtual destination TCP 01:56 FIN_WAIT 172.25.254.99:42420 192.168.0.128:80 192.168.0.20:80 IP 00:57 ASSURED 172.25.254.99:0 0.0.26.10:0 192.168.0.20:0 TCP 01:54 FIN_WAIT 172.25.254.99:46216 192.168.0.128:80 192.168.0.20:80 TCP 01:55 FIN_WAIT 172.25.254.99:46222 192.168.0.128:80 192.168.0.20:80