iotDB部署
拉取镜像
docker pull apache/iotdb:1.3.0-confignode
docker pull apache/iotdb:1.3.0-datanode
编写docker-compose.yml
1C1D
c为config节点,d为data节点
- config节点:主要负责元数据管理、集群管理和数据一致性维护。它存储了整个集群的元数据信息,包括数据分区、时间序列等,并负责协调各个data节点之间的数据同步。
- data节点:主要负责存储实际的数据。它接收客户端发送的数据写入请求,并将数据持久化到本地存储系统中。同时,data节点还需要与其他data节点进行数据同步,以保证数据的一致性。
通常可以为1C多D结构,多C多D集群可用性更强,不会因为一个config节点宕机而出现data节点之间不可用的情况。
version: "3"
services:
iotdb-confignode:
image: apache/iotdb:1.3.0-confignode
container_name: iotdb-confignode
environment:
- cn_internal_address=127.0.0.1
- cn_seed_config_node=127.0.0.1:10710
- schema_replication_factor=1
- cn_internal_port=10710
- cn_consensus_port=10720
- schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- data_replication_factor=1
- data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
volumes:
# - /etc/hosts:/etc/hosts:ro
- ./data/confignode:/iotdb/data
- ./logs/confignode:/iotdb/logs
network_mode: "host"
iotdb-datanode-1:
image: apache/iotdb:1.3.0-datanode
container_name: iotdb-datanode-1
environment:
- dn_rpc_address=127.0.0.1
- dn_internal_address=127.0.0.1
- dn_seed_config_node=127.0.0.1:10710
- data_replication_factor=1
- dn_rpc_port=6667
- dn_mpp_data_exchange_port=10740
- dn_schema_region_consensus_port=10750
- dn_data_region_consensus_port=10760
- schema_replication_factor=1
- schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
volumes:
# - /etc/hosts:/etc/hosts:ro
- ./data/datanode-1:/iotdb/data/
- ./logs/datanode-1:/iotdb/logs/
network_mode: "host"
ConfigNode节点配置
- cn_internal_address ConfigNode 集群内部地址
- cn_internal_port ConfigNode 集群服务监听端口
- cn_seed_config_node 目标 ConfigNode 地址,ConfigNode 通过此地址加入集群
DataNode RPC服务配置
- dn_rpc_address 客户端 RPC 服务监听地址
- dn_rpc_port Client RPC 服务监听端口
- dn_internal_address DataNode 内网通信地址
- dn_internal_port DataNode 内网通信端口
- dn_mpp_data_exchange_port MPP 数据交换端口
- dn_schema_region_consensus_port DataNode 元数据副本的共识协议通信端口
- dn_data_region_consensus_port DataNode 数据副本的共识协议通信端口
3C3D
C只能为奇数个,否则无法选举出leader
所有的ConfigNode通过该cn_seed_config_node加入集群,无需修改cn_seed_config_node=127.0.0.1:10710
配置与启动
配置文件
node1
version: "3"
services:
iotdb-confignode:
image: apache/iotdb:1.3.0-confignode
container_name: iotdb-confignode
environment:
- memory_size=256M
- cn_internal_address=127.0.0.1
- cn_seed_config_node=127.0.0.1:10710
- schema_replication_factor=3
- cn_internal_port=10710
- cn_consensus_port=10720
- schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- data_replication_factor=3
- data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
volumes:
# - /etc/hosts:/etc/hosts:ro
- ./data/confignode:/iotdb/data
- ./logs/confignode:/iotdb/logs
network_mode: "host"
iotdb-datanode-1:
image: apache/iotdb:1.3.0-datanode
container_name: iotdb-datanode-1
environment:
- memory_size=512M
- dn_rpc_address=127.0.0.1
- dn_internal_address=127.0.0.1
- dn_seed_config_node=127.0.0.1:10710
- data_replication_factor=3
- dn_rpc_port=6667
- dn_internal_port=10730
- dn_mpp_data_exchange_port=10740
- dn_schema_region_consensus_port=10750
- dn_data_region_consensus_port=10760
- schema_replication_factor=3
- schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
volumes:
# - /etc/hosts:/etc/hosts:ro
- ./data/datanode-1:/iotdb/data/
- ./logs/datanode-1:/iotdb/logs/
network_mode: "host"
node2
version: "3"
services:
iotdb-confignode:
image: apache/iotdb:1.3.0-confignode
container_name: iotdb-confignode-2
environment:
- memory_size=256M
- cn_internal_address=127.0.0.1
- cn_seed_config_node=127.0.0.1:10710
- schema_replication_factor=3
- cn_internal_port=10711
- cn_consensus_port=10721
- schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- data_replication_factor=3
- data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
volumes:
# - /etc/hosts:/etc/hosts:ro
- ./data/confignode-2:/iotdb/data
- ./logs/confignode-2:/iotdb/logs
network_mode: "host"
iotdb-datanode-1:
image: apache/iotdb:1.3.0-datanode
container_name: iotdb-datanode-2
environment:
- memory_size=512M
- dn_rpc_address=127.0.0.1
- dn_internal_address=127.0.0.1
- dn_seed_config_node=127.0.0.1:10710
- data_replication_factor=3
- dn_rpc_port=6668
- dn_internal_port=10731
- dn_mpp_data_exchange_port=10741
- dn_schema_region_consensus_port=10751
- dn_data_region_consensus_port=10761
- schema_replication_factor=3
- schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
volumes:
# - /etc/hosts:/etc/hosts:ro
- ./data/datanode-2:/iotdb/data/
- ./logs/datanode-2:/iotdb/logs/
network_mode: "host"
node3
version: "3"
services:
iotdb-confignode:
image: apache/iotdb:1.3.0-confignode
container_name: iotdb-confignode-3
environment:
- memory_size=256M
- cn_internal_address=127.0.0.1
- cn_seed_config_node=127.0.0.1:10710
- schema_replication_factor=3
- cn_internal_port=10712
- cn_consensus_port=10722
- schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- data_replication_factor=3
- data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
volumes:
# - /etc/hosts:/etc/hosts:ro
- ./data/confignode-3:/iotdb/data
- ./logs/confignode-3:/iotdb/logs
network_mode: "host"
iotdb-datanode-1:
image: apache/iotdb:1.3.0-datanode
container_name: iotdb-datanode-3
environment:
- memory_size=512M
- dn_rpc_address=127.0.0.1
- dn_internal_address=127.0.0.1
- dn_seed_config_node=127.0.0.1:10710
- data_replication_factor=3
- dn_rpc_port=6669
- dn_internal_port=10732
- dn_mpp_data_exchange_port=10742
- dn_schema_region_consensus_port=10752
- dn_data_region_consensus_port=10762
- schema_replication_factor=3
- schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
- data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
volumes:
# - /etc/hosts:/etc/hosts:ro
- ./data/datanode-3:/iotdb/data/
- ./logs/datanode-3:/iotdb/logs/
network_mode: "host"
在不同的目录中分别利用docker-compose up指令启动容器即可。
启动与关闭
docker-compose up -d -d代表后台模式启动
docker-compose down
进入容器
docker exec -it iotdb-datanode-3 /bin/bash
连接数据库
./start-cli.sh
查看集群状态
show cluster details
集群成功
最终检查
操作某个节点,创建数据库,在其他节点中查看是否同步。
show databases
CREATE DATABASE root.ln
show databases
按ctrl + p + q退出容器内部
利用docker exec进入其他节点容器查看
docker exec -it iotdb-datanode-2 /bin/bash
./start-cli.sh
show databases
成功同步