KingbaseES V8R6集群部署案例之---脚本部署节点环境检查故障
KingbaseES V8R6集群部署案例之---脚本部署节点环境检查故障
案例说明:
KingbaseES V8R6集群在部署前会对集群节点系统环境进行检测,检测失败后,将中断部署;其中一个检测项,检测节点上是否已经存在数据库服务。如果已经存在数据库服务,则部署将会中断。
适用版本:
KingbaseES V8R6
一、问题现象
在BMJ环境下,通过脚本部署KingbaseES V8R6集群,检测发现其中一个节点运行数据库服务,导致检测失败,部署终止,如下图所示:
二、问题分析
1、检查失败节点数据库服务状态
如下图所示,实际本节点是一台应用节点,只是连接数据库进行了业务访问,并没有运行数据库服务(无监听数据库端口的进程)。
2、查看脚本检测机制
如下图所示:
1)通过netstat检测数据库服务端口,是否有进程访问。
2)如果访问数据库服务端口的进程数是0,将检测成功。
3)非0,如果是BMJ环境,将执行sys_ctl关闭数据库服务。
4)如果数据库服务关闭失败,将检测失败。
3、执行检测语句
如下图所示,此节点访问数据库端口的进程数非0,没有运行数据库服务(监听数据库端口),此系统为BMJ环境,执行sys_ctl关闭数据库将失败,检测结果失败。
三、问题解决
1、通用机环境
如以下测试,此节点没有运行数据库服务,但是访问了数据库服务,通过netstat检测有两个进程访问数据库服务端口。在检测语句里增加‘grep -i listen'过滤后(监听数据库服务的进程),统计结果将为0,可以通过脚本检测。
[kingbase@node103 bin]$ ./ksql -h 192.168.1.102 -U system test
ksql (V8.0)
Type "help" for help.
test=#
[kingbase@node103 ~]$ netstat -apn 2>/dev/null|grep -w 54321
tcp 0 0 192.168.1.103:10483 192.168.1.102:54321 TIME_WAIT -
tcp 0 0 192.168.1.103:10484 192.168.1.102:54321 ESTABLISHED 3720/./ksql
[kingbase@node103 ~]$ netstat -apn 2>/dev/null|grep -w 54321|wc -l
2
# 检测语句增加‘grep -i listen’
[kingbase@node103 ~]$ netstat -apn 2>/dev/null|grep -w 54321|grep -i listen|wc -l
0
如下图所示,增加对数据库端口监听进程的过滤:(可以修改脚本检测语句通过检测)
2、BMJ环境
由于BMJ环境下,脚本不允许被修改(脚本文件已经被hash认证,修改破坏认证校验),对于此种情况只能在业务访问数据库服务结束后部署,或选择另外干净的节点再部署。
四、总结
在部署集群时,尽量选择无其他业务的节点作为数据库服务器,否则将影响集群正常部署;并且部署后业务负载和数据库服务负载叠加,影响业务访问数据库服务的性能。