案例说明:
在openEuler系统下通过脚本方式部署KingbaseES V8R6集群,脚本执行过程中,加载vip失败。本次故障问题,主要是因为openEuler系统shell和脚本的不兼容引起。
适用版本:
KingbaseES V8R6
系统环境:
openEuler-22.03-LTS
一、问题现象
通过脚本方式部署KingbaseES V8R6集群,脚本执行过程,提示“ vip无法加载”。
二、问题分析
1、查看install.conf配置(vip相关配置)
[kingbase@node101 ~]$ cat install.conf |grep -v ^#|grep -v ^$
[install]
on_bmj=0
all_ip=(172.31.*.27 172.31.*.28 172.31.*.29)
.....
virtual_ip="172.31.*.121/24"
net_device=(ens33 ens33 ens33)
net_device_ip=(172.31.*.27 172.31.*.28 172.31.*.29)
ipaddr_path="/usr/sbin"
arping_path="/home/kingbase/cluster/kingbase/bin"
ping_path="/usr/bin"
.......
如上所示,和vip相关的配置正确。
2、查看故障日志
如下图所示,在测试vip地址是否已被占用(ping)测试,返回的变量值为空。
3、分析部署脚本'vip Cannot use'的原因
如下图所示,脚本通过ping vip和当前主机是否已经加载vip来判断vip地址是否被占用,当ping返回的结果非0,而且vip已经被加载,将提示 ’vip Cannot use‘错误。
4、执行ping测试
1)CentOS系统测试
如下图所示,对ip地址执行ping测试,可ping通地址返回结果非0,没有被使用的ip,无法ping通返回0。
2)openEuler系统测试
如下图所示,在openEuler测试,ping不通的ip返回空值。
如下图所示,系统执行ping测试后返回的提示为中文,而脚本是通过英文‘received’过滤,因此返回空值。
经过多次测试,需要将语句改为如下:(返回0)
三、问题解决
1、修改部署脚本判断vip是否被占用ping语句,如下图所示:
2、执行部署脚本,部署成功。
四、问题总结
此次部署问题,是由openEuler系统shell和脚本部分语句部兼容引起:
1、系统提示,显示为中文,脚本语句通过英文单词执行过滤,过滤失败。
2、grep中‘-w’参数,中文支持问题。-w,按照单词过滤,在系统提示‘已接收’,用-w ‘接收’无法过滤。
3、 2>/dev/null,对于语句执行错误的提示写入到/dev/null,对于CentOS系统,能返回ping结果,但是openEuler将不再返回ping结果。
在一些比较特殊的操作系统,通过脚本部署时,要注意shell的兼容性。
标签:脚本,V8R6,部署,ping,---,vip,openEuler,172.31
From: https://www.cnblogs.com/kingbase/p/17561172.html