连接 TDengine 遇到报错 “failed to connect to server, reason: Connection refused” 怎么办?
在这里插入代码片
1. 快速诊断流程
2. 详细解决方案
2.1 检查 TDengine 服务状态
# 查看 taosd 服务状态
systemctl status taosd# 若未运行,启动服务
sudo systemctl start taosd# 设置开机自启(可选)
sudo systemctl enable taosd
2.2 验证端口监听
TDengine 默认使用 6030/TCP(客户端连接)端口:
# 检查端口监听
netstat -tunlp | grep taosd# 预期输出示例
tcp6 0 0 :::6030 :::* LISTEN 12345/taosd
2.3 防火墙与安全组配置
# 开放端口(临时)
sudo ufw allow 6030/tcp
sudo ufw allow 6041/tcp# 永久开放(Firewalld)
sudo firewall-cmd --permanent --add-port=6030/tcp
sudo firewall-cmd --permanent --add-port=6041/tcp
sudo firewall-cmd --reload
2.4 检查客户端连接配置
# 错误示例(直接使用IP)
taos -h 192.168.1.100# 正确做法(使用配置的FQDN)
taos -h mytdengine.local
关键配置点:
- 确保 /etc/taos/taos.cfg 中 fqdn 或 firstEP 配置正确
- 客户端机器的 /etc/hosts 需添加服务端IP映射:
# 客户端 /etc/hosts
192.168.1.100 mytdengine.local
2.5 检查客户端连接配置
# 从客户端测试端口连通性
telnet mytdengine.local 6030
nc -zv mytdengine.local 6030
2.6 检查服务端配置
# 错误示例(直接使用IP)
taos -h 192.168.1.100# 正确做法(使用配置的FQDN)
taos -h mytdengine.local
2.7 分析服务端日志
# 查看实时日志
tail -f /var/log/taos/taosd.log# 常见错误日志示例
"TDengine error: unable to bind socket, port 6030"
"failed to init vnode, reason: no space left on device"
3. 高级场景排查
3.1 Docker 环境特殊处理
若使用 Docker 部署:
# 启动时映射端口
docker run -d --name tdengine -p 6030:6030 -p 6041:6041 tdengine/tdengine# 检查容器内服务状态
docker exec tdengine systemctl status taosd
3.2 集群环境检查
# 查看集群节点状态
taos -s 'show dnodes;'# 确保 firstEP 配置一致
grep firstEP /etc/taos/taos.cfg
4. 总结排查路线
- 服务状态 → systemctl status taosd
- 端口监听 → netstat -tunlp | grep taosd
- 防火墙策略 → uff/firewalld 或云安全组
- FQDN一致性 → 服务端配置 vs 客户端 hosts
- 网络连通性 → telnet/nc 测试端口
- 配置文件 → /etc/taos/taos.cfg
- 日志分析 → /var/log/taos/taosd.log