首先说一下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个以上的包。
最后问题终于解决。