| import{_ as r,r as o,o as s,c as l,a as c,d as e,e as d,b as t,w as h,f as a}from"./app-9073a2e6.js";const u={},p=e("h1",{id:"部署指导",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#部署指导","aria-hidden":"true"},"#"),d(" 部署指导")],-1),b=e("h2",{id:"单机版部署",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#单机版部署","aria-hidden":"true"},"#"),d(" 单机版部署")],-1),g=e("h3",{id:"安装环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#安装环境","aria-hidden":"true"},"#"),d(" 安装环境")],-1),_=e("p",null,"安装前需要保证设备上配有 JDK>=1.8 的运行环境,并配置好 JAVA_HOME 环境变量。",-1),v=e("p",null,"设置最大文件打开数为 65535。",-1),m=e("h3",{id:"安装步骤",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#安装步骤","aria-hidden":"true"},"#"),d(" 安装步骤")],-1),f=e("p",null,"IoTDB 支持多种安装途径。用户可以使用三种方式对 IoTDB 进行安装——下载二进制可运行程序、使用源码、使用 docker 镜像。",-1),x=e("li",null,[e("p",null,"使用源码:您可以从代码仓库下载源码并编译,具体编译方法见下方。")],-1),N={href:"https://iotdb.apache.org/Download/",target:"_blank",rel:"noopener noreferrer"},C={href:"https://github.com/apache/iotdb/blob/master/docker/src/main",target:"_blank",rel:"noopener noreferrer"},D=a(`<h3 id="软件目录结构" tabindex="-1"><a class="header-anchor" href="#软件目录结构" aria-hidden="true">#</a> 软件目录结构</h3><ul><li>sbin 启动和停止脚本目录</li><li>conf 配置文件目录</li><li>tools 系统工具目录</li><li>lib 依赖包目录</li></ul><h3 id="iotdb-试用" tabindex="-1"><a class="header-anchor" href="#iotdb-试用" aria-hidden="true">#</a> IoTDB 试用</h3><p>用户可以根据以下操作对 IoTDB 进行简单的试用,若以下操作均无误,则说明 IoTDB 安装成功。</p><h4 id="启动-iotdb" tabindex="-1"><a class="header-anchor" href="#启动-iotdb" aria-hidden="true">#</a> 启动 IoTDB</h4><p>IoTDB 是一个基于分布式系统的数据库。要启动 IoTDB ,你可以先启动单机版(一个 ConfigNode 和一个 DataNode)来检查安装。</p><p>用户可以使用 sbin 文件夹下的 start-standalone 脚本启动 IoTDB。</p><p>Linux 系统与 MacOS 系统启动命令如下:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>> bash sbin/start-standalone.sh |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Windows 系统启动命令如下:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>> sbin\\start-standalone.bat |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>注意:目前,要使用单机模式,你需要保证所有的地址设置为 127.0.0.1,如果需要从非 IoTDB 所在的机器访问此IoTDB,请将配置项 <code>dn_rpc_address</code> 修改为 IoTDB 所在的机器 IP。副本数设置为1。并且,推荐使用 SimpleConsensus,因为这会带来额外的效率。这些现在都是默认配置。</p><h2 id="集群版部署" tabindex="-1"><a class="header-anchor" href="#集群版部署" aria-hidden="true">#</a> 集群版部署</h2><h3 id="集群管理工具部署" tabindex="-1"><a class="header-anchor" href="#集群管理工具部署" aria-hidden="true">#</a> 集群管理工具部署</h3><p>IoTDB 集群管理工具是一款易用的运维工具(企业版工具)。旨在解决 IoTDB 分布式系统多节点的运维难题,主要包括集群部署、集群启停、弹性扩容、配置更新、数据导出等功能,从而实现对复杂数据库集群的一键式指令下发,极大降低管理难度。本文档将说明如何用集群管理工具远程部署、配置、启动和停止 IoTDB 集群实例。</p><h4 id="部署集群管理工具" tabindex="-1"><a class="header-anchor" href="#部署集群管理工具" aria-hidden="true">#</a> 部署集群管理工具</h4><h5 id="环境依赖" tabindex="-1"><a class="header-anchor" href="#环境依赖" aria-hidden="true">#</a> 环境依赖</h5><p>IoTDB 要部署的机器需要依赖jdk 8及以上版本、lsof 或者 netstat、unzip功能如果没有请自行安装,可以参考文档最后的一节环境所需安装命令。</p><p>提示:IoTDB集群管理工具需要使用具有root权限的账号</p><h5 id="部署方法" tabindex="-1"><a class="header-anchor" href="#部署方法" aria-hidden="true">#</a> 部署方法</h5><h6 id="下载安装" tabindex="-1"><a class="header-anchor" href="#下载安装" aria-hidden="true">#</a> 下载安装</h6><p>本工具为IoTDB企业版配套工具,您可以联系您的销售获取工具下载方式。</p><p>注意:由于二进制包仅支持GLIBC2.17 及以上版本,因此最低适配Centos7版本</p><ul><li>在在iotd目录内输入以下指令后:</li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><span class="token function">bash</span> install-iotd.sh |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>即可在之后的 shell 内激活 iotd 关键词,如检查部署前所需的环境指令如下所示:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster check example |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>也可以不激活iotd直接使用 <iotd absolute path>/sbin/iotd 来执行命令,如检查部署前所需的环境:</li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code><span class="token operator"><</span>iotd absolute path<span class="token operator">></span>/sbin/iotd cluster check example |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h4 id="集群配置文件介绍" tabindex="-1"><a class="header-anchor" href="#集群配置文件介绍" aria-hidden="true">#</a> 集群配置文件介绍</h4><ul><li>在<code>iotd/config</code> 目录下有集群配置的yaml文件,yaml文件名字就是集群名字yaml 文件可以有多个,为了方便用户配置yaml文件在iotd/config目录下面提供了<code>default_cluster.yaml</code>示例。</li><li>yaml 文件配置由<code>global</code>、<code>confignode_servers</code>、<code>datanode_servers</code>、<code>grafana_servers</code>(功能待开发)四大部分组成</li><li>global 是通用配置主要配置机器用户名密码、IoTDB本地安装文件、Jdk配置等。在<code>iotd/config</code>目录中提供了一个<code>default_cluster.yaml</code>样例数据,<br> 用户可以复制修改成自己集群名字并参考里面的说明进行配置iotdb集群,在<code>default_cluster.yaml</code>样例中没有注释的均为必填项,已经注释的为非必填项。</li></ul><p>例如要执行<code>default_cluster.yaml</code>检查命令则需要执行命令<code>iotd cluster check default_cluster</code>即可,<br> 更多详细命令请参考下面命令列表。</p>`,32),y=e("thead",null,[e("tr",null,[e("th",null,"参数"),e("th",null,"说明"),e("th",null,"是否必填")])],-1),k=e("tr",null,[e("td",null,"iotdb_zip_dir"),e("td",null,[d("IoTDB 部署分发目录,如果值为空则从"),e("code",null,"iotdb_download_url"),d("指定地址下载")]),e("td",null,"非必填")],-1),I=e("tr",null,[e("td",null,"iotdb_download_url"),e("td",null,[d("IoTDB 下载地址,如果"),e("code",null,"iotdb_zip_dir"),d(" 没有值则从指定地址下载")]),e("td",null,"非必填")],-1),T=e("tr",null,[e("td",null,"jdk_tar_dir"),e("td",null,"jdk 本地目录,可使用该 jdk 路径进行上传部署至目标节点。"),e("td",null,"非必填")],-1),S=e("tr",null,[e("td",null,"jdk_deploy_dir"),e("td",null,[d("jdk 远程机器部署目录,会将 jdk 部署到目标节点该文件夹下最终部署完成的路径是"),e("code",null,"<jdk_deploy_dir>/jdk_iotdb")]),e("td",null,"非必填")],-1),B=e("tr",null,[e("td",null,"iotdb_lib_dir"),e("td",null,"IoTDB lib 目录或者IoTDB 的lib 压缩包仅支持.zip格式 ,仅用于IoTDB升级,默认处于注释状态,如需升级请打开注释"),e("td",null,"非必填")],-1),w=e("tr",null,[e("td",null,"user"),e("td",null,"ssh登陆部署机器的用户名"),e("td",null,"必填")],-1),P=e("tr",null,[e("td",null,"password"),e("td",null,"ssh登录的密码, 如果password未指定使用pkey登陆, 请确保已配置节点之间ssh登录免密钥"),e("td",null,"非必填")],-1),L=e("tr",null,[e("td",null,"pkey"),e("td",null,"密钥登陆如果password 有值优先使用password否则使用pkey登陆"),e("td",null,"非必填")],-1),R=e("tr",null,[e("td",null,"ssh_port"),e("td",null,"ssh登录端口"),e("td",null,"必填")],-1),A=e("tr",null,[e("td",null,"deploy_dir"),e("td",null,[d("iotdb 部署目录,会把 iotdb 部署到目标节点该文件夹下最终部署完成的路径是"),e("code",null,"<deploy_dir>/iotdb")]),e("td",null,"必填")],-1),M={href:"http://datanode-env.sh",target:"_blank",rel:"noopener noreferrer"},j=e("td",null,[d("对应"),e("code",null,"iotdb/config/datanode-env.sh")],-1),z=e("td",null,"非必填",-1),O={href:"http://confignode-env.sh",target:"_blank",rel:"noopener noreferrer"},V=e("td",null,[d("对应"),e("code",null,"iotdb/config/confignode-env.sh")],-1),G=e("td",null,"非必填",-1),W=e("tr",null,[e("td",null,"iotdb-common.properties"),e("td",null,[d("对应"),e("code",null,"iotdb/config/iotdb-common.properties")]),e("td",null,"非必填")],-1),U=e("tr",null,[e("td",null,"cn_target_config_node_list"),e("td",null,[d("集群配置地址指向存活的ConfigNode,默认指向confignode_x,在"),e("code",null,"global"),d("与"),e("code",null,"confignode_servers"),d("同时配置值时优先使用"),e("code",null,"confignode_servers"),d("中的值,对应"),e("code",null,"iotdb/config/iotdb-confignode.properties"),d("中的"),e("code",null,"cn_target_config_node_list")]),e("td",null,"必填")],-1),E=e("tr",null,[e("td",null,"dn_target_config_node_list"),e("td",null,[d("集群配置地址指向存活的ConfigNode,默认指向confignode_x,在"),e("code",null,"global"),d("与"),e("code",null,"datanode_servers"),d("同时配置值时优先使用"),e("code",null,"datanode_servers"),d("中的值,对应"),e("code",null,"iotdb/config/iotdb-datanode.properties"),d("中的"),e("code",null,"dn_target_config_node_list")]),e("td",null,"必填")],-1),H=a(`<ul><li>confignode_servers 是部署IoTDB Confignodes配置,里面可以配置多个Confignode<br> 默认将第一个启动的ConfigNode节点node1当作Seed-ConfigNode</li></ul><table><thead><tr><th>参数</th><th>说明</th><th>是否必填</th></tr></thead><tbody><tr><td>name</td><td>Confignode 名称</td><td>必填</td></tr><tr><td>deploy_dir</td><td>IoTDB config node 部署目录,注:该目录不能与下面的IoTDB data node部署目录相同</td><td>必填|</td></tr><tr><td>iotdb-confignode.properties</td><td>对应<code>iotdb/config/iotdb-confignode.properties</code>更加详细请参看<code>iotdb-confignode.properties</code>文件说明</td><td>非必填</td></tr><tr><td>cn_internal_address</td><td>对应iotdb/内部通信地址,对应<code>iotdb/config/iotdb-confignode.properties</code>中的<code>cn_internal_address</code></td><td>必填</td></tr><tr><td>cn_target_config_node_list</td><td>集群配置地址指向存活的ConfigNode,默认指向confignode_x,在<code>global</code>与<code>confignode_servers</code>同时配置值时优先使用<code>confignode_servers</code>中的值,对应<code>iotdb/config/iotdb-confignode.properties</code>中的<code>cn_target_config_node_list</code></td><td>必填</td></tr><tr><td>cn_internal_port</td><td>内部通信端口,对应<code>iotdb/config/iotdb-confignode.properties</code>中的<code>cn_internal_port</code></td><td>必填</td></tr><tr><td>cn_consensus_port</td><td>对应<code>iotdb/config/iotdb-confignode.properties</code>中的<code>cn_consensus_port</code></td><td>非必填</td></tr><tr><td>cn_data_dir</td><td>对应<code>iotdb/config/iotdb-confignode.properties</code>中的<code>cn_data_dir</code></td><td>必填</td></tr><tr><td>iotdb-common.properties</td><td>对应<code>iotdb/config/iotdb-common.properties</code>在<code>global</code>与<code>confignode_servers</code>同时配置值优先使用confignode_servers中的值</td><td>非必填</td></tr></tbody></table><ul><li>datanode_servers 是部署IoTDB Datanodes配置,里面可以配置多个Datanode</li></ul><table><thead><tr><th>参数</th><th>说明</th><th>是否必填</th></tr></thead><tbody><tr><td>name</td><td>Datanode 名称</td><td>必填</td></tr><tr><td>deploy_dir</td><td>IoTDB data node 部署目录,注:该目录不能与下面的IoTDB config node部署目录相同</td><td>必填</td></tr><tr><td>iotdb-datanode.properties</td><td>对应<code>iotdb/config/iotdb-datanode.properties</code>更加详细请参看<code>iotdb-datanode.properties</code>文件说明</td><td>非必填</td></tr><tr><td>dn_rpc_address</td><td>datanode rpc 地址对应<code>iotdb/config/iotdb-datanode.properties</code>中的<code>dn_rpc_address</code></td><td>必填</td></tr><tr><td>dn_internal_address</td><td>内部通信地址,对应<code>iotdb/config/iotdb-datanode.properties</code>中的<code>dn_internal_address</code></td><td>必填</td></tr><tr><td>dn_target_config_node_list</td><td>集群配置地址指向存活的ConfigNode,默认指向confignode_x,在<code>global</code>与<code>datanode_servers</code>同时配置值时优先使用<code>datanode_servers</code>中的值,对应<code>iotdb/config/iotdb-datanode.properties</code>中的<code>dn_target_config_node_list</code></td><td>必填</td></tr><tr><td>dn_rpc_port</td><td>datanode rpc端口地址,对应<code>iotdb/config/iotdb-datanode.properties</code>中的<code>dn_rpc_port</code></td><td>必填</td></tr><tr><td>dn_internal_port</td><td>内部通信端口,对应<code>iotdb/config/iotdb-datanode.properties</code>中的<code>dn_internal_port</code></td><td>必填</td></tr><tr><td>iotdb-common.properties</td><td>对应<code>iotdb/config/iotdb-common.properties</code>在<code>global</code>与<code>datanode_servers</code>同时配置值优先使用<code>datanode_servers</code>中的值</td><td>非必填</td></tr></tbody></table><ul><li>grafana_servers 是部署Grafana 相关配置<br> 该模块暂不支持</li></ul><p>注意:如何配置yaml key对应的值包含特殊字符如:等建议整个value使用双引号,对应的文件路径中不要使用包含空格的路径,防止出现识别出现异常问题。</p><h4 id="命令格式" tabindex="-1"><a class="header-anchor" href="#命令格式" aria-hidden="true">#</a> 命令格式</h4><p>本工具的基本用法为:</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster <span class="token operator"><</span>key<span class="token operator">></span> <span class="token operator"><</span>cluster name<span class="token operator">></span> <span class="token punctuation">[</span>params <span class="token punctuation">(</span>Optional<span class="token punctuation">)</span><span class="token punctuation">]</span> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><p>key 表示了具体的命令。</p></li><li><p>cluster name 表示集群名称(即<code>iotd/config</code> 文件中yaml文件名字)。</p></li><li><p>params 表示了命令的所需参数(选填)。</p></li><li><p>例如部署default_cluster集群的命令格式为:</p></li></ul><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster deploy default_cluster |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li>集群的功能及参数列表如下:</li></ul><table><thead><tr><th>命令</th><th>功能</th><th>参数</th></tr></thead><tbody><tr><td>check</td><td>检测集群是否可以部署</td><td>集群名称列表</td></tr><tr><td>clean</td><td>清理集群</td><td>集群名称</td></tr><tr><td>deploy</td><td>部署集群</td><td>集群名称</td></tr><tr><td>list</td><td>打印集群及状态列表</td><td>无</td></tr><tr><td>start</td><td>启动集群</td><td>集群名称,-N,节点名称(可选)</td></tr><tr><td>stop</td><td>关闭集群</td><td>集群名称,-N,节点名称(可选)</td></tr><tr><td>restart</td><td>重启集群</td><td>集群名称</td></tr><tr><td>show</td><td>查看集群信息,details字段表示展示集群信息细节</td><td>集群名称, details(可选)</td></tr><tr><td>destroy</td><td>销毁集群</td><td>集群名称</td></tr><tr><td>scaleout</td><td>集群扩容</td><td>集群名称</td></tr><tr><td>scalein</td><td>集群缩容</td><td>集群名称,-N,集群节点名字或集群节点ip+port</td></tr><tr><td>reload</td><td>集群热加载</td><td>集群名称</td></tr><tr><td>distribute</td><td>集群配置文件分发</td><td>集群名称</td></tr><tr><td>dumplog</td><td>备份指定集群日志</td><td>集群名称,-N,集群节点名字 -h 备份至目标机器ip -pw 备份至目标机器密码 -p 备份至目标机器端口 -path 备份的目录 -startdate 起始时间 -enddate 结束时间 -loglevel 日志类型 -l 传输速度</td></tr><tr><td>dumpdata</td><td>备份指定集群数据</td><td>集群名称, -h 备份至目标机器ip -pw 备份至目标机器密码 -p 备份至目标机器端口 -path 备份的目录 -startdate 起始时间 -enddate 结束时间 -l 传输速度</td></tr><tr><td>upgrade</td><td>lib 包升级</td><td>集群名字(升级完后请重启)</td></tr></tbody></table><h4 id="详细命令执行过程" tabindex="-1"><a class="header-anchor" href="#详细命令执行过程" aria-hidden="true">#</a> 详细命令执行过程</h4><p>下面的命令都是以default_cluster.yaml 为示例执行的,用户可以修改成自己的集群文件来执行</p><h5 id="检查集群部署环境命令" tabindex="-1"><a class="header-anchor" href="#检查集群部署环境命令" aria-hidden="true">#</a> 检查集群部署环境命令</h5><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster check default_cluster |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><p>根据 cluster-name 找到默认位置的 yaml 文件,获取<code>confignode_servers</code>和<code>datanode_servers</code>配置信息</p></li><li><p>验证目标节点是否能够通过 SSH 登录</p></li><li><p>验证对应节点上的 JDK 版本是否满足IoTDB jdk1.8及以上版本、服务器是否按照unzip、是否安装lsof 或者netstat</p></li><li><p>如果看到下面提示<code>Info:example check successfully!</code> 证明服务器已经具备安装的要求,<br> 如果输出<code>Warn:example check fail!</code> 证明有部分条件没有满足需求可以查看上面的Warn日志进行修复,假如jdk没有满足要求,我们可以自己在yaml 文件中配置一个jdk1.8 及以上版本的进行部署不影响后面使用,如果检查lsof、netstat或者unzip 不满足要求需要在服务器上自行安装</p></li></ul><h5 id="部署集群命令" tabindex="-1"><a class="header-anchor" href="#部署集群命令" aria-hidden="true">#</a> 部署集群命令</h5><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster deploy default_cluster |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><p>根据 cluster-name 找到默认位置的 yaml 文件,获取<code>confignode_servers</code>和<code>datanode_servers</code>配置信息</p></li><li><p>根据<code>confignode_servers</code> 和<code>datanode_servers</code>中的节点信息上传iotdb压缩包和jdk压缩包(如果yaml中配置<code>jdk_tar_dir</code>和<code>jdk_deploy_dir</code>值)</p></li><li><p>根据yaml文件节点配置信息生成并上传<code>iotdb-common.properties</code>、<code>iotdb-confignode.properties</code>、<code>iotdb-datanode.properties</code></p></li></ul><p>提示:这里的confignode 和datanode部署到同一台机器上时目录不能为相同,否则会被后部署的节点文件覆盖</p><h5 id="启动集群命令" tabindex="-1"><a class="header-anchor" href="#启动集群命令" aria-hidden="true">#</a> 启动集群命令</h5><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster check default_cluster |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><p>根据 cluster-name 找到默认位置的 yaml 文件,获取<code>confignode_servers</code>和<code>datanode_servers</code>配置信息</p></li><li><p>启动confignode,根据yaml配置文件中<code>confignode_servers</code>中的顺序依次启动同时根据进程id检查confignode是否正常,第一个confignode 为seek config</p></li><li><p>启动datanode,根据yaml配置文件中<code>datanode_servers</code>中的顺序依次启动同时根据进程id检查datanode是否正常</p></li><li><p>如果根据进程id检查进程存在后,通过cli依次检查集群列表中每个服务是否正常,如果cli链接失败则每隔10s重试一次直到成功最多重试5次</p></li></ul><p><em>启动单个节点命令</em></p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster start default_cluster <span class="token parameter variable">-N</span> datanode_1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>or</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster start default_cluster <span class="token parameter variable">-N</span> <span class="token number">192.168</span>.1.5:6667 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><p>根据 cluster-name 找到默认位置的 yaml 文件</p></li><li><p>根据提供的节点名称或者ip:port找到对于节点位置信息,如果启动的节点是<code>data_node</code>则ip使用yaml 文件中的<code>dn_rpc_address</code>、port 使用的是yaml文件中datanode_servers 中的<code>dn_rpc_port</code>。<br> 如果启动的节点是<code>config_node</code>则ip使用的是yaml文件中confignode_servers 中的<code>cn_internal_address</code> 、port 使用的是<code>cn_internal_port</code></p></li><li><p>启动该节点</p></li></ul><h5 id="查看集群状态命令" tabindex="-1"><a class="header-anchor" href="#查看集群状态命令" aria-hidden="true">#</a> 查看集群状态命令</h5><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster show default_cluster |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>or</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster show default_cluster details |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><p>根据 cluster-name 找到默认位置的 yaml 文件,获取<code>confignode_servers</code>和<code>datanode_servers</code>配置信息</p></li><li><p>依次在datanode通过cli执行<code>show cluster details</code> 如果有一个节点执行成功则不会在后续节点继续执行cli直接返回结果</p></li></ul><h5 id="停止集群命令" tabindex="-1"><a class="header-anchor" href="#停止集群命令" aria-hidden="true">#</a> 停止集群命令</h5><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster stop default_cluster |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><p>根据 cluster-name 找到默认位置的 yaml 文件,获取<code>confignode_servers</code>和<code>datanode_servers</code>配置信息</p></li><li><p>根据<code>datanode_servers</code>中datanode节点信息,按照配置先后顺序依次停止datanode节点</p></li><li><p>根据<code>confignode_servers</code>中confignode节点信息,按照配置依次停止confignode节点</p></li></ul><p><em>停止单个节点命令</em></p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster stop default_cluster <span class="token parameter variable">-N</span> datanode_1 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>or</p><div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code>iotd cluster stop default_cluster <span class="token parameter variable">-N</span> <span class="token number">192.168</span>.1.5:6667 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><ul><li><p>根据 cluster-name 找到默认位置的 yaml 文件</p></li><li><p>根据提供的节点名称或者ip:port找到对于节点位置信息,如果停止的节点是<code>data_node</code>则ip使用yaml 文件中的<code>dn_rpc_address</code>、port 使用的是yaml文件中datanode_servers 中的<code>dn_rpc_port</code>。<br> 如果停止的节点是<code>config_node</code>则ip使用的是yaml文件中confignode_servers 中的<code>cn_internal_address</code> 、port 使用的是<code>cn_internal_port</code></p></li><li><p>停止该节点</p></li></ul><h2 id="手动部署" tabindex="-1"><a class="header-anchor" href="#手动部署" aria-hidden="true">#</a> 手动部署</h2><h3 id="前置检查" tabindex="-1"><a class="header-anchor" href="#前置检查" aria-hidden="true">#</a> 前置检查</h3><ol><li>JDK>=1.8 的运行环境,并配置好 JAVA_HOME 环境变量。</li><li>设置最大文件打开数为 65535。</li><li>关闭交换内存。</li><li>首次启动ConfigNode节点时,确保已清空ConfigNode节点的data/confignode目录;首次启动DataNode节点时,确保已清空DataNode节点的data/datanode目录。</li><li>如果整个集群处在可信环境下,可以关闭机器上的防火墙选项。</li><li>在集群默认配置中,ConfigNode 会占用端口 10710 和 10720,DataNode 会占用端口 6667、10730、10740、10750 和 10760,<br> 请确保这些端口未被占用,或者手动修改配置文件中的端口配置。</li></ol><h3 id="安装包获取" tabindex="-1"><a class="header-anchor" href="#安装包获取" aria-hidden="true">#</a> 安装包获取</h3><p>你可以选择下载二进制文件(见 3.1)或从源代码编译(见 3.2)。</p><h4 id="下载二进制文件" tabindex="-1"><a class="header-anchor" href="#下载二进制文件" aria-hidden="true">#</a> 下载二进制文件</h4>`,49),F={href:"https://iotdb.apache.org/Download/",target:"_blank",rel:"noopener noreferrer"},J=e("li",null,"下载 IoTDB 1.0.0 版本的二进制文件。",-1),Q=e("li",null,"解压得到 apache-iotdb-1.0.0-all-bin 目录。",-1),K=a(`<h4 id="使用源码编译" tabindex="-1"><a class="header-anchor" href="#使用源码编译" aria-hidden="true">#</a> 使用源码编译</h4><h5 id="下载源码" tabindex="-1"><a class="header-anchor" href="#下载源码" aria-hidden="true">#</a> 下载源码</h5><p><strong>Git</strong></p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>git clone https://github.com/apache/iotdb.git |
| git checkout v1.0.0 |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>官网下载</strong></p>`,5),q={href:"https://iotdb.apache.org/Download/",target:"_blank",rel:"noopener noreferrer"},Y=e("li",null,"下载 IoTDB 1.0.0 版本的源码。",-1),X=e("li",null,"解压得到 apache-iotdb-1.0.0 目录。",-1),Z=a(`<h5 id="编译源码" tabindex="-1"><a class="header-anchor" href="#编译源码" aria-hidden="true">#</a> 编译源码</h5><p>在 IoTDB 源码根目录下:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>mvn clean package -pl distribution -am -DskipTests |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>编译成功后,可在目录<br><strong>distribution/target/apache-iotdb-1.0.0-SNAPSHOT-all-bin/apache-iotdb-1.0.0-SNAPSHOT-all-bin</strong><br> 找到集群版本的二进制文件。</p><h3 id="安装包说明" tabindex="-1"><a class="header-anchor" href="#安装包说明" aria-hidden="true">#</a> 安装包说明</h3><p>打开 apache-iotdb-1.0.0-SNAPSHOT-all-bin,可见以下目录:</p><table><thead><tr><th><strong>目录</strong></th><th><strong>说明</strong></th></tr></thead><tbody><tr><td>conf</td><td>配置文件目录,包含 ConfigNode、DataNode、JMX 和 logback 等配置文件</td></tr><tr><td>data</td><td>数据文件目录,包含 ConfigNode 和 DataNode 的数据文件</td></tr><tr><td>lib</td><td>库文件目录</td></tr><tr><td>licenses</td><td>证书文件目录</td></tr><tr><td>logs</td><td>日志文件目录,包含 ConfigNode 和 DataNode 的日志文件</td></tr><tr><td>sbin</td><td>脚本目录,包含 ConfigNode 和 DataNode 的启停移除脚本,以及 Cli 的启动脚本等</td></tr><tr><td>tools</td><td>系统工具目录</td></tr></tbody></table><h3 id="集群安装配置" tabindex="-1"><a class="header-anchor" href="#集群安装配置" aria-hidden="true">#</a> 集群安装配置</h3><h4 id="集群安装" tabindex="-1"><a class="header-anchor" href="#集群安装" aria-hidden="true">#</a> 集群安装</h4><p><code>apache-iotdb-1.0.0-SNAPSHOT-all-bin</code> 包含 ConfigNode 和 DataNode,<br> 请将安装包部署于你目标集群的所有机器上,推荐将安装包部署于所有服务器的相同目录下。</p>`,10),$=e("br",null,null,-1),ee={href:"https://iotdb.apache.org/zh/UserGuide/Master/QuickStart/ClusterQuickStart.html",target:"_blank",rel:"noopener noreferrer"},de=a('<h4 id="集群配置" tabindex="-1"><a class="header-anchor" href="#集群配置" aria-hidden="true">#</a> 集群配置</h4><p>接下来需要修改每个服务器上的配置文件,登录服务器,<br> 并将工作路径切换至 <code>apache-iotdb-1.0.0-SNAPSHOT-all-bin</code>,<br> 配置文件在 <code>./conf</code> 目录内。</p><p>对于所有部署 ConfigNode 的服务器,需要修改通用配置(见 5.2.1)和 ConfigNode 配置(见 5.2.2)。</p><p>对于所有部署 DataNode 的服务器,需要修改通用配置(见 5.2.1)和 DataNode 配置(见 5.2.3)。</p><h5 id="通用配置" tabindex="-1"><a class="header-anchor" href="#通用配置" aria-hidden="true">#</a> 通用配置</h5>',5),te=e("br",null,null,-1),ne={href:"https://iotdb.apache.org/zh/UserGuide/Master/Cluster/Deployment-Recommendation.html",target:"_blank",rel:"noopener noreferrer"},ae=e("br",null,null,-1),oe=a('<table><thead><tr><th><strong>配置项</strong></th><th><strong>说明</strong></th><th><strong>默认</strong></th></tr></thead><tbody><tr><td>cluster_name</td><td>节点希望加入的集群的名称</td><td>defaultCluster</td></tr><tr><td>config_node_consensus_protocol_class</td><td>ConfigNode 使用的共识协议</td><td>org.apache.iotdb.consensus.ratis.RatisConsensus</td></tr><tr><td>schema_replication_factor</td><td>元数据副本数,DataNode 数量不应少于此数目</td><td>1</td></tr><tr><td>schema_region_consensus_protocol_class</td><td>元数据副本组的共识协议</td><td>org.apache.iotdb.consensus.ratis.RatisConsensus</td></tr><tr><td>data_replication_factor</td><td>数据副本数,DataNode 数量不应少于此数目</td><td>1</td></tr><tr><td>data_region_consensus_protocol_class</td><td>数据副本组的共识协议。注:RatisConsensus 目前不支持多数据目录</td><td>org.apache.iotdb.consensus.iot.IoTConsensus</td></tr></tbody></table><p><strong>注意:上述配置项在集群启动后即不可更改,且务必保证所有节点的通用配置完全一致,否则节点无法启动。</strong></p><h5 id="confignode-配置" tabindex="-1"><a class="header-anchor" href="#confignode-配置" aria-hidden="true">#</a> ConfigNode 配置</h5><p>打开 ConfigNode 配置文件 ./conf/iotdb-confignode.properties,根据服务器/虚拟机的 IP 地址和可用端口,设置以下参数:</p><table><thead><tr><th><strong>配置项</strong></th><th><strong>说明</strong></th><th><strong>默认</strong></th><th><strong>用法</strong></th></tr></thead><tbody><tr><td>cn_internal_address</td><td>ConfigNode 在集群内部通讯使用的地址</td><td>127.0.0.1</td><td>设置为服务器的 IPV4 地址或域名</td></tr><tr><td>cn_internal_port</td><td>ConfigNode 在集群内部通讯使用的端口</td><td>10710</td><td>设置为任意未占用端口</td></tr><tr><td>cn_consensus_port</td><td>ConfigNode 副本组共识协议通信使用的端口</td><td>10720</td><td>设置为任意未占用端口</td></tr><tr><td>cn_target_config_node_list</td><td>节点注册加入集群时连接的 ConfigNode 的地址。注:只能配置一个</td><td>127.0.0.1:10710</td><td>对于 Seed-ConfigNode,设置为自己的 cn_internal_address:cn_internal_port;对于其它 ConfigNode,设置为另一个正在运行的 ConfigNode 的 cn_internal_address:cn_internal_port</td></tr></tbody></table><p><strong>注意:上述配置项在节点启动后即不可更改,且务必保证所有端口均未被占用,否则节点无法启动。</strong></p><h5 id="datanode-配置" tabindex="-1"><a class="header-anchor" href="#datanode-配置" aria-hidden="true">#</a> DataNode 配置</h5><p>打开 DataNode 配置文件 ./conf/iotdb-datanode.properties,根据服务器/虚拟机的 IP 地址和可用端口,设置以下参数:</p><table><thead><tr><th><strong>配置项</strong></th><th><strong>说明</strong></th><th><strong>默认</strong></th><th><strong>用法</strong></th></tr></thead><tbody><tr><td>dn_rpc_address</td><td>客户端 RPC 服务的地址</td><td>127.0.0.1</td><td>设置为服务器的 IPV4 地址或域名</td></tr><tr><td>dn_rpc_port</td><td>客户端 RPC 服务的端口</td><td>6667</td><td>设置为任意未占用端口</td></tr><tr><td>dn_internal_address</td><td>DataNode 在集群内部接收控制流使用的地址</td><td>127.0.0.1</td><td>设置为服务器的 IPV4 地址或域名</td></tr><tr><td>dn_internal_port</td><td>DataNode 在集群内部接收控制流使用的端口</td><td>10730</td><td>设置为任意未占用端口</td></tr><tr><td>dn_mpp_data_exchange_port</td><td>DataNode 在集群内部接收数据流使用的端口</td><td>10740</td><td>设置为任意未占用端口</td></tr><tr><td>dn_data_region_consensus_port</td><td>DataNode 的数据副本间共识协议通信的端口</td><td>10750</td><td>设置为任意未占用端口</td></tr><tr><td>dn_schema_region_consensus_port</td><td>DataNode 的元数据副本间共识协议通信的端口</td><td>10760</td><td>设置为任意未占用端口</td></tr><tr><td>dn_target_config_node_list</td><td>集群中正在运行的 ConfigNode 地址</td><td>127.0.0.1:10710</td><td>设置为任意正在运行的 ConfigNode 的 cn_internal_address:cn_internal_port,可设置多个,用逗号(",")隔开</td></tr></tbody></table><p><strong>注意:上述配置项在节点启动后即不可更改,且务必保证所有端口均未被占用,否则节点无法启动。</strong></p><h3 id="集群操作" tabindex="-1"><a class="header-anchor" href="#集群操作" aria-hidden="true">#</a> 集群操作</h3><h4 id="启动集群" tabindex="-1"><a class="header-anchor" href="#启动集群" aria-hidden="true">#</a> 启动集群</h4><p>本小节描述如何启动包括若干 ConfigNode 和 DataNode 的集群。<br> 集群可以提供服务的标准是至少启动一个 ConfigNode 且启动 不小于(数据/元数据)副本个数 的 DataNode。</p><p>总体启动流程分为三步:</p><ol><li>启动种子 ConfigNode</li><li>增加 ConfigNode(可选)</li><li>增加 DataNode</li></ol><h5 id="启动-seed-confignode" tabindex="-1"><a class="header-anchor" href="#启动-seed-confignode" aria-hidden="true">#</a> 启动 Seed-ConfigNode</h5><p><strong>集群第一个启动的节点必须是 ConfigNode,第一个启动的 ConfigNode 必须遵循本小节教程。</strong></p><p>第一个启动的 ConfigNode 是 Seed-ConfigNode,标志着新集群的创建。<br> 在启动 Seed-ConfigNode 前,请打开通用配置文件 ./conf/iotdb-common.properties,并检查如下参数:</p><table><thead><tr><th><strong>配置项</strong></th><th><strong>检查</strong></th></tr></thead><tbody><tr><td>cluster_name</td><td>已设置为期望的集群名称</td></tr><tr><td>config_node_consensus_protocol_class</td><td>已设置为期望的共识协议</td></tr><tr><td>schema_replication_factor</td><td>已设置为期望的元数据副本数</td></tr><tr><td>schema_region_consensus_protocol_class</td><td>已设置为期望的共识协议</td></tr><tr><td>data_replication_factor</td><td>已设置为期望的数据副本数</td></tr><tr><td>data_region_consensus_protocol_class</td><td>已设置为期望的共识协议</td></tr></tbody></table>',19),ie=e("strong",null,"注意:",-1),re={href:"https://iotdb.apache.org/zh/UserGuide/Master/Cluster/Deployment-Recommendation.html",target:"_blank",rel:"noopener noreferrer"},se=a(`<p>接着请打开它的配置文件 ./conf/iotdb-confignode.properties,并检查如下参数:</p><table><thead><tr><th><strong>配置项</strong></th><th><strong>检查</strong></th></tr></thead><tbody><tr><td>cn_internal_address</td><td>已设置为服务器的 IPV4 地址或域名</td></tr><tr><td>cn_internal_port</td><td>该端口未被占用</td></tr><tr><td>cn_consensus_port</td><td>该端口未被占用</td></tr><tr><td>cn_target_config_node_list</td><td>已设置为自己的内部通讯地址,即 cn_internal_address:cn_internal_port</td></tr></tbody></table><p>检查完毕后,即可在服务器上运行启动脚本:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code># Linux 前台启动 |
| bash ./sbin/start-confignode.sh |
| |
| # Linux 后台启动 |
| nohup bash ./sbin/start-confignode.sh >/dev/null 2>&1 & |
| |
| # Windows |
| .\\sbin\\start-confignode.bat |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,4),le=e("br",null,null,-1),ce={href:"https://iotdb.apache.org/zh/UserGuide/Master/Reference/ConfigNode-Config-Manual.html",target:"_blank",rel:"noopener noreferrer"},he=a(`<h5 id="增加更多-confignode-可选" tabindex="-1"><a class="header-anchor" href="#增加更多-confignode-可选" aria-hidden="true">#</a> 增加更多 ConfigNode(可选)</h5><p><strong>只要不是第一个启动的 ConfigNode 就必须遵循本小节教程。</strong></p><p>可向集群添加更多 ConfigNode,以保证 ConfigNode 的高可用。常用的配置为额外增加两个 ConfigNode,使集群共有三个 ConfigNode。</p><p>新增的 ConfigNode 需要保证 ./conf/iotdb-common.properites 中的所有配置参数与 Seed-ConfigNode 完全一致,否则可能启动失败或产生运行时错误。<br> 因此,请着重检查通用配置文件中的以下参数:</p><table><thead><tr><th><strong>配置项</strong></th><th><strong>检查</strong></th></tr></thead><tbody><tr><td>cluster_name</td><td>与 Seed-ConfigNode 保持一致</td></tr><tr><td>config_node_consensus_protocol_class</td><td>与 Seed-ConfigNode 保持一致</td></tr><tr><td>schema_replication_factor</td><td>与 Seed-ConfigNode 保持一致</td></tr><tr><td>schema_region_consensus_protocol_class</td><td>与 Seed-ConfigNode 保持一致</td></tr><tr><td>data_replication_factor</td><td>与 Seed-ConfigNode 保持一致</td></tr><tr><td>data_region_consensus_protocol_class</td><td>与 Seed-ConfigNode 保持一致</td></tr></tbody></table><p>接着请打开它的配置文件 ./conf/iotdb-confignode.properties,并检查以下参数:</p><table><thead><tr><th><strong>配置项</strong></th><th><strong>检查</strong></th></tr></thead><tbody><tr><td>cn_internal_address</td><td>已设置为服务器的 IPV4 地址或域名</td></tr><tr><td>cn_internal_port</td><td>该端口未被占用</td></tr><tr><td>cn_consensus_port</td><td>该端口未被占用</td></tr><tr><td>cn_target_config_node_list</td><td>已设置为另一个正在运行的 ConfigNode 的内部通讯地址,推荐使用 Seed-ConfigNode 的内部通讯地址</td></tr></tbody></table><p>检查完毕后,即可在服务器上运行启动脚本:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code># Linux 前台启动 |
| bash ./sbin/start-confignode.sh |
| |
| # Linux 后台启动 |
| nohup bash ./sbin/start-confignode.sh >/dev/null 2>&1 & |
| |
| # Windows |
| .\\sbin\\start-confignode.bat |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,9),ue=e("br",null,null,-1),pe={href:"https://iotdb.apache.org/zh/UserGuide/Master/Reference/ConfigNode-Config-Manual.html",target:"_blank",rel:"noopener noreferrer"},be=a(`<h5 id="增加-datanode" tabindex="-1"><a class="header-anchor" href="#增加-datanode" aria-hidden="true">#</a> 增加 DataNode</h5><p><strong>确保集群已有正在运行的 ConfigNode 后,才能开始增加 DataNode。</strong></p><p>可以向集群中添加任意个 DataNode。<br> 在添加新的 DataNode 前,请先打开通用配置文件 ./conf/iotdb-common.properties 并检查以下参数:</p><table><thead><tr><th><strong>配置项</strong></th><th><strong>检查</strong></th></tr></thead><tbody><tr><td>cluster_name</td><td>与 Seed-ConfigNode 保持一致</td></tr></tbody></table><p>接着打开它的配置文件 ./conf/iotdb-datanode.properties 并检查以下参数:</p><table><thead><tr><th><strong>配置项</strong></th><th><strong>检查</strong></th></tr></thead><tbody><tr><td>dn_rpc_address</td><td>已设置为服务器的 IPV4 地址或域名</td></tr><tr><td>dn_rpc_port</td><td>该端口未被占用</td></tr><tr><td>dn_internal_address</td><td>已设置为服务器的 IPV4 地址或域名</td></tr><tr><td>dn_internal_port</td><td>该端口未被占用</td></tr><tr><td>dn_mpp_data_exchange_port</td><td>该端口未被占用</td></tr><tr><td>dn_data_region_consensus_port</td><td>该端口未被占用</td></tr><tr><td>dn_schema_region_consensus_port</td><td>该端口未被占用</td></tr><tr><td>dn_target_config_node_list</td><td>已设置为正在运行的 ConfigNode 的内部通讯地址,推荐使用 Seed-ConfigNode 的内部通讯地址</td></tr></tbody></table><p>检查完毕后,即可在服务器上运行启动脚本:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code># Linux 前台启动 |
| bash ./sbin/start-datanode.sh |
| |
| # Linux 后台启动 |
| nohup bash ./sbin/start-datanode.sh >/dev/null 2>&1 & |
| |
| # Windows |
| .\\sbin\\start-datanode.bat |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,8),ge=e("br",null,null,-1),_e={href:"https://iotdb.apache.org/zh/UserGuide/Master/Reference/DataNode-Config-Manual.html",target:"_blank",rel:"noopener noreferrer"},ve=a(`<p><strong>注意:当且仅当集群拥有不少于副本个数(max{schema_replication_factor, data_replication_factor})的 DataNode 后,集群才可以提供服务</strong></p><h4 id="启动-cli" tabindex="-1"><a class="header-anchor" href="#启动-cli" aria-hidden="true">#</a> 启动 Cli</h4><p>若搭建的集群仅用于本地调试,可直接执行 ./sbin 目录下的 Cli 启动脚本:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code># Linux |
| ./sbin/start-cli.sh |
| |
| # Windows |
| .\\sbin\\start-cli.bat |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,4),me=e("br",null,null,-1),fe={href:"https://iotdb.apache.org/zh/UserGuide/Master/QuickStart/Command-Line-Interface.html",target:"_blank",rel:"noopener noreferrer"},xe=a(`<h4 id="验证集群" tabindex="-1"><a class="header-anchor" href="#验证集群" aria-hidden="true">#</a> 验证集群</h4><p>以在6台服务器上启动的3C3D(3个ConfigNode 和 3个DataNode)集群为例,<br> 这里假设3个ConfigNode的IP地址依次为192.168.1.10、192.168.1.11、192.168.1.12,且3个ConfigNode启动时均使用了默认的端口10710与10720;<br> 3个DataNode的IP地址依次为192.168.1.20、192.168.1.21、192.168.1.22,且3个DataNode启动时均使用了默认的端口6667、10730、10740、10750与10760。</p><p>当按照6.1步骤成功启动集群后,在 Cli 执行 <code>show cluster details</code>,看到的结果应当如下:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>IoTDB> show cluster details |
| +------+----------+-------+---------------+------------+-------------------+------------+-------+-------+-------------------+-----------------+ |
| |NodeID| NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort| RpcAddress|RpcPort|MppPort|SchemaConsensusPort|DataConsensusPort| |
| +------+----------+-------+---------------+------------+-------------------+------------+-------+-------+-------------------+-----------------+ |
| | 0|ConfigNode|Running| 192.168.1.10| 10710| 10720| | | | | | |
| | 2|ConfigNode|Running| 192.168.1.11| 10710| 10720| | | | | | |
| | 3|ConfigNode|Running| 192.168.1.12| 10710| 10720| | | | | | |
| | 1| DataNode|Running| 192.168.1.20| 10730| |192.168.1.20| 6667| 10740| 10750| 10760| |
| | 4| DataNode|Running| 192.168.1.21| 10730| |192.168.1.21| 6667| 10740| 10750| 10760| |
| | 5| DataNode|Running| 192.168.1.22| 10730| |192.168.1.22| 6667| 10740| 10750| 10760| |
| +------+----------+-------+---------------+------------+-------------------+------------+-------+-------+-------------------+-----------------+ |
| Total line number = 6 |
| It costs 0.012s |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>若所有节点的状态均为 <strong>Running</strong>,则说明集群部署成功;<br> 否则,请阅读启动失败节点的运行日志,并检查对应的配置参数。</p><h4 id="停止-iotdb-进程" tabindex="-1"><a class="header-anchor" href="#停止-iotdb-进程" aria-hidden="true">#</a> 停止 IoTDB 进程</h4><p>本小节描述如何手动关闭 IoTDB 的 ConfigNode 或 DataNode 进程。</p><h5 id="使用脚本停止-confignode" tabindex="-1"><a class="header-anchor" href="#使用脚本停止-confignode" aria-hidden="true">#</a> 使用脚本停止 ConfigNode</h5><p>执行停止 ConfigNode 脚本:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code># Linux |
| ./sbin/stop-confignode.sh |
| |
| # Windows |
| .\\sbin\\stop-confignode.bat |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h5 id="使用脚本停止-datanode" tabindex="-1"><a class="header-anchor" href="#使用脚本停止-datanode" aria-hidden="true">#</a> 使用脚本停止 DataNode</h5><p>执行停止 DataNode 脚本:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code># Linux |
| ./sbin/stop-datanode.sh |
| |
| # Windows |
| .\\sbin\\stop-datanode.bat |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h5 id="停止节点进程" tabindex="-1"><a class="header-anchor" href="#停止节点进程" aria-hidden="true">#</a> 停止节点进程</h5><p>首先获取节点的进程号:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>jps |
| |
| # 或 |
| |
| ps aux | grep iotdb |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>结束进程:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code>kill -9 <pid> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p><strong>注意:有些端口的信息需要 root 权限才能获取,在此情况下请使用 sudo</strong></p><h4 id="集群缩容" tabindex="-1"><a class="header-anchor" href="#集群缩容" aria-hidden="true">#</a> 集群缩容</h4><p>本小节描述如何将 ConfigNode 或 DataNode 移出集群。</p><h5 id="移除-confignode" tabindex="-1"><a class="header-anchor" href="#移除-confignode" aria-hidden="true">#</a> 移除 ConfigNode</h5><p>在移除 ConfigNode 前,请确保移除后集群至少还有一个活跃的 ConfigNode。<br> 在活跃的 ConfigNode 上执行 remove-confignode 脚本:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code># Linux |
| ## 根据 confignode_id 移除节点 |
| ./sbin/remove-confignode.sh <confignode_id> |
| |
| ## 根据 ConfigNode 内部通讯地址和端口移除节点 |
| ./sbin/remove-confignode.sh <cn_internal_address>:<cn_internal_port> |
| |
| |
| # Windows |
| ## 根据 confignode_id 移除节点 |
| .\\sbin\\remove-confignode.bat <confignode_id> |
| |
| ## 根据 ConfigNode 内部通讯地址和端口移除节点 |
| .\\sbin\\remove-confignode.bat <cn_internal_address>:<cn_internal_port> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h5 id="移除-datanode" tabindex="-1"><a class="header-anchor" href="#移除-datanode" aria-hidden="true">#</a> 移除 DataNode</h5><p>在移除 DataNode 前,请确保移除后集群至少还有不少于(数据/元数据)副本个数的 DataNode。<br> 在活跃的 DataNode 上执行 remove-datanode 脚本:</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="language-text"><code># Linux |
| ## 根据 datanode_id 移除节点 |
| ./sbin/remove-datanode.sh <datanode_id> |
| |
| ## 根据 DataNode RPC 服务地址和端口移除节点 |
| ./sbin/remove-datanode.sh <dn_rpc_address>:<dn_rpc_port> |
| |
| |
| # Windows |
| ## 根据 datanode_id 移除节点 |
| .\\sbin\\remove-datanode.bat <datanode_id> |
| |
| ## 根据 DataNode RPC 服务地址和端口移除节点 |
| .\\sbin\\remove-datanode.bat <dn_rpc_address>:<dn_rpc_port> |
| </code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="常见问题" tabindex="-1"><a class="header-anchor" href="#常见问题" aria-hidden="true">#</a> 常见问题</h3>`,28),Ne={href:"https://iotdb.apache.org/zh/UserGuide/Master/FAQ/FAQ-for-cluster-setup.html",target:"_blank",rel:"noopener noreferrer"};function Ce(De,ye){const i=o("RouterLink"),n=o("ExternalLinkIcon");return s(),l("div",null,[c(` |
| |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| `),p,b,e("p",null,[d("本文将介绍关于 IoTDB 使用的基本流程,如果需要更多信息,请浏览我们官网的 "),t(i,{to:"/zh/UserGuide/Master/IoTDB-Introduction/What-is-IoTDB.html"},{default:h(()=>[d("指引")]),_:1}),d(".")]),g,_,v,m,f,e("ul",null,[x,e("li",null,[e("p",null,[d("二进制可运行程序:请从 "),e("a",N,[d("下载"),t(n)]),d(" 页面下载最新的安装包,解压后即完成安装。")])]),e("li",null,[e("p",null,[d("使用 Docker 镜像:dockerfile 文件位于"),e("a",C,[d("github"),t(n)])])])]),D,e("table",null,[y,e("tbody",null,[k,I,T,S,B,w,P,L,R,A,e("tr",null,[e("td",null,[e("a",M,[d("datanode-env.sh"),t(n)])]),j,z]),e("tr",null,[e("td",null,[e("a",O,[d("confignode-env.sh"),t(n)])]),V,G]),W,U,E])]),H,e("ol",null,[e("li",null,[d("打开官网"),e("a",F,[d("Download Page"),t(n)]),d("。")]),J,Q]),K,e("ol",null,[e("li",null,[d("打开官网"),e("a",q,[d("Download Page"),t(n)]),d("。")]),Y,X]),Z,e("p",null,[d("如果你希望先在一台服务器上尝试部署 IoTDB 集群,请参考"),$,e("a",ee,[d("Cluster Quick Start"),t(n)]),d("。")]),de,e("p",null,[d("打开通用配置文件 ./conf/iotdb-common.properties,"),te,d(" 可根据 "),e("a",ne,[d("部署推荐"),t(n)]),ae,d(" 设置以下参数:")]),oe,e("p",null,[ie,d(" 请根据"),e("a",re,[d("部署推荐"),t(n)]),d("配置合适的通用参数,这些参数在首次配置后即不可修改。")]),se,e("p",null,[d("ConfigNode 的其它配置参数可参考"),le,e("a",ce,[d("ConfigNode 配置参数"),t(n)]),d("。")]),he,e("p",null,[d("ConfigNode 的其它配置参数可参考"),ue,e("a",pe,[d("ConfigNode配置参数"),t(n)]),d("。")]),be,e("p",null,[d("DataNode 的其它配置参数可参考"),ge,e("a",_e,[d("DataNode配置参数"),t(n)]),d("。")]),ve,e("p",null,[d("若希望通过 Cli 连接生产环境的集群,"),me,d(" 请阅读 "),e("a",fe,[d("Cli 使用手册"),t(n)]),d("。")]),xe,e("p",null,[d("请参考 "),e("a",Ne,[d("分布式部署FAQ"),t(n)])])])}const Ie=r(u,[["render",Ce],["__file","Deployment-Guide_timecho.html.vue"]]);export{Ie as default}; |