在rainbond平台上部署pig应用的时候遇到了一些意料之外的情况,将整个排错及处理的过程记录下来供大家参考:
问题现象:
当我安装好rainbond集群之后,通过应用市场一键部署pig应用,结果发现pig-upms-biz服务运行异常,查看pig-upms-biz服务的日志后发现是因为无法连接数据库造成的;
问题排查:
-
Pig-upms-biz服务依赖的数据库为pig-db服务(mysql-5.7.23),检查pig-db服务,发现运行状态正常,通过管理容器进入容器内部后查看数据库内容,缺少初始化应该创建出来的相关库和用户;
-
于是决定将pig-db服务的数据目录清空,重新初始化以便观察日志分析初始化失败的原因,在伸缩界面复制查询命令到服务器执行,查找到相关的挂载目录,关闭pig-db服务后,将挂载的数据目录清空,再次启动pig-db服务,日志显示初始化过程中存在
fsync() returned EIO
的报错信息; -
考虑到pig-db服务使用的是mysql数据库,于是去网上查找相关报错,官方对此bug的相关解释
通过阅读相关内容确定bug原因和磁盘I/O有关,rainbond集群默认采用的是NFS文件共享,pig-db服务的数据也都存储在/grdata共享存储目录中,为了确定bug是否和NFS服务相关,将pig-db服务的数据存储由共享存储改为了本地存储,果然成功完成初始化,由此定位问题应该和NFS服务相关;
-
NFS服务在首个管理节点上运行,在首个管理节点使用
journalctl -f
命令查看系统日志,相关报错如下kernel: NFSD: client X.X.X.X testing state ID with incorrect client ID
在网上搜索后发现了redhat官方相关bug记录
解决方案:
根据官方的相关内容,可能的原因有内核版本,NFS协议版本,文件系统等,内核版本在安装rainbond前已经依据提示升级到了5.4.1-1.el7.elrepo.x86_64,文件系统不方便调整,决定修改NFS的协议版本,修改/etc/sysconfig/nfs文件中的RPCNFSDARGS字段值为"-N 3",重启服务器,pig-db可以正常写入数据,问题得以解决。