linux cpu占用率如何看
269
2022-10-07
LVS-DR模式+Keepalived
一,LVS-DR工作原理
1.工作流程
1.客户端发送请求到Director server (负载均衡器),请求的数据报文(源IP是CIP,目标IP是VIP)到达内核空间。2.Director Server和Real server在同一个网络中,数据通过二层数据链路层来传输。3.内核空间判断数据包的目标IP是本机VIP,此时IPVS (IP虚拟服务器)比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。修改源MAC地址为Director Server的MAC地址,修改目标MAC地址为Real Server的MAC地址,源IP地址与目标IP地址没有改变,然后将数据包发送给Real Server。4.到达Real server的请求报文的MAC地址是自身的MAC地址,就接收此报文。数据包重新封装报文(源IP地址为VIP,目标IP为CIP),将响应报文通过 lo 接口传送给物理网卡ens33然后向外发出。5.Real Server 直接将响应报文传送到客户端。
2.数据包流向
1.客户端发送请求到Director Server (负载均衡器),请求的数据报文到达内核空间。报文:源IP:客户端的IP 目标IP:VIP源MAC:客户端的MAC 目的MAC:Director Server的MAC2.内核空间判断数据包的目标IP是本机VIP,此时IPVS(IP虚拟服务器)比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。然后将数据包发送给根据负载均衡算法选择的Real Server。(Director Sever和Real Server在同一个网络中,数据通过二层数据链路层来传输。)报文:源IP:客户端的IP 目标IP:VIP源MAC:Director Server的MAC 目的MAC:Real Server的MAC3.到达Real server的请求报文的MAC地址是自身的MAC地址,就接收此报文。数据包重新封装报文,将响应报文通过lo接口传送给物理网卡然向外发出。报文:源IP:VIP 目标IP:客户端的IP源MAC:Real Server的MAC 目的MAC:客户端的MAC4.通过交换机和路由器将响应报文传送到客户端。客户端收到回复报文,得到想要的服务,但是不会知道是哪台服务器处理的。
3.DR模式的特点
1.Director Server和Real Server必须在同一个物理网络中。2.Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问。3.Director Server作为群集的访问入口,但不作为网关使用。所有的请求报文经由Director Server,但回复响应报文不能经过Director Server4.Real Server的网关不允许指向Director Server IP,即Real Server发送的数据包不允许经过Director Server。5.Real Server上的l0接口配置VIP的IP地址。
4.LVS-DR中的ARP问题
1.在LVS-DR负载均衡集群中,负载均衡与节点服务器都要配置相同的VIP地址。在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱。解决思路:当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同网络上,它们都会接收到ARP广播。只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播。对节点服务器进行处理,使其不响应针对VIP的ARP请求。解决方法:使用虚接口lo:0承载VIP地址设置内核参数arp_ignore=1:系统只响应目的IP为本地lP的ARP请求RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址。发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址如:ens33路由器收到ARP请求后,将更新ARP表项原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效解决方法:对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址。解决ARP的两个问题的设置方法
二,Keepalived
1.keepalived是什么
keepalived是集群管理中保证集群高可用的一个服务软件,它的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后,自动将web服务器加入到服务器集群中。解决了静态路由的单点故障问题。Keepalived:早期的时候,就是为LVS 的HA高可用来设计1.支持故障自动切换通过VIP虚拟地址漂移;2.支持节点健康状态检查(Health Checking);【keepalived健康检查的方式:1.ping,只能知道对方的网卡或机器有没有宕机,没法检测lvs或nginx服务本身服务有没有挂掉(节点上的服务是否异常)2.scripts脚本,周期检查,过滤服务的状态信息 if $? = 0 ,查看完后,停止或启动keepalived,邮件告警】健康检查意义(目的):为了服务可以正常对外暴露,为了用户可以正常访问。3.判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到backup节点保证业务正常,当 master 故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点(优先级),VIP漂移至优先级高的节点。
2.Keepalived实现原理
keepalived采用VRRP热备份协议实现Linux 服务器的多机热备功能;VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案;由多台路由器组成一个热备份组,通过共用的虚拟IP地址对外提供服务;每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态;若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务。
3.keepalived主要模块
core模块为keepalived的核心,负责主进程的启动、维护、以及全局配置文件的加载和解析。check模块负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
4.keepalived脑裂问题
Keepalived的BACKUP主机在收到不MASTER主机报文后就会切换成为master,如果是它们之间的通信线路出现问题,无法接收到彼此的组播通知,但是两个节点实际都处于正常工作状态,这时两个节点均为master强行绑定虚拟IP,导致不可预料的后果,这就是脑裂。
三,DR+Keepalived部署
搭建环境:DR 服务器(负载调度器)192.168.118.11 | ens33:0 (VIP):192.168.118.100Web节点服务器1 192.168.118.13 | lo:0 (VIP):192.168.118.100Web节点服务器2 192.168.118.14 | lo:0 (VIP):192.168.118.100
负载调度器:(1)关防火墙,加载ip_vs模块systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0#加载ip_vs模块,并安装ipvsadm工具modprobe ip_vscat /proc/net/ip_vsyum install -y ipvsadm(2)配置虚拟 IP 地址vim /etc/sysconfig/network-scripts/ifcfg-ens33:0DEVICE=ens33:0ONBOOT=yesIPADDR=192.168.118.100NETMASK=255.255.255.255 ifup ens33:0ifconfig ens33:0
(3)调整 proc 响应参数#由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭Linux 内核的重定向参数响应,不充当路由器,vim /etc/sysctl.confnet.ipv4.ip_forward = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0sysctl -p
(4)配置负载分配策略ipvsadm-save > /etc/sysconfig/ipvsadm或者ipvsadm --save > /etc/sysconfig/ipvsadmsystemctl start ipvsadm.service#清除原有策略ipvsadm -Cipvsadm -A -t 192.168.118.100:80 -s rripvsadm -a -t 192.168.118.100:80 -r 192.168.118.13:80 -g #如果这里是隧道模式,直接将-g替换成-i即可ipvsadm -a -t 192.168.118.100:80 -r 192.168.118.14:80 -g#查看节点状态,Route代表 DR模式ipvsadm -ln
Web1和web2配置相同systemctl stop firewalld.servicesystemctl disable firewalld.servicesetenforce 0配置虚拟 IP 地址#此地址仅用做发送 Web 响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。#因此使用虚接口 lo:0 来承载 VIP 地址,并为本机添加一条路有记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。vim /etc/sysconfig/network-scripts/ifcfg-lo:0DEVICE=lo:0IPADDR=192.168.118.100NETMASK=255.255.255.255ONBOOT=yesifup lo:0ifconfig lo:0#设置临时的路由,重启失效;禁锢路由route add -host 192.168.118.100 dev lo:0#查看路由route -n#开机自动添加路由,生产环境应该用这个vim /etc/rc.local/sbin/route add -host 192.168.118.100 dev lo:0chmod +x /etc/rc.d/rc.local
调整内核的ARP 响应参数以阻止更新 VIP 的MAC 地址,避免发生冲突vim /etc/sysctl.confnet.ipv4.conf.lo.arp_ignore = 1 #系统只响应目的IP为本地IP的ARP请求net.ipv4.conf.lo.arp_announce = 2 #系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2sysctl -pyum install -y start enable 'this is test1 web!' > /var/'this is test2 web!' > /var/ens33:192.168.118.128部署keepalived主yum -y install keepalivedcd /etc/keepalived/cp keepalived.conf keepalived.conf.bakvim keepalived.confglobal_defs { router_id lvs_01}vrrp_instance vi_1 { state MASTER interface ens33 virtual_router_id 51 priority 110 advert_int 1 authentication { auth_type PASS auth_pass 6666 }virtual_ipaddress { 192.168.118.100}}virtual_server 192.168.118.100 80 { lb_algo rr lb_kind DR persistence_timeout 6 protocol TCPreal_server 192.168.118.13 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 }}real_server 192.168.118.14 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 }}}
部署keepalived备systemctl stop firewalld.servicesetenforce 0 yum -y install ipvsadm keepalivedmodprobe ip_vs #加载ip_vs模块cat /proc/net/ip_vs #查看ip_vs版本信息 ipvsadm-save > /etc/sysconfig/ipvsadmsystemctl start ipvsadm cd /etc/sysconfig/network-scripts/cp -p ifcfg-ens33 ifcfg-ens33:0vim ifcfg-ens33:0 DEVICE=ens33:0ONBOOT=yesIPADDR=192.168.118.100NETMASK=255.255.255.255 ifup ens33:0ifconfig ens33:0 systemctl restart network
#调整proc响应参数#由于LVS负载均衡器和各节点需要共用vip地址,应该关闭linux内核的重定向响应参数,不充当路由器(转发、重定向)vim /etc/sysctl.confnet.ipv4.ip_forward = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0 sysctl -p vim /opt/dr.sh#!/bin/bashipvsadm -Cipvsadm -A -t 192.168.118.100:80 -s rr #这里指定的虚拟IP为ens33网卡ip,启动keepliaved后会自动绑定虚拟网卡ipvsadm -a -t 192.168.118.100:80 -r 192.168.118.13:80 -gipvsadm -a -t 192.168.118.100:80 -r 192.168.118.14:80 -gipvsadm ipvsadm -Lnc cd /etc/keepalived/cp keepalived.conf keepalived.conf.bakvim keepalived.conf global_defs { router_id lvs_02}vrrp_instance vi_1 { State BACKUP interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 6666 }virtual_ipaddress { 192.168.118.100}}virtual_server 192.168.118.100 80 { lb_algo rr lb_kind DR persistence_timeout 6 protocol TCPreal_server 192.168.118.13 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 }}real_server 192.168.118.14 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 }}}
负载均衡器主关闭keepalived后。在负载均衡器备上,ip a查看VIP地址是否漂移
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~