设置最大打开文件数为65535,以避免出现 "太多的打开文件 "的错误。
bash
sysctl -w net.core.somaxconn=65535
#双节点集群配置模板(两台机器通用) 通用配置:iotdb-common.properties
#集群名称(所有节点必须一致)
cluster_name=my_iotdb_cluster
#元数据副本数(双节点集群设为2)
schema_replication_factor=2
#数据副本数(双节点集群设为2)
data_replication_factor=2
#共识协议配置(保持默认即可)
config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
节点 A 配置(ConfigNode 配置:iotdb-confignode.properties)
#当前节点内部通信地址
cn_internal_address=节点AIP
cn_internal_port=10710
cn_consensus_port=10720
#Seed-ConfigNode 指向自身
cn_target_config_node_list=节点AIP :10710
DataNode 配置:iotdb-datanode.properties
#客户端RPC地址
dn_rpc_address=节点AIP
dn_rpc_port=6667
#内部通信地址
dn_internal_address=节点AIP
dn_internal_port=10730
dn_mpp_data_exchange_port=10740
dn_data_region_consensus_port=10750
dn_schema_region_consensus_port=10760
#连接ConfigNode的地址
dn_target_config_node_list=节点AIP:10710
节点 B配置(ConfigNode 配置:iotdb-confignode.properties)
#当前节点内部通信地址
cn_internal_address=节点BIP
cn_internal_port=10710
cn_consensus_port=10720
#指向已运行的Seed-ConfigNode
cn_target_config_node_list=节点AIP:10710
DataNode 配置:iotdb-datanode.properties
#客户端RPC地址
dn_rpc_address=节点BIP
dn_rpc_port=6667
#内部通信地址
dn_internal_address=节点BIP
dn_internal_port=10730
dn_mpp_data_exchange_port=10740
dn_data_region_consensus_port=10750
dn_schema_region_consensus_port=10760
#连接ConfigNode的地址
dn_target_config_node_list=节点AIP:10710
一键启动脚本(⚠️ 注意:必须先在节点 A 执行脚本,等待 ConfigNode 完全启动后,再在节点 B 执行,否则节点 B 的 ConfigNode 可能无法正常加入集群。)
bash
#!/bin/bash
# ===================== 配置项(根据你的实际路径修改)=====================
IOTDB_HOME="部署路径修改" # IoTDB安装根目录
LOG_DIR="${IOTDB_HOME}/logs" # 日志存储目录
# ===================== 确保日志目录存在 =====================
mkdir -p ${LOG_DIR}
# ===================== 1. 后台启动 ConfigNode =====================
echo "正在后台启动 ConfigNode..."
nohup bash ${IOTDB_HOME}/sbin/start-confignode.sh > ${LOG_DIR}/confignode_nohup.log 2>&1 &
# 等待3秒,确保ConfigNode完全启动
sleep 3
# 检查ConfigNode是否启动成功
if jps | grep -q ConfigNode; then
echo "ConfigNode 后台启动成功,日志路径:${LOG_DIR}/confignode_nohup.log"
else
echo "ConfigNode 启动失败,请查看日志:${LOG_DIR}/confignode_nohup.log"
exit 1
fi
# ===================== 2. 后台启动 DataNode =====================
echo "正在后台启动 DataNode..."
nohup bash ${IOTDB_HOME}/sbin/start-datanode.sh > ${LOG_DIR}/datanode_nohup.log 2>&1 &
# 等待3秒,确保DataNode完全启动
sleep 3
# 检查DataNode是否启动成功
if jps | grep -q DataNode; then
echo "DataNode 后台启动成功,日志路径:${LOG_DIR}/datanode_nohup.log"
else
echo "DataNode 启动失败,请查看日志:${LOG_DIR}/datanode_nohup.log"
exit 1
fi
echo "=================================================="
echo "集群节点后台启动完成!"
echo "可用 jps | grep -E 'ConfigNode|DataNode' 查看进程状态"
echo "=================================================="
启动顺序说明
先启动节点 A 的 ConfigNode
再启动节点 B 的 ConfigNode
最后启动两台机器的 DataNode
验证连接任意节点的 CLI
