一、IoTDB分布式架构概述
分布式系统由一组独立的计算机组成,通过网络通信,对外表现为一个统一的整体。IoTDB的原生分布式架构将服务分为两个核心部分:
- ConfigNode(CN):管理节点,负责管理分区表、节点信息以及整个集群的负载均衡等功能。
- DataNode(DN):数据节点,包含五个主要模块:查询引擎、存储引擎、元数据引擎、共识引擎和流处理引擎。
一个典型的IoTDB集群配置为3C3D(3个CN,3个DN),但在实际应用中,CN通常配置为1个或3个,DN则根据业务需求至少配置1个(目前最高有3C100D的线上环境)。
二、IoTDB集群运维指南
. 部署
- DN部署:由于DN管理数据需要大量资源,推荐将多个DN部署在不同节点上。
- CN部署:CN管理集群内的节点,资源需求较少,可部署在与DN相同的节点上或单独部署。以CD集群为例,建议部署在台物理机上,每台机器部署CD。
- hosts文件修改:在所有物理机上修改hosts文件,以解析集群内各节点的IP地址和主机名。
. 启动
- 启动顺序:先启动CN,后启动DN。首次启动时,需配置cn_seed_config_node和dn_seed_config_node,确保第一个CN启动成功后,再启动其他CN和DN。
- 配置文件修改:在/data/iotdb/conf目录下修改相应的配置文件。
- 启动命令:使用sbin目录下的start-confignode.sh和start-datanode.sh脚本启动CN和DN。
- 集群状态校验:使用Cli连接任意节点,执行show cluster命令查看集群状态。
. 停止
- 停止顺序:先停止客户端连接,再停止DN,最后停止CN。
- 停止命令:使用sbin目录下的stop-datanode.sh和stop-confignode.sh脚本停止DN和CN。
. 升级
- 停止集群:先执行集群停止操作。
- 更换目录:删除旧版本的lib和sbin目录,将新版本的目录移动至IoTDB根目录下。
- 启动集群:执行集群启动操作。
. 扩容
- 扩容方式:下载IoTDB安装包,解压,修改配置,启动新节点。新节点必须为空节点,且cluster_name、cn_seed_config_node和dn_seed_config_node的配置需与现有集群一致。
- 验证扩容:使用Cli执行show cluster命令验证扩容结果。
. 缩容
- 移除节点:使用sbin目录下的remove-datanode.sh和remove-confignode.sh脚本移除已启动的DN和CN。
- 验证缩容:使用Cli执行show cluster命令验证缩容结果。
. 清理
- 停止集群:先执行集群停止操作。
- 清理数据:使用sbin目录下的destroy-all.sh、destroy-confignode.sh或destroy-datanode.sh脚本清理CN和DN的数据。
- 重新启动:执行集群启动操作,获取一个“崭新”的IoTDB。