问题表现
在开发中,创建单节点TDengine后,启动taosd服务后,经taos命令链接,jdbc链接正常,创建表空间,创建超级表正常,执行数据插入语句时,出现异常
TDengine ERROR (8000033c): Cluster not ready; nested exception is java.sql.SQLException: TDengine ERROR (8000033c): Cluster not ready
执行 show dnodes;命令,显示只有一个集群节点,节点状态为 offline
问题排查
出现bug后本着重启解决一切问题的原则,进行了如下操作
- 重启服务器
- 重启taod服务
- …
以上操作完全无效,就差卸载安装没试验了.
正确步骤
- 分析bug的报告者
- 查看log
检查 /var/log/taos/ 下日子内容 发现大量
05/21 04:13:15.539739 00031639 DND ERROR status rsp is received, error:Unable to resolve FQDN
分析可知 单节点集群为正常工作的问题是FQDN相关配置异常
检查linux系统的 /etc/hostname 文件 已正确配置FQDN
客户端可正确访问服务器 Ping通
检查linux系统下taos配置 /etc/taos/taos.cfg 正确配置
经过抓狂后,无意间
尝试在服务端自己Ping自己,诡异的事情发生了,Ping不通.
问题解决
当发现自己Ping自己Ping不同后 意识到是DNS 解析异常;
在 /etc/hosts 中 添加自己的FQDN到127.0.0.1 的映射关系
随后执行 show dnodes;
单节点服务正常
反思
之前部署的时候一般都是从装系统开始,装系统时即配置网络,设置主机名即本机FQDN名称,
本次部署使用的是甲方提供的系统, 存在多个FQDN名称, 安装TDengine 后没有注意到关于本机FQDN的映射关系,导致了本机Ping本机Ping不通的尴尬情况.最终导致单机节点数据库启动失败.