DolphinDB集群如何扩展节点和存储

本页是一篇说明DolphinDB集群如何扩展节点与存储的文章,并提供作者与发布日期信息。

Source: https://dolphindb.cn/blogs/74

What this page covers

技能认证特训营第二期限时报名

页面顶部包含活动报名提示与报名链接。

DolphinDB集群如何扩展节点和存储(作者与日期)

该部分给出文章标题、作者名与发布日期信息。

概述

说明上线前容量规划与业务增长带来的扩容需求,并指出可通过增加节点扩展计算与容量,也支持单节点扩存。

扩展机制

介绍集群角色与扩展节点/扩展存储的基本机制,包括默认存储目录与配置生效方式等。

方法

说明扩展节点与扩展存储涉及的配置文件,以及通过新增Agent、修改配置并在Web界面启停的总体方式。

扩展节点

以示例集群为背景,给出新增物理机与新增数据节点的配置、重启步骤与验证方式。

扩展存储

描述为node3新增磁盘并通过volumes配置或动态添加使其生效,并给出写入验证方法与结果。

常见问题

解释DFS Explorer中site变化与Recovery机制的关系,并列出相关配置项、默认值与建议。

Facts index

Entity Attribute Value Confidence
DolphinDB集群如何扩展节点和存储(文章)发布日期2021-08-05high
DolphinDB节点架构特性节点集计算和存储于一体;增加计算能力和数据容量可通过增加节点实现;也支持对原有节点单独增加存储。high
DolphinDB集群组成角色由控制节点(Controller)、代理节点(Agent)、数据节点(Data Node)三个角色组成。high
Controller(控制节点)职责负责管理集群元数据,并提供Web集群管理工具。high
Agent(代理节点)部署位置与职责部署在每一台物理机上,负责本机节点的启动和停止。high
Data Node(数据节点)职责计算和数据节点。high
DolphinDB集群扩展节点生效方式需要修改节点配置文件,并通过集群Controller重启来载入新的节点配置。high
在新物理机上新增节点前置要求需要部署新的Agent服务负责新物理机上的节点启停。high
新增节点加入集群后计算资源纳入时效新节点启动后计算能力会即时纳入集群计算资源统筹。medium
新增Data Node默认存储目录默认存储区域默认将[Home Dir]/[Data Node Alias]/storage作为数据存储区域。high
[Home Dir]示例(-home data)路径含义通过启动命令增加 -home data,使[Home Dir]指向可执行文件同级目录下的/data/目录;示例node3默认目录为 /data/node3/storage。high
新节点存储目录初始化自动化行为新节点启动后默认存储目录会被自动创建并初始化用于存储集群的分布式数据。high
仅扩展存储空间操作方式修改节点配置文件,为指定节点volumes属性增加路径。high
DolphinDB集群配置文件controller.cfg用途定义控制节点相关配置,如IP端口、控制节点连接数上限等。high
DolphinDB集群配置文件cluster.cfg用途配置集群内每个节点的个性化配置(如node3的volumes属性等)。high
DolphinDB集群配置文件cluster.nodes用途定义集群内部的节点和代理清单;控制节点通过该文件获取集群节点信息。high
DolphinDB集群配置文件agent.cfg用途定义代理节点属性(代理节点IP端口、所属集群控制节点等);与代理节点程序一起部署在各台物理机上。high
扩展节点操作方式Web界面支持新物理机上部署Agent后,详细配置与节点启停可在Web集群管理界面方便完成。medium
volumes属性多目录支持支持用逗号分隔指定多个存储目录;扩存时可在原volumes后追加存储目录。high
示例原集群环境服务器与系统原有服务器4台,操作系统均为ubuntu 16.04。high
示例原集群环境DolphinDB版本DolphinDB 0.7high
示例原集群拓扑节点与IP映射172.18.0.10: controller;172.18.0.11: datanode1;172.18.0.12: datanode2;172.18.0.13: datanode3。high
controller.cfg(示例)localSite配置localSite=172.18.0.10:8990:ctl8990high
cluster.nodes(示例)agent与datanode条目包含agent1/agent2/agent3(172.18.0.11/12/13:8701)与node1/node2/node3(172.18.0.11:8801;172.18.0.12:8802;172.18.0.13:8803)。high
启动Controller脚本(示例)命令nohup ./dolphindb -console 0 -mode controller -script dolphindb.dos -config config/controller.cfg -logFile log/controller.log -nodesFile config/cluster.nodes &high
启动Agent脚本(示例)命令./dolphindb -mode agent -home data -script dolphindb.dos -config config/agent.cfg -logFile log/agent.loghigh
示例验证数据(初始写入)创建并写入分布式数据库与分区表创建data表(id 1..1000,name为rand(`A`B`C,1000)),创建dfs://scaleout_test_db为RANGE分区(cutPoints(1..2000,10)),创建分区表scaleoutTB并append初始数据。high
DFS Explorer用途(示例中)通过集群web界面dfs explorer观察生成的数据分布情况。high
多物理机上部署集群教程参考链接https://link.zhihu.com/?target=https%3A//gitee.com/dolphindb/Tutorials_CN/blob/master/multi_machine_cluster_deploy.mdhigh
扩容验证方法(节点/存储)方式扩展完成后用同样方式追加数据以验证新节点和新存储是否启用。high
本次扩展目标扩容内容为增加计算和存储能力,新增一台服务器加入原有集群作为新节点。high
新增物理机IP172.18.0.14high
新增节点信息(目标)地址与标识172.18.0.14:8804:datanode4high
新机器Agent配置(agent.cfg示例)localSitelocalSite=172.18.0.14:8701:agent4high
新机器Agent配置(agent.cfg示例)controllerSitecontrollerSite=172.18.0.10:8990:ctl8990high
新机器Agent配置(agent.cfg示例)modemode=agenthigh
cluster.nodes扩容配置(示例)新增Agent条目172.18.0.14:8704:agent4,agenthigh
cluster.nodes扩容配置(示例)新增Data Node条目172.18.0.14:8804:node4,datanodehigh
重启集群步骤(示例)Web管理界面地址http://172.18.0.10:8990high
重启集群步骤(示例)关闭Controller命令pkill dolphindbhigh
重启集群步骤(示例)等待时间等待半分钟之后(等待端口释放,时间可能因操作系统不同)。medium
重启后Web界面观察(示例)状态变化可看到新增agent4且为已启动状态,并可在Web界面启动所有节点。medium
扩展节点验证写入(示例)追加数据范围向scaleoutTB追加id为1001..1500的数据(500行)。high
扩展节点验证结果(示例)数据分布在dfs explorer中可看到数据已分布到新的node4节点上。medium
扩展存储背景(示例)原因与目标node3所在服务器磁盘空间不足,扩展一块磁盘(路径为/dev/disk2)并纳入node3存储。high
节点存储配置volumes属性作用节点存储可通过配置文件中的volumes属性配置。high
默认存储路径(未配置volumes时)默认值默认存储路径为[HomeDir]/[Data Node Alias]/Storage;本例为 data/node3/storage。high
从默认路径增加磁盘的配置注意事项风险设置volumes属性时必须显式包含原默认路径,否则会导致默认路径下元数据丢失。high
cluster.cfg(示例)node3默认volumes行node3.volumes=data/node3/storagehigh
Controller重载节点配置(示例)函数在controller上执行loadClusterNodesConfigs()使Controller重新载入节点配置。high
Web界面配置的重载行为自动化若在集群管理web界面完成上述步骤,重载过程会自动完成,无需手工执行。medium
存储扩展配置生效方式(示例)重启要求配置完成后无需重启controller,只需在web界面重启node3节点使新配置生效。high
addVolumes函数用途与持久化可在node3执行addVolumes("/dev/disk2/node3")动态添加volumes使新存储马上生效;效果不持久化,重启后会被新配置覆盖。high
扩展存储验证写入(示例)追加数据范围向scaleoutTB追加id为1501..2000的数据(500行)。high
扩展存储验证结果(示例)磁盘写入到磁盘路径下观察数据已被写入。medium
新增存储路径目录结构(示例)生成内容在/dev/disk2/node3下自动生成CHUNKS、CHUNK_METADATA、DATABASE及LOG等文件夹。medium
DolphinDB Recovery机制能力集群支持数据自动Recovery机制;当检测到部分节点长时间无心跳(判定宕机)时,会从其他副本自动恢复数据并保持副本数稳定。high
Recovery导致的数据迁移前提(文中说明)条件数据稳定的前提是宕掉的节点数少于系统设置的数据副本数。high
controller.cfg参数dfsReplicationFactor默认值与含义dfsReplicationFactor=2;表示集群内每个数据副本数,默认2。high
controller.cfg参数dfsReplicaReliabilityLevel默认值与含义(文中注释)dfsReplicaReliabilityLevel=1;注释描述“0 多个副本允许存在一个节点 1 多个副本必须分存到不同节点,默认0”。(页面存在“默认0”与赋值1的表述并存)medium
controller.cfg参数dfsRecoveryWaitTime默认与示例值dfsRecoveryWaitTime=30000;注释称“默认不启用,单位ms”。medium
dfsRecoveryWaitTime作用与默认行为控制recovery启动;默认不设置即关闭recovery功能;设置等待时间用于避免计划内停机维护导致不必要的recovery。high
dfsReplicationFactor建议建议值不建议低于2;具体设置需综合考虑节点数、稳定性需求与写入性能需求。medium
dfsReplicaReliabilityLevel建议生产建议生产环境建议设置为1;0建议仅用于学习或测试环境。high