首先说一下keepalived: Keepalived 大致分两层结构:用户空间 user space和内核空间 kernel space 在 这个结构图里,处于下端的是内核空间,它包括ipvs和NETLINK两个部分。Ipvs的作用在前面的章节已经做过描述,不再重复叙述;netlink 提供高级路由及其他相关的网络功能,如果我们在负载均衡器上启用netfilter/iptable,将会直接影响它的性能。出于图形上方的组件为用户空 间,由它来实现具体的功能,下面选取几个重要的来做说明: 1、 WatchDog 负责监控checkers和VRRP进程的状况。 2、 Checkers 负责真实服务器的健康检查healthchecking,是keepalived最主要的功能。换句话说—可以没有VRRP Stack,但健康检查healthchecking是一定要有的。 3、 VRRP Stack负责负载均衡器之间的失败切换FailOver.如果只用一个负载均衡器,则VRRP不是必须的。 4、 IPVS wrapper 用来发送设定的规则到内核ipvs代码。 5、 Netlink Reflector 用来设定 vrrp 的vip地址等。 说一下我的问题: 今天在检查运维新安装的keepalive机器的时候发现有有一组keepalived机器 keepalived的进程是2个。 正常情况下是三个 这三个进程是: 父进程:内存管理,监控子进程。 VRRP子进程 healthcheck 子进程 而下面这个出问题的机器上只有 父进程:内存管理,监控子进程。 VRRP子进程 [root@modoor log]# ps -e |grep keepalived 18212 ? 00:00:00 keepalived 18213 ? 00:00:00 keepalived [root@modoor log]# 开始怀疑是版本的问题,于是在测试服新安装了一个, 发现版本一样测试服是三个进程而正式服还是二个进程。 继续看配置文件也没发现异常,那问题可能出现在安装方式上, 于是问了一下这个keepalived的安装过程,果然有发现 有2个keepalived进程的机器上keepalived的安装方式没有指定内核, 而本地的测试服有3个keepalived进程的指定了内核。对!问题就出现在这。有2个进程的keepalived的一组服务器能正常切换,唯一和3个集成keepalived不一样的就是VIP 切换的时间,如果有healthcheck 检测进程的话,VIP 切换基本只会丢一个包,而没有healthcheck的话VIP切换过程中ping VIP的话至少丢5个以上的包。 最后问题终于解决。
本文出自 “yaoshenshen” 博客,谢绝转载!
原文地址:http://shenshen.blog.51cto.com/156530/1559401