lvs负载均衡的四种模式原理,LVS之DR模型,LVS+keeaplived实现负载均衡,keepalived实现高可用

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_36888624/article/details/79124068

一,LVS的简介:

Linux virtual system,是由目前阿里著名工程师章文嵩开发的一宽开源的软件。LVS工作在一台server上提供Directory(负载均衡器)的功能,它本身并不提供任何服务,只是把特定的请求转发给对应的realserver(后端真正的服务主机),通过对后端服务器的调度完成集群环境中的负载均衡。
LVS的核心组件为iipvs,工作在kernel中,是真正的用于实现根据调度策略把客户端的请求转发到RS。另一组件为ipvsadm,工作在用户空间,用于让用户定义ipvs规则的工具。所以我们只需要在server上安装ipvsadm就可以定义ipvs规则,并且在linux kernel的2.6版本以后是直接支持ipvs的,不需要编译内核

二,lvs的四种模式:

1,lvs的DR模式:

工作原理结构: 
这里写图片描述 
工作原理: 
**负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提 
高整个集群系统的吞吐量。跟 VS/TUN 相比,这种方法没有 IP 隧道的开销,但调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过交换机或者高速的 HUB 相连。VIP 地址为调度器和服务器组共享,调度器配置的 VIP 地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把 VIP 地址配置在各自的 Non-ARP 网络设备上,它对外面是不可见的,只是用于处 理目标地址为VIP 的网络请求。** 
实例场景设备清单: 
这里写图片描述 
说明:我这里为了方便,client 是与 vip 同一网段的机器。如果是外部的用户访问,将 client 替换成gateway 即可,因为 IP 包头是不变的,变的只是源 mac 地址。 
1 client 向目标 vip 发出请求,Director 接收。此时 IP 包头及数据帧头信息如下: 
这里写图片描述 
2 VS 根据负载均衡算法选择一台 active 的 realserver(假设是 192.168.57.122),将此 RIP 所在网卡的 mac 地址作为目标 mac 地址,发送到局域网里。此时 IP 包头及数据帧头信息如下: 
这里写图片描述 
3 realserver(192.168.57.122)在局域网中收到这个帧,拆开后发现目标 IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。此时 IP 包头及数据帧头信息如下: 
这里写图片描述 
4 如果 client 与 VS 同一网段,那么 client(192.168.57.135)将收到这个回复报文。如果跨了网段,那么报文通过 gateway/路由器经由 Internet 返回给用户

关于DR模式常见的问题: 
1. LVS/DR 如何处理请求报文的,会修改 IP 包内容吗? 
vs/dr 本身不会关心 IP 层以上的信息,即使是端口号也是 tcp/ip 协议栈去判断是否正确,vs/dr 本身主要做这么几个事: 
1)接收 client 的请求,根据你设定的负载均衡算法选取一台 realserver 的 ip; 
2)以选取的这个 ip 对应的 mac 地址作为目标 mac,然后重新将 IP 包封装成帧转发给这台 RS; 
3)在 hashtable 中记录连接信息。 
vs/dr 做的事情很少,也很简单,所以它的效率很高,不比硬件负载均衡设备差多少。 
数据包、数据帧的大致流向是这样的:client –> VS –> RS –> client 

2. RealServer 为什么要在 lo 接口上配置 VIP,在出口网卡上配置 VIP 可以吗? 
既然要让 RS 能够处理目标地址为 vip 的 IP 包,首先必须要让 RS 能接收到这个包。 
在 lo 上配置 vip 能够完成接收包并将结果返回 client。 
答案是不可以将 VIP 设置在出口网卡上,否则会响应客户端的 arp request,造成 client/gateway arp table 紊乱,以至于整个 loadbalance 都不能正常工作。

  1. LVS/DR loadbalancer(director)与 RS 为什么要在同一网段中? 
    从第一个问题中大家应该明白 vs/dr 是如何将请求转发给 RS 的了吧?它是在数据链路层来实现的,所以 director 必须和 RS 在同一网段里面。

  2. 为什么 director 上 eth0 接口除了 VIP 另外还要配一个 ip(即 DIP)? 
    如果是用了 keepalived 等工具做 HA 或者 LoadBalance,则在健康检查时需要用到 DIP 
    没有健康检查机制的 HA 或者 Load Balance 则没有存在的实际意义.

  3. LVS/DRip_forward 需要开启吗? 
    不需要。因为 director 跟 realserver 是同一个网段,无需开启转发。

2.LVS的隧道模式(LVS-TUN):

IP隧道技术:是路由器把一种网络层协议封装到另一个协议中以跨过网络传送到另一个路由器的处理过程。IP 隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术亦称为IP封装技术(IP encapsulation)。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。移动IPv4主要有三种隧道技术,它们分别是:IP in IP(ipip)、最小封装(gre)以及通用路由封装(sit)。这三种隧道技术都需要内核模块 tunnel4.ko 的支持。

ipip 需要内核模块 ipip.ko ,该方式最为简单!但是你不能通过IP-in-IP隧道转发广播或者IPv6数据包。你只是连接了两个一般情况下无法直接通讯的IPv4网络而已。
GRE 需要内核模块 ip_gre.ko ,GRE是最初由CISCO开发出来的隧道协议,能够做一些IP-in-IP隧道做不到的事情。比如,你可以使用GRE隧道传输多播数据包和IPv6数据包。
sit 他的作用是连接 ipv4 与 ipv6 的网络。个人感觉不如gre使用广泛 。

为创建隧道,隧道的客户机和服务器双方必须使用相同的隧道协议。隧道技术可分别以第2层或第3层隧道协议为基础。第2层隧道协议对应于OSI模型的数据链路层,使用帧作为数据交换单位。PPTP(点对点隧道协议)、L2TP(第二层隧道协议)和L2F(第2层转发协议)都属于第2层隧道协议,是将用户数据封装在点对点协议(PPP)帧中通过互联网发送。第3层隧道协议对应于OSI模型的网络层,使用包作为数据交换单位。IPIP(IP over IP)以及IPSec隧道模式属于第3层隧道协议,是将IP包封装在附加的IP包头中,通过IP网络传送。无论哪种隧道协议都是由传输的载体、不同的封装格式以及用户数据包组成的。它们的本质区别在于,用户的数据包是被封装在哪种数据包中在隧道中传输。

VS-TUN原理结构图: 
这里写图片描述 
原理: 
VS/TUN 技术对服务器有要求,即所有的服务器**必须支持 “ IP Tunneling” 或者 “ IP 
Encapsulation”协议。目前,VS/TUN 的后端服务器主要运行 Linux 操作系统。在 VS/TUN 的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。这样,负载调度器就可以处理大量的请求,它甚至可以调 度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈。即使负载调度器只有 100Mbps的全双工网卡,整个系统的最大吞吐量可超过 1Gbps。所以,VS/TUN 可以极大地增加负载调度器调度的服务器数量。VS/TUN 调度器可以调度上百台服务器,而它本身不会成为系统的瓶颈**,可以 用来构建高性能的超级服务器。

3,LVS/NAT模式:

首先client 发送请求[package] 给VIP;VIP 收到package后,会根据LVS设置的LB算法选择一个合适的realserver,然后把package 的DST IP 修改为realserver;realserver 收到这个package后判断dst ip 是自己,就处理这个package ,处理完后把这个包发送给LVS VIP;LVS 收到这个package 后把sorce ip改成VIP的IP,dst ip改成 client ip然后发送给client。 
NAT 模式 package in 和package out 都需要经过VS ;因此VS 的可能会成为一个系统瓶颈问题。

4.fullnat模式:

fullnat模式和nat模式的区别在于,fullnat需要做四次ip地址转换,客户端(cip)发的请求先到达vip,做一次DNAT,将dip改编为lip,lip到rip,又一次SNAT,这是数据包传到RS,同样,RS将数据返回给client也需要两次ip地址转换。所以LVS负载均衡器和真实主机可以不在同一个vlan中, 而且真实主机只需要接入内网。 
这里写图片描述 
看完上图后发现 FULLNAT有一个问题是:RealServer无法获得用户IP;淘宝通过叫TOA的方式解决的, 
主要原理是:将client address放到了TCP Option里面带给后端RealServer,RealServer收到后保存在socket 
的结构体里并通过toa内核模块hook了getname函数,这样当用户调用getname获取远端地址时,返回的是保 
存在socket的TCPOption的IP. 百度的BVS是通过叫ttm模块实现的,其实现方式跟toa基本一样,只是没有开源.

三,配置LVS

1,lvs实现负载均衡

server4上(VS)

#配置完整的yum源:
[root@server4 yum.repos.d]# vim rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.92.250/rhel6.5
enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release [LoadBalancer] name=LoadBalancer baseurl=http://172.25.92.250/rhel6.5/LoadBalancer gpgcheck=0 [HighAvailability] name=HighAvailability baseurl=http://172.25.92.250/rhel6.5/HighAvailability gpgcheck=0 [ResilientStorage] name=ResilientStorage baseurl=http://172.25.92.250/rhel6.5/ResilientStorage gpgcheck=0 [ScalableFileSystem] name=ScalableFileSystem baseurl=http://172.25.92.250/rhel6.5/ScalableFileSystem gpgcheck=0 #安装ipvsadm: yum install -y ipvsadm #添加ipvs的策略 ip addr add 172.25.92.100/24 dev eth0 #添加vip -A -t 172.25.92.100:80 -s rr #指定172.25.92.100为vs(调度器),使用rr调度策略 #添加两个(RS) -a -t 172.25.92.100:80 -r 172.25.92.5:80 -g -w 1 -a -t 172.25.92.100:80 -r 172.25.92.6:80 -g -w 1 /etc/init.d/ipvsadm save #保存策略 /etc/init.d/ipvsadm start [root@server4 ~]# ipvsadm -Ln #查看策略 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.92.100:80 rr -> 172.25.92.5:80 Route 1 0 0 -> 172.25.92.6:80 Route 1 0 0 

在server5和server6上:

/etc/init.d/httpd start     #开启apche服务
yum install -y arptables_jf.x86_64  #安装arptbles的管理工具 ip addr add 172.25.92.100/24 dev eth0 #添加vip arptables -A IN -d 172.25.92.100 -j DROP #丢弃对本机上172.25.92.100发来的所有数据包 arptables -A OUT -s 172.25.92.100 -j mangle --mangle-ip-s 172.25.92.2 #隐藏vip,只是对外公布自己的真实ip /etc/init.d/arptables_jf save #保存arp策略 此处,也可通过修改内核来实现RS上的vip隐藏。 此处解释:如果不再RS上添加arp规则,那么在VS和RS组成的lan网中会有多个相同的ip生效(vip),这样会导致数据流传输紊乱,所以需要隐藏RS的vip,只公布RS的真实ip。 经测试;如果删除VS主机上的vip,即取消调度器,但是RS(server5和server6)上的vip依然存在,在客户端访问:curl 172.25.92.100时依然会得到数据,但是此时的数据只是来自其中一台RS,vip对应的mac地址也只是其中一台RS,不能实现mac地址转换,也失去了负载均衡的意义,但是却依然可以传输数据包,说明如果不禁掉RS上的vip,在VS上的vip也存在时,是真正的会造成ip冲突。

测试:在172.25.254.92上:

[root@foundation92 Desktop]# curl 172.25.92.100
<h1>bbs.test.com</h1>
[root@foundation92 Desktop]# curl 172.25.92.100
<h1>www.test.com</h1> [root@foundation92 Desktop]# curl 172.25.92.100 <h1>bbs.test.com</h1> [root@foundation92 Desktop]# curl 172.25.92.100 <h1>www.test.com</h1> 可以看出来实现了负载均衡

2,lvs+ldirectord:

如果只是lvs负载均衡器的话,它本身没有健康检查机制,后端的RS就算宕掉了,VS上依然不会察觉,所以此处配合ldirectord实现后端的健康检查 
server4(VS)上:

[root@server4 ~]# yum install -y ldirectord-3.9.5-3.1.x86_64.rpm
[root@server4 ~]# rpm -ql ldirectord       #查看配置文件应该放的地方
/etc/ha.d
/etc/ha.d/resource.d
/etc/ha.d/resource.d/ldirectord
/etc/init.d/ldirectord
/etc/logrotate.d/ldirectord
/usr/lib/ocf/resource.d/heartbeat/ldirectord
/usr/sbin/ldirectord
/usr/share/doc/ldirectord-3.9.5
/usr/share/doc/ldirectord-3.9.5/COPYING /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /usr/share/man/man8/ldirectord.8.gz [root@server4 ~]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/ #将ldirectord的配置文件放在此处 cp: overwrite `/etc/ha.d/ldirectord.cf'? y [root@server4 ~]# cd /etc/ha.d/ [root@server4 ha.d]# vim ldirectord.cf #编辑配置文件 25 virtual=172.25.92.100:80 #修改为vip地址 26 real=172.25.92.5:80 gate #指定RS 27 real=172.25.92.6:80 gate 28 fallback=127.0.0.1:80 gate #当所有的RS都宕掉后,使用本地地址回应,此时应该回馈给客户的应该是提示信息,如“此网站正在维护“ 29 service=http 30 scheduler=rr #调度算法rr 31 #persistent=600 #持续时间,针对服务,ftp应该设置持续时间 32 #netmask=255.255.255.255 33 protocol=tcp 34 checktype=negotiate 35 checkport=80 36 request="index.html" 37 #receive="Test Page" #注释掉 38 #virtualhost=www.x.y.z #注释掉 [root@server4 ha.d]# /etc/init.d/ipvsadm stop #关掉ipvs原本的策略 ipvsadm: Clearing the current IPVS table: [ OK ] ipvsadm: Unloading modules: [ OK ] [root@server4 ha.d]# ipvsadm -Ln #查看,没有策略 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn [root@server4 ha.d]# /etc/init.d/ldirectord start #打开ldirectord,配置文件的策略自动加载进去 Starting ldirectord... success [root@server4 ha.d]# ipvsadm -Ln #查看,策略存在 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.92.100:80 rr -> 172.25.92.5:80 Route 1 0 0 -> 172.25.92.6:80 Route 1 0 0 InActConn:处理请求的次数

测试: 
RS(server5和server6)分别停掉apache服务,可以在VS上检测到,直到最后只剩下本地地址作为RS

[root@server5 ~]# /etc/init.d/httpd stop       #server5上的apache关闭
Stopping httpd:                                            [  OK ] [root@server4 ha.d]# ipvsadm -Ln #server4上发现server5不存在了 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.92.100:80 rr -> 172.25.92.6:80 Route 1 0 1 [root@server6 ~]# /etc/init.d/httpd stop #server6上的apache停掉 Stopping httpd: [ OK ] [root@server4 ha.d]# ipvsadm -Ln #server4上只剩下了本地地址 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.92.100:80 rr -> 127.0.0.1:80 Local 1 0 0 通过测试可以发现ldirectord可以实现lvs的后端健康检测。

3,LVS+keepalived实现负载均衡:

keepalived同样可以对lvs后端主机实现健康检查,同样也可以实现调度器高可用,架设多个keepalived可以实现高可用。 
应该注意的是ldirectord和keepalived只能开启一个,开启两个会冲突。ldirectord默认开启的 
server4(RS)上:

 #安装keepalived: 

 get keepalived-1.3.6.tar.gz 
 tar zxf keepalived-1.3.6.tar.gz #解压包 cd keepalived-1.3.6 less INSTALL #查看安装文档,安装依赖的包 yum install -y openssl-devel libnl-devel ipset-devel iptables-devel libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm #安装依赖库和包 cd keepalived-1.3.6 ./configure --prefix=/usr/local/keepalived --with-init=SYSV make && make install ln -s /usr/local/keepalived/etc/keepalived /etc/ ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ ln -s /usr/local/keepalived/sbin/keepalived /sbin/ which keepalived cd /usr/local/keepalived/etc/rc.d/init.d chmod +x keepalived #加执行权限才能启动 到此keepalived完成安装

LVS(DR)+keepalived

vim /etc/keepalived/keepalived.conf 
global_defs {
   notification_email {
    root@localhost       #健康检查报告通知邮箱
   }

   notification_email_from keepalived@loaclhost    #发送邮件的地址
   smtp_server 127.0.0.1 #邮件服务器 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr #vrrp_strict #此处应该注释掉,否则开启keepalived后会默认将vip(172.25.92.100)加入到iptables的禁止访问列表中,可以通过iptables -L看到 vrrp_garp_interval 0 vrrp_gna_interval 0 } #实现高可用的配置段 vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 92 #标示号要修改 priority 100 advert_int 1 #健康检测频率 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { #vip添加策略 172.25.92.100 } } #apache服务的负载均衡 virtual_server 172.25.92.100 80 { #定义虚拟主机(调度器) delay_loop 1 #RS宕掉后反应时间 lb_algo rr #调度算法rr lb_kind DR #DR模型 #persistence_timeout 50 #持续连接一台RS的时间,对于ftp服务需要开启 protocol TCP #RS健康检查机制 real_server 172.25.92.5 80 { weight 1 TCP_CHECK { #使用TCP_CHECK方式检查 connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 172.25.92.6 80 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } #ftp服务的负载均衡: virtual_server 172.25.92.100 21 { delay_loop 1 lb_algo rr lb_kind DR persistence_timeout 50 #ftp服务需要保持持续连接时间,防止传输的数据流中断 protocol TCP real_server 172.25.92.5 21 { weight 1 TCP_CHECK { connect_port 21 connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 172.25.92.6 21 { weight 1 TCP_CHECK { connect_port 21 connect_timeout 3 retry 3 delay_before_retry 3 } } 文件中后面的全部删除

实现ftp服务需要在servr5和server6上的做法:

yum install -y vsftpd
cd /var/ftp/
然后server5touch一个名为 server5的文件
server6 touch 一个名为server6的文件,方便测试
/etc/init.d/vsftpd start

apache服务负载均衡测试: 
server4(VS)上:

/etc/init.d/ipvsadm stop        #关闭ipvs,开启keepalived后会自动加载keepalived配置文件中的策略
/etc/init.d/ldirectord stop     #关闭ldirectord,防止影响keepalived
[root@server4 ~]# ipvsadm -Ln           #查看策略,此时没有
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn ip addr del 172.25.92.100/24 dev eth0 [root@server4 ~]# /etc/init.d/keepalived start 可以看到加在配置文件中的策略 在主机上使用命令:curl www.test.com,可以体现负载均衡。同时,宕掉一个server之后,在VS使用ivsadm -L 查看不到了,即实现了健康检查。

ftp服务负载均衡测试:

在主机上:lftp 172.25.92.100
ls
可以看见有server5或server6文件
当关闭其中以一台主机的ftp时,自动切换到另一台主机的ftp服务器。 两台不同的主机同时使用lftp 172.25.92.100,一个登陆的是server5,一个登陆的是server6,即实现了负载均衡。

注意:如果配置过程中出现问题: 
第一,查看数据包是否经过调度器(InActConn) 
第二,查看RS是否有arptables策略,以及RS是否有vip 
第三,在主机上过滤arp的信息(arp -an | grep 100)查看vip对应的mac地址

4,keepalived高可用:

keepalived可以实现负载均衡,但是只有一台keepalived主机时,如果它宕掉了,则数据不能转发,更不可能有负载均衡了,所以需要配置另一台keepalived实现高可用。即主备keepalived,一台主机上的keepalived怀掉了,可以由备份keepalived接管负载均衡调度。 
server7上:

server4:scp /usr/local/keepalived 172.25.92.7:/usr/local/ server7: ln -s /usr/local/keepalived/etc/keepalived/ /etc/ ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ ln -s /usr/local/keepalived/sbin/keepalived /sbin/ which keepalived cd /usr/local/keepalived/etc/rc.d/init.d/ chmod +x keepalived /etc/init.d/keepalived start 查看日志可以看到: [root@server7 init.d]# tail -f /var/log/messages Jan 22 11:14:18 server7 Keepalived_vrrp[5191]: VRRP_Instance(VI_1) Received advert with higher priority 100, ours 90 Jan 22 11:14:18 server7 Keepalived_vrrp[5191]: VRRP_Instance(VI_1) **Entering BACKUP STATE** Jan 22 11:14:18 server7 Keepalived_vrrp[5191]: VRRP_Instance(VI_1) removing protocol VIPs. #关闭server1上的keepalived: [root@server7 init.d]# tail -f /var/log/messages Jan 22 11:15:52 server7 Keepalived_vrrp[5191]: VRRP_Instance(VI_1) Transition to **MASTER STATE** Jan 22 11:15:53 server7 Keepalived_vrrp[5191]: VRRP_Instance(VI_1) Entering MASTER STATE Jan 22 11:15:53 server7 Keepalived_vrrp[5191]: VRRP_Instance(VI_1) setting protocol VIPs. Jan 22 11:15:53 server7 Keepalived_vrrp[5191]: Sending gratuitous ARP on eth0 for 172.25.92.100 Jan 22 11:15:53 server7 Keepalived_vrrp[5191]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 172.25.92.100 Jan 22 11:15:53 server7 Keepalived_vrrp[5191]: Sending gratuitous ARP on eth0 for 172.25.92.100 Jan 22 11:15:53 server7 Keepalived_vrrp[5191]: Sending gratuitous ARP on eth0 for 172.25.92.100 Jan 22 11:15:53 server7 Keepalived_vrrp[5191]: Sending gratuitous ARP on eth0 for 172.25.92.100 Jan 22 11:15:53 server7 Keepalived_vrrp[5191]: Sending gratuitous ARP on eth0 for 172.25.92.100 Jan 22 11:15:58 server7 Keepalived_vrrp[5191]: Sending gratuitous ARP on eth0 for 172.25.92.100 Jan 22 11:15:58 server7 Keepalived_vrrp[5191]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 172.25.92.100 #可以看见server7上的keepalived变为主调度器 keealived三个进程,一个主进程,另两个一个是机那康检查,一个是高可用 [root@server7 ~]# ps ax 可以看到keepalived由三个进程; 1038 ? Ss 0:00 keepalived -D 1040 ? S 0:00 keepalived -D 1041 ? S 0:00 keepalived -D keealived三个进程,一个主进程,另两个一个是负责健康检查,一个是负责高可用

可以查看进程之间的关系: 
cat /proc/1038/status 
这里写图片描述 
cat /proc/1040/status 
这里写图片描述 
cat /proc/1041/status 
这里写图片描述 
可以看见主进程为1038

猜你喜欢

转载自www.cnblogs.com/cheyunhua/p/10107462.html