docker部署

Apache IoTDB 的 Docker 镜像已经上传至 https://hub.docker.com/r/apache/iotdbdocker部署 - 图1open in new window
Apache IoTDB 的配置项以环境变量形式添加到容器内。

docker镜像安装(单机版)

  1. # 获取镜像
  2. docker pull apache/iotdb:1.1.0-standalone
  3. # 创建 docker bridge 网络
  4. docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb
  5. # 创建 docker 容器
  6. # 注意:必须固定IP部署。IP改变会导致 confignode 启动失败。
  7. docker run -d --name iotdb-service \
  8. --hostname iotdb-service \
  9. --network iotdb \
  10. --ip 172.18.0.6 \
  11. -p 6667:6667 \
  12. -e cn_internal_address=iotdb-service \
  13. -e cn_target_config_node_list=iotdb-service:10710 \
  14. -e cn_internal_port=10710 \
  15. -e cn_consensus_port=10720 \
  16. -e dn_rpc_address=iotdb-service \
  17. -e dn_internal_address=iotdb-service \
  18. -e dn_target_config_node_list=iotdb-service:10710 \
  19. -e dn_mpp_data_exchange_port=10740 \
  20. -e dn_schema_region_consensus_port=10750 \
  21. -e dn_data_region_consensus_port=10760 \
  22. -e dn_rpc_port=6667 \
  23. apache/iotdb:1.1.0-standalone
  24. # 尝试使用命令行执行SQL
  25. docker exec -ti iotdb-service /iotdb/sbin/start-cli.sh -h iotdb-service

外部连接:

  1. # <主机IP/hostname> 是物理机的真实IP或域名。如果在同一台物理机,可以是127.0.0.1。
  2. $IOTDB_HOME/sbin/start-cli.sh -h <主机IP/hostname> -p 6667
  1. # docker-compose-1c1d.yml
  2. version: "3"
  3. services:
  4. iotdb-service:
  5. image: apache/iotdb:1.1.0-standalone
  6. hostname: iotdb-service
  7. container_name: iotdb-service
  8. ports:
  9. - "6667:6667"
  10. environment:
  11. - cn_internal_address=iotdb-service
  12. - cn_internal_port=10710
  13. - cn_consensus_port=10720
  14. - cn_target_config_node_list=iotdb-service:10710
  15. - dn_rpc_address=iotdb-service
  16. - dn_internal_address=iotdb-service
  17. - dn_rpc_port=6667
  18. - dn_mpp_data_exchange_port=10740
  19. - dn_schema_region_consensus_port=10750
  20. - dn_data_region_consensus_port=10760
  21. - dn_target_config_node_list=iotdb-service:10710
  22. volumes:
  23. - ./data:/iotdb/data
  24. - ./logs:/iotdb/logs
  25. networks:
  26. iotdb:
  27. ipv4_address: 172.18.0.6
  28. networks:
  29. iotdb:
  30. external: true

docker镜像安装(集群版)

目前只支持 host 网络和 overlay 网络,不支持 bridge 网络。overlay 网络参照1C2Ddocker部署 - 图2open in new window的写法,host 网络如下。

假如有三台物理机,它们的hostname分别是iotdb-1、iotdb-2、iotdb-3。依次启动。
以 iotdb-2 节点的docker-compose文件为例:

  1. version: "3"
  2. services:
  3. iotdb-confignode:
  4. image: apache/iotdb:1.1.0-confignode
  5. container_name: iotdb-confignode
  6. environment:
  7. - cn_internal_address=iotdb-2
  8. - cn_target_config_node_list=iotdb-1:10710
  9. - schema_replication_factor=3
  10. - cn_internal_port=10710
  11. - cn_consensus_port=10720
  12. - schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
  13. - config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
  14. - data_replication_factor=3
  15. - data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
  16. volumes:
  17. - /etc/hosts:/etc/hosts:ro
  18. - ./data/confignode:/iotdb/data
  19. - ./logs/confignode:/iotdb/logs
  20. network_mode: "host"
  21. iotdb-datanode:
  22. image: apache/iotdb:1.1.0-datanode
  23. container_name: iotdb-datanode
  24. environment:
  25. - dn_rpc_address=iotdb-2
  26. - dn_internal_address=iotdb-2
  27. - dn_target_config_node_list=iotdb-1:10710
  28. - data_replication_factor=3
  29. - dn_rpc_port=6667
  30. - dn_mpp_data_exchange_port=10740
  31. - dn_schema_region_consensus_port=10750
  32. - dn_data_region_consensus_port=10760
  33. - data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
  34. - schema_replication_factor=3
  35. - schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
  36. - config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
  37. volumes:
  38. - /etc/hosts:/etc/hosts:ro
  39. - ./data/datanode:/iotdb/data/
  40. - ./logs/datanode:/iotdb/logs/
  41. network_mode: "host"

注意:

  1. dn_target_config_node_list所有节点配置一样,需要配置第一个启动的节点,这里为iotdb-1
  2. 上面docker-compose文件中,iotdb-2需要替换为每个节点的 hostname、域名或者IP地址。
  3. 需要映射/etc/hosts,文件内配置了 iotdb-1、iotdb-2、iotdb-3 与IP的映射。或者可以在 docker-compose 文件中增加 extra_hosts 配置。
  4. 首次启动时,必须首先启动 iotdb-1
  5. 如果部署失败要重新部署集群,必须将所有节点上的IoTDB服务停止并删除,然后清除datalogs文件夹后,再启动。