-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
1. cli 连接分布式写入数据消息不同步,只能到部分节点查询到数据;cli 连接分布式写入数据不支持自动创建 schema。
-
原因:分布式 IoTDB 是基于单机版 IoTDB 上层设计开发,(为调试方便)启动时目前默认也启动单机的服务。分布式对外开放端口为 55560,(为调试方便)同时对外开放端口为 6667 ,使用 cli 不指定参数默认会连接单机端口,从而不经过上层分布式的逻辑,因此需要显式指定 cli 去连接分布式端口。即 ./start-cli.sh -p 55560。之后会将分布式的服务端口调整为 6667 并关闭单机版的服务端口,如此即可 ./start-cli.sh 直连分布式了。
-
总结:显式指定 cli 去连接分布式端口。即 ./start-cli.sh -p 55560
-
更新:从即日起,分布式的端口已经和单机兼容,即皆使用 6667 端口~
2. 如何启动分布式 IoTDB
-
概述:首先使用 mvn clean package -pl cluster -am -DskipTests 编译分布式模块,然后开始服务端部署或本地部署。以三节点集群为例,对于服务端部署,首先保证服务器的 6667, 9003, 9004, 40010, 40011 端口开放,然后分别将包传到对应的服务器上并配置不同节点 iotdb-cluster.properties 配置文件中的 seednodes 和 cluster_rpc_ip 参数,前者包含所有的启动节点并且全局统一,后者绑定自己的公网或私网 ip。接着在 3 个节点上分别运行 start-node.sh 即可。对于本地部署,可以参考此示例。
-
总结:本地部署处理好端口冲突,服务器部署处理好服务器 ip。可以参考此示例。
3. benchmark 无法连接分布式 IoTDB
-
原因:使用 support_cluster 分支;IoTDB 仓库更新到了 0.12.0 版本,而 benchmark 暂没有同步更新,需要手动将 pom 文件中有关 iotdb 的 session 和 jdbc 模块到升级到 0.12.0 版本。
-
总结:使用 support_cluster 分支;升级 pom 版本,再执行。
4. 云服务器上无法启动分布式 IoTDB;集群之间无法通信。
-
原因:云服务器上有时会出现启动不了分布式 IoTDB 的问题,可能是对公网 ip 进行了限制无法绑定,建议在云服务器上配置时 ip 均使用内网 ip;此外云服务器上时常有防火墙或安全组等措施会限制流量端口,可以用 python 启动 http server 并用外网访问查看端口是否开放,若不能则需要到控制台去调整安全组。
-
总结:使用内网 ip;检查防火墙,安全组。
5. 三节点分布式 IoTDB 中报告的 leader 不一致且存在多个,lastHeartBeat 一直增加。
- 原因:分布式 IoTDB 是基于 multi-raft 思路实现的,在目前的架构下 3 个节点共有 3 个 raft 组,所以存在三个 leader 是正确;lastHeatBeat 是指 Leader 上次给其发送心跳的时间,由于心跳时间默认为 1s,所以 character 是 follower 的 lastHeatBeat 都在 1s 内,对于 character 是 leader 的 raft 实例,由于它自身为 leader, 不会有节点向其发送心跳,所以其会一直增加。
- 总结:设计如此,正常现象。
6. 出现不属于 seednodes 的节点尝试加入集群,集群无法正常对外服务。
-
原因:可能是之前启动的分布式 IoTDB 进程未被杀掉,比如之前是四节点部署改为了三节点部署。忘记杀掉不再使用节点的分布式 IoTDB 进程会导致三节点 IoTDB 始终被骚扰,拒绝服务。
-
总结:清理环境,杀掉不该有的进程。
