iotDB集群部署[完整版]

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

image-20240423111953764

集群成功

最终检查

操作某个节点,创建数据库,在其他节点中查看是否同步。

show databases

CREATE DATABASE root.ln

show databases

按ctrl + p + q退出容器内部

image-20240423112313532

利用docker exec进入其他节点容器查看

docker exec -it iotdb-datanode-2 /bin/bash

./start-cli.sh

show databases

image-20240423112345258

成功同步

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
IoTDB 是一个轻量级、高效的开源物联网数据存储系统,它专门用于物联网设备产生的海量时序数据的存储和管理。而 Spring Boot 是一个基于 Java 的开源框架,用于简化新兴的微服务架构中的应用程序开发。通过结合 IoTDB 和 Spring Boot,可以实现物联网设备数据的实时存储和快速访问。 首先,结合 IoTDB 和 Spring Boot 可以创建一个高效的数据存储和管理系统,可以支持大规模的物联网设备数据接入和存储。通过使用 Spring Boot 提供的快速开发功能,可以更快速地搭建出一个完整的物联网数据处理系统,并且可以通过 Spring Boot 提供的各种配置和扩展功能来满足不同场景下的需求。 其次,IoTDB 和 Spring Boot 的结合还可以实现物联网设备数据的实时查询和分析功能。IoTDB 提供了高效的数据存储和查询能力,而 Spring Boot 可以通过集成各种数据分析和可视化组件,实现对物联网数据的实时监控和分析。 最后,IoTDB 和 Spring Boot 的结合也可以实现数据安全和权限管理功能。通过 Spring Boot 的安全框架,可以实现对物联网设备数据的访问权限控制和数据加密,以保障数据安全。 综上所述,IoTDB 和 Spring Boot 的结合可以实现物联网设备数据的高效存储、实时查询和分析、数据安全和权限管理等功能,为物联网数据处理系统的开发和应用提供了强大的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值