集群模式目前是测试版!请谨慎在生产环境中使用。

集群设置

安装环境请参考快速上手/安装环境章节

前提条件

如果您在使用Windows系统,请安装MinGW,WSL或者git bash。

集群环境搭建

您可以搭建伪分布式模式或是分布式模式的集群,伪分布式模式和分布式模式的主要区别是配置文件中seed_nodes的不同,配置项含义请参考配置项。 启动其中一个节点的服务,需要执行如下命令:

  1. # Unix/OS X
  2. > nohup sbin/start-node.sh [printgc] [<conf_path>] >/dev/null 2>&1 &
  3. # Windows
  4. > sbin\start-node.bat [printgc] [<conf_path>]

printgc表示在启动的时候,会开启GC日志。 <conf_path>使用conf_path文件夹里面的配置文件覆盖默认配置文件。

被覆盖的单机版选项

iotdb-engines.properties配置文件中的部分内容会不再生效:

  • enable_auto_create_schema 不再生效,并被视为false. 应使用 iotdb-cluster.properties 中的
    enable_auto_create_schema 来控制是否自动创建序列。

  • is_sync_enable 不再生效,并被视为 false.

配置项

为方便IoTDB Server的配置与管理,IoTDB Server为用户提供三种配置项,使得您可以在启动服务或服务运行时对其进行配置。

三种配置项的配置文件均位于IoTDB安装目录:$IOTDB_HOME/conf文件夹下,其中涉及server配置的共有4个文件,分别为:iotdb-cluster.propertiesiotdb-engine.propertieslogback.xmliotdb-env.sh(Unix系统)/iotdb-env.bat(Windows系统), 您可以通过更改其中的配置项对系统运行的相关配置项进行配置。

配置文件的说明如下:

  • iotdb-env.sh/iotdb-env.bat:环境配置项的默认配置文件。您可以在文件中配置JAVA-JVM的相关系统配置项。

  • iotdb-engine.properties:IoTDB引擎层系统配置项的默认配置文件。您可以在文件中配置IoTDB引擎运行时的相关参数。此外,用户可以在文件中配置IoTDB存储时TsFile文件的相关信息,如每次将内存中的数据写入到磁盘前的缓存大小(group_size_in_byte),内存中每个列打一次包的大小(page_size_in_byte)等。

  • logback.xml: 日志配置文件,比如日志级别等。

  • iotdb-cluster.properties: IoTDB集群所需要的一些配置。

iotdb-engine.propertiesiotdb-env.sh/iotdb-env.bat 两个配置文件详细说明请参考附录/配置手册,下面描述的配置项是在iotdb-cluster.properties文件中的,也可以直接查看配置文件集群搭建 - 图1 (opens new window) 中的注释。

  • internal_ip
名字internal_ip
描述IOTDB 集群各个节点之间内部通信的IP地址,比如心跳、snapshot快照、raft log等
类型String
默认值127.0.0.1
改后生效方式重启服务生效,集群建立后不可再修改
  • internal_meta_port
名字internal_meta_port
描述IoTDB meta服务端口,用于元数据组(又称集群管理组)通信,元数据组管理集群配置和存储组信息IoTDB将为每个meta服务自动创建心跳端口。默认meta服务心跳端口为internal_meta_port+1,请确认这两个端口不是系统保留端口并且未被占用
类型Int32
默认值9003
改后生效方式重启服务生效,集群建立后不可再修改
  • internal_data_port
名字internal_data_port
描述IoTDB data服务端口,用于数据组通信,数据组管理数据模式和数据的存储IoTDB将为每个data服务自动创建心跳端口。默认的data服务心跳端口为internal_data_port+1。请确认这两个端口不是系统保留端口并且未被占用
类型Int32
默认值40010
改后生效方式重启服务生效,集群建立后不可再修改
  • open_server_rpc_port
名字open_server_rpc_port
描述是否打开单机模块的rpc port,用于调试模式,如果设置为true,则单机模块的rpc port设置为rpc_port (in iotdb-engines.properties) + 1
类型Boolean
默认值false
改后生效方式重启服务生效,集群建立后不可再修改
  • seed_nodes
名字seed_nodes
描述集群中节点的地址,{IP/DOMAIN}:internal_meta_port格式,用逗号分割;对于伪分布式模式,可以都填写localhost,或是127.0.0.1 或是混合填写,但是不能够出现真实的ip地址;对于分布式模式,支持填写real ip 或是hostname,但是不能够出现localhost或是127.0.0.1。当使用start-node.sh(.bat)启动节点时,此配置意味着形成初始群集的节点,每个节点的seed_nodes应该一致,否则群集将初始化失败;当使用add-node.sh(.bat)添加节点到集群中时,此配置项可以是集群中已经存在的任何节点,不需要是用start-node.sh(bat)构建初始集群的节点。
类型String
默认值127.0.0.1:9003,127.0.0.1:9005,127.0.0.1:9007
改后生效方式重启服务生效
  • rpc_thrift_compression_enable
名字rpc_thrift_compression_enable
描述是否开启thrift压缩通信,注意这个参数要各个节点保持一致,也要与客户端保持一致,同时也要与iotdb-engine.propertiesrpc_thrift_compression_enable参数保持一致
类型Boolean
默认值false
改后生效方式重启服务生效,需要整个集群同时更改
  • default_replica_num
名字default_replica_num
描述集群副本数
类型Int32
默认值3
改后生效方式重启服务生效,集群建立后不可更改
  • cluster_name
名字cluster_name
描述集群名称,集群名称用以标识不同的集群,一个集群中所有节点的cluster_name都应相同
类型String
默认值default
改后生效方式重启服务生效
  • connection_timeout_ms
名字connection_timeout_ms
描述同一个raft组各个节点之间的心跳超时时间,单位毫秒
类型Int32
默认值20000
改后生效方式重启服务生效
  • read_operation_timeout_ms
名字read_operation_timeout_ms
描述读取操作超时时间,仅用于内部通信,不适用于整个操作,单位毫秒
类型Int32
默认值30000
改后生效方式重启服务生效
  • write_operation_timeout_ms
名字write_operation_timeout_ms
描述写入操作超时时间,仅用于内部通信,不适用于整个操作,单位毫秒
类型Int32
默认值30000
改后生效方式重启服务生效
  • min_num_of_logs_in_mem
名字min_num_of_logs_in_mem
描述删除日志操作执行后,内存中保留的最多的提交的日志的数量。增大这个值将减少在CatchUp使用快照的机会,但也会增加内存占用量
类型Int32
默认值100
改后生效方式重启服务生效
  • max_num_of_logs_in_mem
名字max_num_of_logs_in_mem
描述当内存中已提交的日志条数达到这个值之后,就会触发删除日志的操作,增大这个值将减少在CatchUp使用快照的机会,但也会增加内存占用量
类型Int32
默认值1000
改后生效方式重启服务生效
  • log_deletion_check_interval_second
名字log_deletion_check_interval_second
描述检查删除日志任务的时间间隔,每次删除日志任务将会把已提交日志超过min_num_of_logs_in_mem条的最老部分删除,单位秒
类型Int32
默认值60
改后生效方式重启服务生效
  • enable_auto_create_schema
名字enable_auto_create_schema
描述是否支持自动创建schema,这个值会覆盖iotdb-engine.propertiesenable_auto_create_schema的配置
类型BOOLEAN
默认值true
改后生效方式重启服务生效
  • consistency_level
名字consistency_level
描述读一致性,目前支持3种一致性:strong、mid、weak。strong consistency每次操作都会尝试与Leader同步以获取最新的数据,如果失败(超时),则直接向用户返回错误; mid consistency每次操作将首先尝试与Leader进行同步,但是如果失败(超时),它将使用本地当前数据向用户提供服务; weak consistency不会与Leader进行同步,而只是使用本地数据向用户提供服务
类型strong、mid、weak
默认值mid
改后生效方式重启服务生效
  • is_enable_raft_log_persistence
名字is_enable_raft_log_persistence
描述是否开启raft log持久化
类型BOOLEAN
默认值true
改后生效方式重启服务生效

开启GC日志

GC日志默认是关闭的。为了性能调优,用户可能会需要收集GC信息。 若要打开GC日志,则需要在启动IoTDB Server的时候加上printgc参数:

  1. nohup sbin/start-node.sh printgc >/dev/null 2>&1 &

或者

  1. sbin\start-node.bat printgc

GC日志会被存储在IOTDB_HOME/logs/下面。