blob: 123df062b25495f656146080034a9be5f0b9cf85 [file] [log] [blame]
import{_ as s,c as n,b as a,o as i}from"./app-W3EENNaa.js";const t={};function l(o,e){return i(),n("div",null,e[0]||(e[0]=[a(`<h1 id="docker-deployment" tabindex="-1"><a class="header-anchor" href="#docker-deployment"><span>Docker Deployment</span></a></h1><h2 id="environmental-preparation" tabindex="-1"><a class="header-anchor" href="#environmental-preparation"><span>Environmental Preparation</span></a></h2><h3 id="docker-installation" tabindex="-1"><a class="header-anchor" href="#docker-installation"><span>Docker Installation</span></a></h3><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">#Taking Ubuntu as an example, other operating systems can search for installation methods themselves</span>
<span class="line">#step1: Install some necessary system tools</span>
<span class="line">sudo apt-get update</span>
<span class="line">sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common</span>
<span class="line">#step2: Install GPG certificate</span>
<span class="line">curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -</span>
<span class="line">#step3: Write software source information</span>
<span class="line">sudo add-apt-repository &quot;deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable&quot;</span>
<span class="line">#step4: Update and install Docker CE</span>
<span class="line">sudo apt-get -y update</span>
<span class="line">sudo apt-get -y install docker-ce</span>
<span class="line">#step5: Set Docker to start automatically upon startup</span>
<span class="line">sudo systemctl enable docker</span>
<span class="line">#step6: Verify if Docker installation is successful</span>
<span class="line">docker --version #Display version information, indicating successful installation</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><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 class="line-number"></div></div></div><h3 id="docker-compose-installation" tabindex="-1"><a class="header-anchor" href="#docker-compose-installation"><span>Docker-compose Installation</span></a></h3><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">#Installation command</span>
<span class="line">curl -L &quot;https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose</span>
<span class="line">chmod +x /usr/local/bin/docker-compose</span>
<span class="line">ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose</span>
<span class="line">#Verify if the installation was successful</span>
<span class="line">docker-compose --version #Displaying version information indicates successful installation</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><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><h2 id="stand-alone-deployment" tabindex="-1"><a class="header-anchor" href="#stand-alone-deployment"><span>Stand-Alone Deployment</span></a></h2><p>This section demonstrates how to deploy a standalone Docker version of 1C1D.</p><h3 id="pull-image-file" tabindex="-1"><a class="header-anchor" href="#pull-image-file"><span>Pull Image File</span></a></h3><p>The Docker image of Apache IoTDB has been uploaded tohttps://hub.docker.com/r/apache/iotdb。</p><p>Taking obtaining version 1.3.2 as an example, pull the image command:</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token function">docker</span> pull apache/iotdb:1.3.2-standalone</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>View image:</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token function">docker</span> images</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><figure><img src="https://alioss.timecho.com/docs/img/开源-拉取镜像.PNG" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><h3 id="create-docker-bridge-network" tabindex="-1"><a class="header-anchor" href="#create-docker-bridge-network"><span>Create Docker Bridge Network</span></a></h3><div class="language-Bash line-numbers-mode" data-highlighter="prismjs" data-ext="Bash" data-title="Bash"><pre><code><span class="line">docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="write-the-yml-file-for-docker-compose" tabindex="-1"><a class="header-anchor" href="#write-the-yml-file-for-docker-compose"><span>Write The Yml File For Docker-Compose</span></a></h3><p>Here we take the example of consolidating the IoTDB installation directory and yml files in the/docker iotdb folder:</p><p>The file directory structure is:<code>/docker-iotdb/iotdb</code>, <code>/docker-iotdb/docker-compose-standalone.yml </code></p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line">docker-iotdb:</span>
<span class="line">├── iotdb <span class="token comment">#Iotdb installation directory</span></span>
<span class="line">│── docker-compose-standalone.yml <span class="token comment">#YML file for standalone Docker Composer</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>The complete docker-compose-standalone.yml content is as follows:</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line">version: <span class="token string">&quot;3&quot;</span></span>
<span class="line">services:</span>
<span class="line"> iotdb-service:</span>
<span class="line"> image: apache/iotdb:1.3.2-standalone <span class="token comment">#The image used</span></span>
<span class="line"> hostname: iotdb</span>
<span class="line"> container_name: iotdb</span>
<span class="line"> restart: always </span>
<span class="line"> ports:</span>
<span class="line"> - <span class="token string">&quot;6667:6667&quot;</span></span>
<span class="line"> environment:</span>
<span class="line"> - <span class="token assign-left variable">cn_internal_address</span><span class="token operator">=</span>iotdb</span>
<span class="line"> - <span class="token assign-left variable">cn_internal_port</span><span class="token operator">=</span><span class="token number">10710</span></span>
<span class="line"> - <span class="token assign-left variable">cn_consensus_port</span><span class="token operator">=</span><span class="token number">10720</span></span>
<span class="line"> - <span class="token assign-left variable">cn_seed_config_node</span><span class="token operator">=</span>iotdb:10710</span>
<span class="line"> - <span class="token assign-left variable">dn_rpc_address</span><span class="token operator">=</span>iotdb</span>
<span class="line"> - <span class="token assign-left variable">dn_internal_address</span><span class="token operator">=</span>iotdb</span>
<span class="line"> - <span class="token assign-left variable">dn_rpc_port</span><span class="token operator">=</span><span class="token number">6667</span></span>
<span class="line"> - <span class="token assign-left variable">dn_internal_port</span><span class="token operator">=</span><span class="token number">10730</span></span>
<span class="line"> - <span class="token assign-left variable">dn_mpp_data_exchange_port</span><span class="token operator">=</span><span class="token number">10740</span></span>
<span class="line"> - <span class="token assign-left variable">dn_schema_region_consensus_port</span><span class="token operator">=</span><span class="token number">10750</span></span>
<span class="line"> - <span class="token assign-left variable">dn_data_region_consensus_port</span><span class="token operator">=</span><span class="token number">10760</span></span>
<span class="line"> - <span class="token assign-left variable">dn_seed_config_node</span><span class="token operator">=</span>iotdb:10710</span>
<span class="line"> privileged: <span class="token boolean">true</span></span>
<span class="line"> volumes:</span>
<span class="line"> - ./iotdb/data:/iotdb/data</span>
<span class="line"> - ./iotdb/logs:/iotdb/logs</span>
<span class="line"> - /dev/mem:/dev/mem:ro</span>
<span class="line"> networks:</span>
<span class="line"> iotdb:</span>
<span class="line"> ipv4_address: <span class="token number">172.18</span>.0.6</span>
<span class="line">networks:</span>
<span class="line"> iotdb:</span>
<span class="line"> external: <span class="token boolean">true</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><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 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 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="start-iotdb" tabindex="-1"><a class="header-anchor" href="#start-iotdb"><span>Start IoTDB</span></a></h3><p>Use the following command to start:</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token builtin class-name">cd</span> /docker-iotdb</span>
<span class="line"><span class="token function">docker-compose</span> <span class="token parameter variable">-f</span> docker-compose-standalone.yml up <span class="token parameter variable">-d</span> <span class="token comment">#Background startup</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="validate-deployment" tabindex="-1"><a class="header-anchor" href="#validate-deployment"><span>Validate Deployment</span></a></h3><ul><li>Viewing the log, the following words indicate successful startup</li></ul><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">docker logs -f iotdb-datanode #View log command</span>
<span class="line">2024-07-21 08:22:38,457 [main] INFO o.a.i.db.service.DataNode:227 - Congratulations, IoTDB DataNode is set up successfully. Now, enjoy yourself!</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><figure><img src="https://alioss.timecho.com/docs/img/开源-验证部署.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><ul><li>Enter the container to view the service running status and activation information</li></ul><p>View the launched container</p><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">docker ps</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><figure><img src="https://alioss.timecho.com/docs/img/开源-验证部署2.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>Enter the container, log in to the database through CLI, and use the <code>show cluster</code> command to view the service status and activation status</p><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">docker exec -it iotdb /bin/bash #Entering the container</span>
<span class="line">./start-cli.sh -h iotdb #Log in to the database</span>
<span class="line">IoTDB&gt; show cluster #View status</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>You can see that all services are running and the activation status shows as activated.</p><figure><img src="https://alioss.timecho.com/docs/img/开源-验证部署3.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><h3 id="map-conf-directory-optional" tabindex="-1"><a class="header-anchor" href="#map-conf-directory-optional"><span>Map/conf Directory (optional)</span></a></h3><p>If you want to directly modify the configuration file in the physical machine in the future, you can map the/conf folder in the container in three steps:</p><p>Step 1: Copy the /conf directory from the container to <code>/docker-iotdb/iotdb/conf</code></p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token function">docker</span> <span class="token function">cp</span> iotdb:/iotdb/conf /docker-iotdb/iotdb/conf</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>Step 2: Add mappings in docker-compose-standalone.yml</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"> volumes:</span>
<span class="line"> - ./iotdb/conf:/iotdb/conf <span class="token comment">#Add mapping for this/conf folder</span></span>
<span class="line"> - ./iotdb/data:/iotdb/data</span>
<span class="line"> - ./iotdb/logs:/iotdb/logs</span>
<span class="line"> - /dev/mem:/dev/mem:ro</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><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>Step 3: Restart IoTDB</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token function">docker-compose</span> <span class="token parameter variable">-f</span> docker-compose-standalone.yml up <span class="token parameter variable">-d</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h2 id="cluster-deployment" tabindex="-1"><a class="header-anchor" href="#cluster-deployment"><span>Cluster Deployment</span></a></h2><p>This section describes how to manually deploy an instance that includes 3 Config Nodes and 3 Data Nodes, commonly known as a 3C3D cluster.</p><div align="center"><img src="https://alioss.timecho.com/docs/img/20240705141552.png" alt="" style="width:60%;"></div><p><strong>Note: The cluster version currently only supports host and overlay networks, and does not support bridge networks.</strong></p><p>Taking the host network as an example, we will demonstrate how to deploy a 3C3D cluster.</p><h3 id="set-host-name" tabindex="-1"><a class="header-anchor" href="#set-host-name"><span>Set Host Name</span></a></h3><p>Assuming there are currently three Linux servers, the IP addresses and service role assignments are as follows:</p><table><thead><tr><th>Node IP</th><th>Host Name</th><th>Service</th></tr></thead><tbody><tr><td>192.168.1.3</td><td>iotdb-1</td><td>ConfigNode、DataNode</td></tr><tr><td>192.168.1.4</td><td>iotdb-2</td><td>ConfigNode、DataNode</td></tr><tr><td>192.168.1.5</td><td>iotdb-3</td><td>ConfigNode、DataNode</td></tr></tbody></table><p>Configure the host names on three machines separately. To set the host names, configure <code>/etc/hosts</code> on the target server using the following command:</p><div class="language-Bash line-numbers-mode" data-highlighter="prismjs" data-ext="Bash" data-title="Bash"><pre><code><span class="line">echo &quot;192.168.1.3 iotdb-1&quot; &gt;&gt; /etc/hosts</span>
<span class="line">echo &quot;192.168.1.4 iotdb-2&quot; &gt;&gt; /etc/hosts</span>
<span class="line">echo &quot;192.168.1.5 iotdb-3&quot; &gt;&gt; /etc/hosts </span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="pull-image-file-1" tabindex="-1"><a class="header-anchor" href="#pull-image-file-1"><span>Pull Image File</span></a></h3><p>The Docker image of Apache IoTDB has been uploaded tohttps://hub.docker.com/r/apache/iotdb。</p><p>Pull IoTDB images from three servers separately, taking version 1.3.2 as an example. The pull image command is:</p><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">docker pull apache/iotdb:1.3.2-standalone</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>View image:</p><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">docker images</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><figure><img src="https://alioss.timecho.com/docs/img/开源-集群版1.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><h3 id="write-the-yml-file-for-docker-compose-1" tabindex="-1"><a class="header-anchor" href="#write-the-yml-file-for-docker-compose-1"><span>Write The Yml File For Docker Compose</span></a></h3><p>Here we take the example of consolidating the IoTDB installation directory and yml files in the <code>/docker-iotdb</code> folder:</p><p>The file directory structure is :<code>/docker-iotdb/iotdb</code>, <code>/docker-iotdb/confignode.yml</code>,<code>/docker-iotdb/datanode.yml</code></p><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">docker-iotdb:</span>
<span class="line">├── confignode.yml #Yml file of confignode</span>
<span class="line">├── datanode.yml #Yml file of datanode</span>
<span class="line">└── iotdb #IoTDB installation directory</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>On each server, two yml files need to be written, namely confignnode. yml and datanode. yml. The example of yml is as follows:</p><p><strong>confignode.yml:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token comment">#confignode.yml</span></span>
<span class="line">version: <span class="token string">&quot;3&quot;</span></span>
<span class="line">services:</span>
<span class="line"> iotdb-confignode:</span>
<span class="line"> image: iotdb-enterprise:1.3.2.3-standalone <span class="token comment">#The image used</span></span>
<span class="line"> hostname: iotdb-1<span class="token operator">|</span>iotdb-2<span class="token operator">|</span>iotdb-3 <span class="token comment">#Choose from three options based on the actual situation</span></span>
<span class="line"> container_name: iotdb-confignode</span>
<span class="line"> command: <span class="token punctuation">[</span><span class="token string">&quot;bash&quot;</span>, <span class="token string">&quot;-c&quot;</span>, <span class="token string">&quot;entrypoint.sh confignode&quot;</span><span class="token punctuation">]</span></span>
<span class="line"> restart: always</span>
<span class="line"> environment:</span>
<span class="line"> - <span class="token assign-left variable">cn_internal_address</span><span class="token operator">=</span>iotdb-1<span class="token operator">|</span>iotdb-2<span class="token operator">|</span>iotdb-3 <span class="token comment">#Choose from three options based on the actual situation</span></span>
<span class="line"> - <span class="token assign-left variable">cn_internal_port</span><span class="token operator">=</span><span class="token number">10710</span></span>
<span class="line"> - <span class="token assign-left variable">cn_consensus_port</span><span class="token operator">=</span><span class="token number">10720</span></span>
<span class="line"> - <span class="token assign-left variable">cn_seed_config_node</span><span class="token operator">=</span>iotdb-1:10710 <span class="token comment">#The default first node is the seed node</span></span>
<span class="line"> - <span class="token assign-left variable">schema_replication_factor</span><span class="token operator">=</span><span class="token number">3</span> <span class="token comment">#Number of metadata copies</span></span>
<span class="line"> - <span class="token assign-left variable">data_replication_factor</span><span class="token operator">=</span><span class="token number">2</span> <span class="token comment">#Number of data replicas</span></span>
<span class="line"> privileged: <span class="token boolean">true</span></span>
<span class="line"> volumes:</span>
<span class="line"> - ./iotdb/activation:/iotdb/activation</span>
<span class="line"> - ./iotdb/data:/iotdb/data</span>
<span class="line"> - ./iotdb/logs:/iotdb/logs</span>
<span class="line"> - /usr/sbin/dmidecode:/usr/sbin/dmidecode:ro</span>
<span class="line"> - /dev/mem:/dev/mem:ro</span>
<span class="line"> network_mode: <span class="token string">&quot;host&quot;</span> <span class="token comment">#Using the host network</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><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 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>datanode.yml:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token comment">#datanode.yml</span></span>
<span class="line">version: <span class="token string">&quot;3&quot;</span></span>
<span class="line">services:</span>
<span class="line"> iotdb-datanode:</span>
<span class="line"> image: iotdb-enterprise:1.3.2.3-standalone <span class="token comment">#The image used</span></span>
<span class="line"> hostname: iotdb-1<span class="token operator">|</span>iotdb-2<span class="token operator">|</span>iotdb-3 <span class="token comment">#Choose from three options based on the actual situation</span></span>
<span class="line"> container_name: iotdb-datanode</span>
<span class="line"> command: <span class="token punctuation">[</span><span class="token string">&quot;bash&quot;</span>, <span class="token string">&quot;-c&quot;</span>, <span class="token string">&quot;entrypoint.sh datanode&quot;</span><span class="token punctuation">]</span></span>
<span class="line"> restart: always</span>
<span class="line"> ports:</span>
<span class="line"> - <span class="token string">&quot;6667:6667&quot;</span></span>
<span class="line"> privileged: <span class="token boolean">true</span></span>
<span class="line"> environment:</span>
<span class="line"> - <span class="token assign-left variable">dn_rpc_address</span><span class="token operator">=</span>iotdb-1<span class="token operator">|</span>iotdb-2<span class="token operator">|</span>iotdb-3 <span class="token comment">#Choose from three options based on the actual situation</span></span>
<span class="line"> - <span class="token assign-left variable">dn_internal_address</span><span class="token operator">=</span>iotdb-1<span class="token operator">|</span>iotdb-2<span class="token operator">|</span>iotdb-3 <span class="token comment">#Choose from three options based on the actual situation</span></span>
<span class="line"> - <span class="token assign-left variable">dn_seed_config_node</span><span class="token operator">=</span>iotdb-1:10710 <span class="token comment">#The default first node is the seed node</span></span>
<span class="line"> - <span class="token assign-left variable">dn_rpc_port</span><span class="token operator">=</span><span class="token number">6667</span></span>
<span class="line"> - <span class="token assign-left variable">dn_internal_port</span><span class="token operator">=</span><span class="token number">10730</span></span>
<span class="line"> - <span class="token assign-left variable">dn_mpp_data_exchange_port</span><span class="token operator">=</span><span class="token number">10740</span></span>
<span class="line"> - <span class="token assign-left variable">dn_schema_region_consensus_port</span><span class="token operator">=</span><span class="token number">10750</span></span>
<span class="line"> - <span class="token assign-left variable">dn_data_region_consensus_port</span><span class="token operator">=</span><span class="token number">10760</span></span>
<span class="line"> - <span class="token assign-left variable">schema_replication_factor</span><span class="token operator">=</span><span class="token number">3</span> <span class="token comment">#Number of metadata copies</span></span>
<span class="line"> - <span class="token assign-left variable">data_replication_factor</span><span class="token operator">=</span><span class="token number">2</span> <span class="token comment">#Number of data replicas</span></span>
<span class="line"> volumes:</span>
<span class="line"> - ./iotdb/activation:/iotdb/activation</span>
<span class="line"> - ./iotdb/data:/iotdb/data</span>
<span class="line"> - ./iotdb/logs:/iotdb/logs</span>
<span class="line"> - /usr/sbin/dmidecode:/usr/sbin/dmidecode:ro</span>
<span class="line"> - /dev/mem:/dev/mem:ro</span>
<span class="line"> network_mode: <span class="token string">&quot;host&quot;</span> <span class="token comment">#Using the host network</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><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 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 class="line-number"></div><div class="line-number"></div></div></div><h3 id="starting-confignode-for-the-first-time" tabindex="-1"><a class="header-anchor" href="#starting-confignode-for-the-first-time"><span>Starting Confignode For The First Time</span></a></h3><p>First, start configNodes on each of the three servers to obtain the machine code. Pay attention to the startup order, start the first iotdb-1 first, then start iotdb-2 and iotdb-3.</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token builtin class-name">cd</span> /docker-iotdb</span>
<span class="line"><span class="token function">docker-compose</span> <span class="token parameter variable">-f</span> confignode.yml up <span class="token parameter variable">-d</span> <span class="token comment">#Background startup</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="start-datanode" tabindex="-1"><a class="header-anchor" href="#start-datanode"><span>Start Datanode</span></a></h3><p>Start datanodes on 3 servers separately</p><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">cd /docker-iotdb</span>
<span class="line">docker-compose -f datanode.yml up -d #Background startup</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><figure><img src="https://alioss.timecho.com/docs/img/开源-集群版2.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><h3 id="validate-deployment-1" tabindex="-1"><a class="header-anchor" href="#validate-deployment-1"><span>Validate Deployment</span></a></h3><ul><li><p>Viewing the logs, the following words indicate that the datanode has successfully started</p><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">docker logs -f iotdb-datanode #View log command</span>
<span class="line">2024-07-21 09:40:58,120 [main] INFO o.a.i.db.service.DataNode:227 - Congratulations, IoTDB DataNode is set up successfully. Now, enjoy yourself!</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><figure><img src="https://alioss.timecho.com/docs/img/开源-集群版3.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure></li><li><p>Enter any container to view the service running status and activation information</p><p>View the launched container</p><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">docker ps</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><figure><img src="https://alioss.timecho.com/docs/img/开源-集群版4.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>Enter the container, log in to the database through CLI, and use the <code>show cluster</code> command to view the service status and activation status</p><div class="language-SQL line-numbers-mode" data-highlighter="prismjs" data-ext="SQL" data-title="SQL"><pre><code><span class="line">docker exec -it iotdb-datanode /bin/bash #Entering the container</span>
<span class="line">./start-cli.sh -h iotdb-1 #Log in to the database</span>
<span class="line">IoTDB&gt; show cluster #View status</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>You can see that all services are running and the activation status shows as activated.</p><figure><img src="https://alioss.timecho.com/docs/img/开源-集群版5.png" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure></li></ul><h3 id="map-conf-directory-optional-1" tabindex="-1"><a class="header-anchor" href="#map-conf-directory-optional-1"><span>Map/conf Directory (optional)</span></a></h3><p>If you want to directly modify the configuration file in the physical machine in the future, you can map the/conf folder in the container in three steps:</p><p>Step 1: Copy the <code>/conf</code> directory from the container to <code>/docker-iotdb/iotdb/conf</code> on each of the three servers</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token function">docker</span> <span class="token function">cp</span> iotdb-confignode:/iotdb/conf /docker-iotdb/iotdb/conf</span>
<span class="line">or</span>
<span class="line"><span class="token function">docker</span> <span class="token function">cp</span> iotdb-datanode:/iotdb/conf /docker-iotdb/iotdb/conf </span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Step 2: Add <code>/conf</code> directory mapping in <code>confignode.yml</code> and <code>datanode. yml</code> on 3 servers</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token comment">#confignode.yml</span></span>
<span class="line"> volumes:</span>
<span class="line"> - ./iotdb/conf:/iotdb/conf <span class="token comment">#Add mapping for this /conf folder</span></span>
<span class="line"> - ./iotdb/data:/iotdb/data</span>
<span class="line"> - ./iotdb/logs:/iotdb/logs</span>
<span class="line"> - /dev/mem:/dev/mem:ro</span>
<span class="line"></span>
<span class="line"><span class="token comment">#datanode.yml</span></span>
<span class="line"> volumes:</span>
<span class="line"> - ./iotdb/conf:/iotdb/conf <span class="token comment">#Add mapping for this /conf folder</span></span>
<span class="line"> - ./iotdb/data:/iotdb/data</span>
<span class="line"> - ./iotdb/logs:/iotdb/logs</span>
<span class="line"> - /dev/mem:/dev/mem:ro</span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><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>Step 3: Restart IoTDB on 3 servers</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh" data-title="sh"><pre><code><span class="line"><span class="token builtin class-name">cd</span> /docker-iotdb</span>
<span class="line"><span class="token function">docker-compose</span> <span class="token parameter variable">-f</span> confignode.yml up <span class="token parameter variable">-d</span></span>
<span class="line"><span class="token function">docker-compose</span> <span class="token parameter variable">-f</span> datanode.yml up <span class="token parameter variable">-d</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,89)]))}const r=s(t,[["render",l],["__file","Docker-Deployment_apache.html.vue"]]),c=JSON.parse('{"path":"/UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_apache.html","title":"Docker Deployment","lang":"en-US","frontmatter":{"description":"Docker Deployment Environmental Preparation Docker Installation Docker-compose Installation Stand-Alone Deployment This section demonstrates how to deploy a standalone Docker ve...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://iotdb.apache.org/zh/UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_apache.html"}],["meta",{"property":"og:url","content":"https://iotdb.apache.org/UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_apache.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:title","content":"Docker Deployment"}],["meta",{"property":"og:description","content":"Docker Deployment Environmental Preparation Docker Installation Docker-compose Installation Stand-Alone Deployment This section demonstrates how to deploy a standalone Docker ve..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://alioss.timecho.com/docs/img/%E5%BC%80%E6%BA%90-%E6%8B%89%E5%8F%96%E9%95%9C%E5%83%8F.PNG"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2024-08-21T03:21:20.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-21T03:21:20.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Docker Deployment\\",\\"image\\":[\\"https://alioss.timecho.com/docs/img/%E5%BC%80%E6%BA%90-%E6%8B%89%E5%8F%96%E9%95%9C%E5%83%8F.PNG\\",\\"https://alioss.timecho.com/docs/img/%E5%BC%80%E6%BA%90-%E9%AA%8C%E8%AF%81%E9%83%A8%E7%BD%B2.png\\",\\"https://alioss.timecho.com/docs/img/%E5%BC%80%E6%BA%90-%E9%AA%8C%E8%AF%81%E9%83%A8%E7%BD%B22.png\\",\\"https://alioss.timecho.com/docs/img/%E5%BC%80%E6%BA%90-%E9%AA%8C%E8%AF%81%E9%83%A8%E7%BD%B23.png\\",\\"https://alioss.timecho.com/docs/img/%E5%BC%80%E6%BA%90-%E9%9B%86%E7%BE%A4%E7%89%881.png\\",\\"https://alioss.timecho.com/docs/img/%E5%BC%80%E6%BA%90-%E9%9B%86%E7%BE%A4%E7%89%882.png\\",\\"https://alioss.timecho.com/docs/img/%E5%BC%80%E6%BA%90-%E9%9B%86%E7%BE%A4%E7%89%883.png\\",\\"https://alioss.timecho.com/docs/img/%E5%BC%80%E6%BA%90-%E9%9B%86%E7%BE%A4%E7%89%884.png\\",\\"https://alioss.timecho.com/docs/img/%E5%BC%80%E6%BA%90-%E9%9B%86%E7%BE%A4%E7%89%885.png\\"],\\"dateModified\\":\\"2024-08-21T03:21:20.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"Environmental Preparation","slug":"environmental-preparation","link":"#environmental-preparation","children":[{"level":3,"title":"Docker Installation","slug":"docker-installation","link":"#docker-installation","children":[]},{"level":3,"title":"Docker-compose Installation","slug":"docker-compose-installation","link":"#docker-compose-installation","children":[]}]},{"level":2,"title":"Stand-Alone Deployment","slug":"stand-alone-deployment","link":"#stand-alone-deployment","children":[{"level":3,"title":"Pull Image File","slug":"pull-image-file","link":"#pull-image-file","children":[]},{"level":3,"title":"Create Docker Bridge Network","slug":"create-docker-bridge-network","link":"#create-docker-bridge-network","children":[]},{"level":3,"title":"Write The Yml File For Docker-Compose","slug":"write-the-yml-file-for-docker-compose","link":"#write-the-yml-file-for-docker-compose","children":[]},{"level":3,"title":"Start IoTDB","slug":"start-iotdb","link":"#start-iotdb","children":[]},{"level":3,"title":"Validate Deployment","slug":"validate-deployment","link":"#validate-deployment","children":[]},{"level":3,"title":"Map/conf Directory (optional)","slug":"map-conf-directory-optional","link":"#map-conf-directory-optional","children":[]}]},{"level":2,"title":"Cluster Deployment","slug":"cluster-deployment","link":"#cluster-deployment","children":[{"level":3,"title":"Set Host Name","slug":"set-host-name","link":"#set-host-name","children":[]},{"level":3,"title":"Pull Image File","slug":"pull-image-file-1","link":"#pull-image-file-1","children":[]},{"level":3,"title":"Write The Yml File For Docker Compose","slug":"write-the-yml-file-for-docker-compose-1","link":"#write-the-yml-file-for-docker-compose-1","children":[]},{"level":3,"title":"Starting Confignode For The First Time","slug":"starting-confignode-for-the-first-time","link":"#starting-confignode-for-the-first-time","children":[]},{"level":3,"title":"Start Datanode","slug":"start-datanode","link":"#start-datanode","children":[]},{"level":3,"title":"Validate Deployment","slug":"validate-deployment-1","link":"#validate-deployment-1","children":[]},{"level":3,"title":"Map/conf Directory (optional)","slug":"map-conf-directory-optional-1","link":"#map-conf-directory-optional-1","children":[]}]}],"git":{"createdTime":1723190680000,"updatedTime":1724210480000,"contributors":[{"name":"majialin","email":"107627937+mal117@users.noreply.github.com","commits":1}]},"readingTime":{"minutes":5.71,"words":1714},"filePathRelative":"UserGuide/latest/Deployment-and-Maintenance/Docker-Deployment_apache.md","localizedDate":"August 9, 2024","autoDesc":true}');export{r as comp,c as data};