共计 4047 个字符,预计需要花费 11 分钟才能阅读完成。
环境:RHEL6.5 + Vertica7.1.0-3
- 1. 故障现象
- 2. 重装集群
- 3. 再次定位
- 4. 解决问题
- 5. 总结
1. 故障现象
故障现象:Vertica 集群安装成功,但是创建数据库后一直无法 up.
具体报错输出如下:
Starting Vertica on all nodes. Please wait, databases with large catalogs may take a while to initialize.
Node Status: v_wnop_node0001: (DOWN)
Node Status: v_wnop_node0001: (DOWN)
Node Status: v_wnop_node0001: (DOWN)
Node Status: v_wnop_node0001: (DOWN)
Node Status: v_wnop_node0001: (DOWN)
Node Status: v_wnop_node0001: (DOWN)
Node Status: v_wnop_node0001: (DOWN)
Node Status: v_wnop_node0001: (DOWN)
Node Status: v_wnop_node0001: (DOWN)
Node Status: v_wnop_node0001: (DOWN)
ERROR: Database did not start cleanly on initiator node!
Stopping all nodes
进一步查看 vertica 日志:
[root@vnode01 v_wnop_node0001_catalog]# tail -f vertica.log
2016-09-07 15:19:07.018 unknown:0x7f298bac5700 [Txn] <INFO> Found my node (v_wnop_node0001) in the catalog
2016-09-07 15:19:07.018 unknown:0x7f298bac5700 [Txn] <INFO> Catalog info: version=0x1, number of nodes=1, permanent #=1, K=0
2016-09-07 15:19:07.018 unknown:0x7f298bac5700 [Txn] <INFO> Catalog info: current epoch=0x1
2016-09-07 15:19:07.018 unknown:0x7f298bac5700 [Catalog] <INFO> Catalog OID generator updated based on GLOBAL tier catalog
2016-09-07 15:19:07.018 unknown:0x7f298bac5700 [Init] <INFO> Catalog loaded
2016-09-07 15:19:07.018 unknown:0x7f298bac5700 [Comms] <INFO> About to launch spread with '/opt/vertica/spread/sbin/spread -c /data/verticadb/WNOP/v_wnop_node0001_catalog/spread.conf'
2016-09-07 15:19:07.019 unknown:0x7f298bac5700 [Comms] <INFO> forked spread pid=82427, wrote pidfile /data/verticadb/WNOP/v_wnop_node0001_catalog/spread.pid
2016-09-07 15:19:07.020 unknown:0x7f298bac5700 [Init] <INFO> Listening on port: 5433
2016-09-07 15:19:07.020 unknown:0x7f298bac5700 [Init] <INFO> About to fork
2016-09-07 15:19:07.021 unknown:0x7f298bac5700 [Init] <INFO> About to fork again
2016-09-07 15:19:07.023 unknown:0x7f298bac5700 [Init] <INFO> Completed forking
2016-09-07 15:19:07.023 unknown:0x7f298bac5700 [Init] <INFO> Startup [Connecting to Spread] Connecting to spread 4803
2016-09-07 15:19:37.039 unknown:0x7f298bac5700 [Init] <INFO> Spread daemon does not appear to be running on 192.168.1.105 -- exiting!
可以看到大概是 spread 进程在尝试连接 4803 端口时有什么样的问题,似乎 spread 进程压根没启动成功;
在检查各节点的防火墙和 SELinux 之后,都是关闭的状态,并未发现问题。
2. 重装集群
前期准备脚本和互信,可参考:
- Linux 快速配置集群 ssh 互信 http://www.linuxidc.com/Linux/2016-09/135430.htm
重装集群(先彻底删除再安装)
-- 删除集群
-- 杀掉 vertica 相关进程
cluster_run_all_nodes "hostname;ps -ef|grep vertica |grep -v grep|awk'{print $2}'|xargs kill -9"
-- 删除 vertica 软件
cluster_run_all_nodes "hostname;rpm -e vertica"
-- 杀掉 dbadmin 相关进程
cluster_run_all_nodes "hostname;ps -ef|grep dbadmin |grep -v grep|awk'{print $2}'|xargs kill -9"
-- 删除之前创建的组和用户
cluster_run_all_nodes "hostname;id dbadmin"
cluster_run_all_nodes "hostname;groupdel verticadba"
cluster_run_all_nodes "hostname;userdel -r dbadmin"
-- 删除数据存储目录,软件安装目录
cluster_run_all_nodes "hostname;rm -rf /data/verticadb"
cluster_run_all_nodes "hostname;rm -rf /opt/vertica"
-- 创建数据存储目录
cluster_run_all_nodes "hostname;mkdir -p /data/verticadb"
-- 安装
-- 安装软件
cd /usr2
rpm -ivh vertica-7.1.0-3.x86_64.RHEL5.rpm
-- 安装集群
/opt/vertica/sbin/install_vertica -s 192.168.1.105,192.168.1.106,192.168.1.107,192.168.1.108 -r /usr2/vertica-7.1.0-3.x86_64.RHEL5.rpm --failure-threshold=HALT -u dbadmin -p vertica
-- 给数据存储目录赋予权限
cluster_run_all_nodes "hostname;chown -R dbadmin:verticadba /data/verticadb"
-- 建库
admintools 建库
结果这样重装安装的环境,依旧报错,报错内容不变。
3. 再次定位
# cluster_run_all_nodes "hostname; ls -lh /tmp/4803"
vnode01
srw-rw-rw- 1 501 501 0 9 月 7 09:54 /tmp/4803
vnode02
srw-rw-rw-. 1 501 501 0 9 月 7 09:19 /tmp/4803
vnode03
srw-rw-rw-. 1 501 501 0 9 月 7 09:19 /tmp/4803
vnode04
srw-rw-rw- 1 501 501 0 9 月 7 09:14 /tmp/4803
可以看到 /tmp/4803 的所属用户和组都是未被识别的 uid 和 gid,怀疑是否是这个问题影响,导致 spread 进程无法集群间通信。
4. 解决问题
再次重装时,dbadmin 用户和组的 uid,gid 有了变化,所以我们将这个文件也先删除掉。
cluster_run_all_nodes "hostname; rm -rf /tmp/4803"
此次环境 dbadmin 用户和组先统一:
-- 保持统一的 uid gid
cluster_run_all_nodes "hostname;groupadd -g 700 verticadba"
cluster_run_all_nodes "hostname;useradd -g verticadba -u 700 dbadmin"
再次重装,建库时,跟踪 /tmp/4083 的状态, 发现各节点 /tmp/4803 依次开始正常:
# cluster_run_all_nodes "hostname; ls -lh /tmp/4803"
vnode01
srw-rw-rw- 1 dbadmin verticadba 0 9 月 7 17:04 /tmp/4803
vnode02
ls: 无法访问 /tmp/4803: 没有那个文件或目录
vnode03
ls: 无法访问 /tmp/4803: 没有那个文件或目录
vnode04
ls: 无法访问 /tmp/4803: 没有那个文件或目录
最终确定果然就是这个问题, 最终建库成功。
5. 总结
在重装 Vertica 集群时,需要关注 /tmp/4803 是否权限有问题,否则会导致 spread 进程故障,进而导致整个库起不来。
各节点 dbadmin 用户的 uid 和 gid 尽量保持一致。
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-09/135429.htm
正文完
星哥说事-微信公众号