http://www.loveunix.net/viewthread.php?tid=98950&extra=&page=1
# cat /etc/inittab|grep ha
brc::sysinit:/sbin/rc.boot 3 >/dev/console 2>&1 # Phase 3 of system boot
harc:2:wait:/usr/es/sbin/cluster/etc/harc.net # HACMP for AIX network startup
ha_star:h2:once:/etc/rc.ha_star >/dev/console 2>&1
hacmp:2:once:/usr/es/sbin/cluster/etc/rc.init >/dev/console 2>&1
1,
问题现象
AIX在安装了PowerHA5.5之后,一旦系统重启,网关就丢失。
2,
诊断
01)检查inet0设备的属性,网关存在,排除ODM库出错的可能性。
02)通常网关是由/etc/rc.net脚本在系统启动时候添加的。init进程根据/etc/inittab文件调用的第一个脚本是/sbin/rc.boot 3。rc.boot脚本在phase 3调用cfgmgr -p2,/etc/rc.net就是在此时被cfgmgr调用的。是否可能没被调用?
3,
检查Config_Rules
Config_Rules:
phase = 2
seq = 18
boot_mask = 0
rule = "/usr/lib/methods/cfgrcnet"
这个感觉和rc.net有点关系,应该是在这个二进制可执行文件内部调用了/etc/rc.net。通过strings命令输出/usr/lib/methods/cfgrcnet命令的字符串。
/etc/rc.net -2
说明/etc/rc.net在系统启动时候确实被调用了。那么看看rc.net的日志输出吧。
4,
检查/tmp/rc.net.out
0821-003 cfgif: No interfaces were configured.
<hostname>
0821-279 writing to routing socket: Cannot reach the destination network.
0821-103 : The command /usr/sbin/route add -net -hopcount 0
-static 0 <gateway> failed.
这个是重点。一二行是说和hostname匹配的IP地址不存在,三四行是说添加网关失败。其中hostname就是HACMP永久IP地址对应的主机名,而gateway就是丢似乎的网关。
几个说明:
a.
网关应该和service ip在同一网段
b.
serviced ip和base ip应该在不同网段
c.
如果没有其他手段,service ip不起来,那么网关也不会起来,因为没有IP地址
d.
HACMP的persistent ip就是解决这个问题的手段之一,persistent ip可以和service ip在同一网段,并且可以在/etc/hosts中和hostname绑定
e.
persistent ip在开机后自动添加,但是通过HACMP的harc.net脚本添加的
f.
harc.net在rc.boot后执行。所以在rc.boot在调用rc.net脚本时候系统中还没有persistent ip,因此出现0821-003 cfgif: No interfaces were configured报错。系统抱怨找不到和主机名匹配的ip地址。
g.
因为persistent ip和service ip都没有起来,所以网关也无法起来。就是route命令失败。
h.
原因可以确定下来是harc.net调用的太晚,或者说harc.net被调用后没有再次调用/etc/rc.net脚本。那么为什么HACMP5.2没有这个问题,而PowerHA5.5有这个问题?
i.
对比HACMP5.2和PowerHA 5.5的harc.net脚本,有很多不同,但是和这个问题相关的应该是这个。
在HACMP5.2的脚本中:
cl_configure_persistent_address config_all -d
/etc/rc.net –boot
在PowerHA5.5的脚本中:
clutils_log "configure all persistent IP addresses"
cl_configure_persistent_address config_all –d
不管什么原因,PowerHA5.5的脚本中将调用/etc/rc.net的命令去掉了。这个应该就是网关丢失的关键。
j.
编辑/usr/es/sbin/cluster/etc/harc.net,添加/etc/rc.net
clutils_log "configure all persistent IP addresses"
cl_configure_persistent_address config_all -d
########edit by xxx########
clutils_log "invoke /etc/rc.net -boot by xxx"
/etc/rc.net -boot
k.
重启机器
重启后网关仍然存在,检查rc.net.out。虽然仍有0821-003错误,但是网关添加成功。至此可以认为诊断结束。
l.
5,
后继处理
a.
因为手工修改了HACMP的脚本,所以继续观察。
b.
等待IBM的补丁。
6,
powerha5.5的sp2补丁中修复了这个bug。不是在harc.net中调用/etc/rc.net,而是增加了如下命令: clutils_log "install any default routes on persistent subnets" mkdev -l inet0 >> $CLUTILS_LOG_FILE 2>&1 作用应该是一样的。 |
===============================================================================
其实有一个很好解决的办法,不用那么麻烦: 用alias方式把persisitent ip配置到boot1网卡上,这样网卡起来就有persistent ip,而不是依赖HACMP来起persistent ip,就算HACMP软件都被删除了,persistent ip永远是可以访问的。自然也不再需要关心rc.net与harc的先后问题 |
===============================================================================