无法连接到ArangoDB集群节点tcp://X.X.X.X:8531求助
ArangoDB集群连接失败:无法创建到tcp://X.X.X.X:8531的连接
问题概述
错误信息:无法创建到服务器的连接,端点为'tcp://X.X.X.X:8531'
环境信息
- ArangoDB版本:3.3.4(64位,构建日期:2018-03-06 15:40:10,构建仓库:tags/v3.3.4-0-g36841fe)
- 操作系统:CentOS 7.2
- 集群节点:3节点,IP分别为
192.168.19.171、192.168.19.172、192.168.19.181
各节点启动命令
192.168.19.181节点
# Agent启动 nohup arangod -c /etc/arangodb3/arangod.conf --database.directory /data1/agent/data --javascript.startup-directory /usr/share/arangodb3/js --javascript.app-path /data1/agent/apps --log.file /work/log/arangodb3/agent.log --log.force-direct false --agency.activate true --server.endpoint tcp://0.0.0.0:8531 --agency.my-address tcp://192.168.19.181:8531 --agency.size 3 --agency.supervision true --foxx.queues false --server.statistics true --agency.endpoint tcp://192.168.19.172:8531 --agency.endpoint tcp://192.168.19.171:8531& # DBServer启动 nohup arangod -c /etc/arangodb3/arangod.conf --database.directory /data1/dbserver/data --javascript.startup-directory /usr/share/arangodb3/js --javascript.app-path /data1/dbserver/apps --log.file /work/log/arangodb3/dbserver.log --log.force-direct false --server.endpoint tcp://0.0.0.0:8530 --cluster.my-address tcp://192.168.19.181:8530 --cluster.my-role PRIMARY --foxx.queues false --server.statistics true --cluster.agency-endpoint tcp://192.168.19.181:8531 --cluster.agency-endpoint tcp://192.168.19.172:8531 --cluster.agency-endpoint tcp://192.168.19.171:8531& # Coordinator启动 nohup arangod -c /etc/arangodb3/arangod.conf --database.directory /data1/coordinator/data --javascript.startup-directory /usr/share/arangodb3/js --javascript.app-path /data1/coordinator/apps --log.file /work/log/arangodb3/coordinator.log --log.force-direct false --server.endpoint tcp://0.0.0.0:8529 --cluster.my-address tcp://192.168.19.181:8529 --cluster.my-role COORDINATOR --foxx.queues true --server.statistics true --cluster.agency-endpoint tcp://192.168.19.181:8531 --cluster.agency-endpoint tcp://192.168.19.172:8531 --cluster.agency-endpoint tcp://192.168.19.171:8531&
192.168.19.171节点
# Agent启动 nohup arangod -c /etc/arangodb3/arangod.conf --database.directory /data1/agent/data --javascript.startup-directory /usr/share/arangodb3/js --javascript.app-path /data1/agent/apps --log.file /work/log/arangodb3/agent.log --log.force-direct false --agency.activate true --server.endpoint tcp://0.0.0.0:8531 --agency.my-address tcp://192.168.19.171:8531 --agency.size 3 --agency.supervision true --foxx.queues false --server.statistics true --agency.endpoint tcp://192.168.19.181:8531 --agency.endpoint tcp://192.168.19.172:8531& # DBServer启动 nohup arangod -c /etc/arangodb3/arangod.conf --database.directory /data1/dbserver/data --javascript.startup-directory /usr/share/arangodb3/js --javascript.app-path /data1/dbserver/apps --log.file /work/log/arangodb3/dbserver.log --log.force-direct false --server.endpoint tcp://0.0.0.0:8530 --cluster.my-address tcp://192.168.19.171:8530 --cluster.my-role PRIMARY --foxx.queues false --server.statistics true --cluster.agency-endpoint tcp://192.168.19.181:8531 --cluster.agency-endpoint tcp://192.168.19.172:8531 --cluster.agency-endpoint tcp://192.168.19.171:8531& # Coordinator启动 nohup arangod -c /etc/arangodb3/arangod.conf --database.directory /data1/coordinator/data --javascript.startup-directory /usr/share/arangodb3/js --javascript.app-path /data1/coordinator/apps --log.file /work/log/arangodb3/coordinator.log --log.force-direct false --server.endpoint tcp://0.0.0.0:8529 --cluster.my-address tcp://192.168.19.171:8529 --cluster.my-role COORDINATOR --foxx.queues true --server.statistics true --cluster.agency-endpoint tcp://192.168.19.181:8531 --cluster.agency-endpoint tcp://192.168.19.172:8531 --cluster.agency-endpoint tcp://192.168.19.171:8531&
192.168.19.172节点(存在错误)
# Agent启动(存在注释错误) nohup arangod -c /etc/arangodb3/arangod.conf --database.directory /data1/agent/data --javascript.startup-directory /usr/share/arangodb3/js --javascript.app-path /data1/agent/apps --log.file /work/log/arangodb3/agent.log --log.force-direct false --agency.activate true --server.endpoint tcp://0.0.0.0:8531 --agency.my-address tcp://192.168.19.172:8531 --agency.size 3 --agency.supervision true --foxx.queues false --server.statistics true --agency.endpoint tcp://192.168.19.181:8531 --#agency.endpoint tcp://192.168.19.171:8531& # DBServer启动 nohup arangod -c /etc/arangodb3/arangod.conf --database.directory /data1/dbserver/data --javascript.startup-directory /usr/share/arangodb3/js --javascript.app-path /data1/dbserver/apps --log.file /work/log/arangodb3/dbserver.log --log.force-direct false --server.endpoint tcp://0.0.0.0:8530 --cluster.my-address tcp://192.168.19.172:8530 --cluster.my-role PRIMARY --foxx.queues false --cluster.agency-endpoint tcp://192.168.19.181:8531 --cluster.agency-endpoint tcp://192.168.19.172:8531 --cluster.agency-endpoint tcp://192.168.19.171:8531& # Coordinator启动(命令被截断,不完整) nohup arangod -c /etc/arangodb3/arangod.conf --database.directory /data1/coordinator/data --javascript.startup-directory /usr/share/arangodb3/js --j
问题原因分析
- Agent配置错误(核心问题):192.168.19.172节点的Agent启动命令中,
--#agency.endpoint tcp://192.168.19.171:8531多了一个#,导致该端点被注释,Agent无法连接到171节点的Agent。ArangoDB集群的Agent需要形成3节点quorum才能正常工作,缺少一个端点会导致集群无法建立,进而引发连接失败。 - Coordinator命令不完整:172节点的Coordinator启动命令被截断,无法正常启动或连接到集群,也会影响整个集群的可用性。
- 潜在网络问题:CentOS 7.2的防火墙可能未开放8531(Agent端口)、8530(DBServer)、8529(Coordinator)端口,或者节点之间网络不通,导致连接被拒绝。
解决方案
1. 修复172节点的Agent启动命令
将错误的--#agency.endpoint tcp://192.168.19.171:8531修改为--agency.endpoint tcp://192.168.19.171:8531,去掉前面的#,确保Agent能连接到所有集群节点。
2. 补全172节点的Coordinator启动命令
参考171和181节点的Coordinator命令,补全缺失部分:
nohup arangod -c /etc/arangodb3/arangod.conf --database.directory /data1/coordinator/data --javascript.startup-directory /usr/share/arangodb3/js --javascript.app-path /data1/coordinator/apps --log.file /work/log/arangodb3/coordinator.log --log.force-direct false --server.endpoint tcp://0.0.0.0:8529 --cluster.my-address tcp://192.168.19.172:8529 --cluster.my-role COORDINATOR --foxx.queues true --server.statistics true --cluster.agency-endpoint tcp://192.168.19.181:8531 --cluster.agency-endpoint tcp://192.168.19.172:8531 --cluster.agency-endpoint tcp://192.168.19.171:8531&
3. 按顺序重启集群节点
- 先停止所有节点的ArangoDB进程:
# 停止所有arangod进程 pkill arangod
- 按Agent → DBServer → Coordinator的顺序重启:
- 分别在三个节点启动Agent,等待Agent集群形成quorum(查看
/work/log/arangodb3/agent.log,确认日志中出现类似agency is now active的信息)。 - 启动三个节点的DBServer,等待其连接到Agent集群。
- 启动三个节点的Coordinator。
- 分别在三个节点启动Agent,等待Agent集群形成quorum(查看
4. 检查网络与防火墙
- 测试节点间端口连通性:
# 在172节点测试连接171的8531端口 nc -zv 192.168.19.171 8531 # 在171节点测试连接181的8531端口 nc -zv 192.168.19.181 8531
- 开放防火墙端口或临时关闭防火墙:
# 临时关闭防火墙测试 systemctl stop firewalld # 永久开放端口(推荐) firewall-cmd --add-port=8529/tcp --permanent firewall-cmd --add-port=8530/tcp --permanent firewall-cmd --add-port=8531/tcp --permanent firewall-cmd --reload
5. 查看日志定位细节
如果问题仍然存在,查看各节点的日志文件:
- Agent日志:
/work/log/arangodb3/agent.log - DBServer日志:
/work/log/arangodb3/dbserver.log - Coordinator日志:
/work/log/arangodb3/coordinator.log
日志中会包含具体的连接失败原因(如超时、拒绝连接等),可以进一步排查。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

