You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ca...@apache.org on 2022/12/13 11:51:35 UTC

[iotdb] branch master updated: [IOTDB-5159] Refactor the structure of Cluster Deploy DOC (#8402)

This is an automated email from the ASF dual-hosted git repository.

caogaofei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 50cc757c7e [IOTDB-5159] Refactor the structure of Cluster Deploy DOC (#8402)
50cc757c7e is described below

commit 50cc757c7ec6d80372b031f3c98694da0e1a8885
Author: YongzaoDan <33...@users.noreply.github.com>
AuthorDate: Tue Dec 13 19:51:28 2022 +0800

    [IOTDB-5159] Refactor the structure of Cluster Deploy DOC (#8402)
---
 docs/UserGuide/Cluster/Cluster-Setup.md           | 541 +++++++++++-----------
 docs/UserGuide/QuickStart/ClusterQuickStart.md    | 183 ++++++++
 docs/zh/UserGuide/Cluster/Cluster-Setup.md        | 531 ++++++++++-----------
 docs/zh/UserGuide/QuickStart/ClusterQuickStart.md | 180 +++++++
 site/src/main/.vuepress/config.js                 |   2 +
 5 files changed, 882 insertions(+), 555 deletions(-)

diff --git a/docs/UserGuide/Cluster/Cluster-Setup.md b/docs/UserGuide/Cluster/Cluster-Setup.md
index 0e741b639c..48bc041b1c 100644
--- a/docs/UserGuide/Cluster/Cluster-Setup.md
+++ b/docs/UserGuide/Cluster/Cluster-Setup.md
@@ -19,408 +19,391 @@
 
 -->
 
-## Cluster Setup
+# 1. Purpose
 
-This article is the setup process of IoTDB Cluster (1.0.0).
+This document describes how to install and start IoTDB Cluster (1.0.0).
 
-## Environments
+# 2. Prerequisites
 
 1. JDK>=1.8.
-
 2. Max open file 65535.
-
 3. Disable the swap memory.
+4. Ensure there are no data dir or the data dir is empty before the Node is started for the first time.
+5. Turn off the firewall of the server if the entire cluster is in a trusted environment.
+6. By default, IoTDB Cluster will use ports 22277, 22278 for the ConfigNode and 
+6667, 8777, 9003, 40010 and 50010 for the DataNode. 
+Please make sure those ports are not occupied, or you will modify the ports in configuration files. 
 
-## Get the binary distribution
+# 3. Get the Installation Package
 
-### Download
+You can either download the binary release files (see Chap 3.1) or compile with source code (see Chap 3.2).
 
-Download the binary distribution from website [Download Page](https://iotdb.apache.org/Download/).
+## 3.1 Download the binary distribution
 
-### Compiled from source code
+1. Open our website [Download Page](https://iotdb.apache.org/Download/).
+2. Download the binary distribution.
+3. Decompress to get the apache-iotdb-1.0.0-all-bin directory.
 
-Download the source code:
+## 3.2 Compile with source code
 
+### 3.2.1 Download the source code
+
+**Git**
 ```
 git clone https://github.com/apache/iotdb.git
+git checkout v1.0.0
 ```
 
-The default branch is master, you should checkout to the release tag:
+**Website**
+1. Open our website [Download Page](https://iotdb.apache.org/Download/).
+2. Download the source code.
+3. Decompress to get the apache-iotdb-1.0.0 directory.
 
-```
-git checkout v1.0.0
-```
+### 3.2.2 Compile source code
 
 Under the source root folder:
-
 ```
 mvn clean package -pl distribution -am -DskipTests
 ```
 
-Then you will get the binary distribution under **distribution/target**, in which the **all-bin** contains ConfigNode and DataNode, and DataNode contains the Cli.
+Then you will get the binary distribution under 
+**distribution/target/apache-iotdb-1.0.0-SNAPSHOT-all-bin/apache-iotdb-1.0.0-SNAPSHOT-all-bin**.
+
+# 4. Binary Distribution Content
+
+| **Folder**              | **Description**                                                                                   |
+|-------------------------|---------------------------------------------------------------------------------------------------|
+| conf                    | Configuration files folder, contains configuration files of ConfigNode, DataNode, JMX and logback |
+| data                    | Data files folder, contains data files of ConfigNode and DataNode                                 |
+| lib                     | Jar files folder                                                                                  |
+| licenses                | Licenses files folder                                                                             |
+| logs                    | Logs files folder, contains logs files of ConfigNode and DataNode                                 |
+| sbin                    | Shell files folder, contains start/stop/remove shell of ConfigNode and DataNode, cli shell        |
+| tools                   | System tools                                                                                      |
+
+# 5. Cluster Installation and Configuration
+
+## 5.1 Cluster Installation
+
+`apache-iotdb-1.0.0-SNAPSHOT-all-bin` contains both the ConfigNode and the DataNode. 
+Please deploy the files to all servers of your target cluster. 
+A best practice is deploying the files into the same directory in all servers.
+
+If you want to try the cluster mode on one server, please read 
+[Cluster Quick Start](https://iotdb.apache.org/UserGuide/Master/QuickStart/ClusterQuickStart.html).
+
+## 5.2 Cluster Configuration
+
+We need to modify the configurations on each server.
+Therefore, login each server and switch the working directory to `apache-iotdb-1.0.0-SNAPSHOT-all-bin`.
+The configuration files are stored in the `./conf` directory.
+
+For all ConfigNode servers, we need to modify the common configuration (see Chap 5.2.1) 
+and ConfigNode configuration (see Chap 5.2.2).
+
+For all DataNode servers, we need to modify the common configuration (see Chap 5.2.1) 
+and DataNode configuration (see Chap 5.2.3).
+
+### 5.2.1 Common configuration
+
+Open the common configuration file ./conf/iotdb-common.properties,
+and set the following parameters base on the 
+[Deployment Recommendation](https://iotdb.apache.org/UserGuide/Master/Cluster/Deployment-Recommendation.html):
+
+| **Configuration**                          | **Description**                                                                                                    | **Default**                                     |
+|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------|-------------------------------------------------|
+| config\_node\_consensus\_protocol\_class   | Consensus protocol of ConfigNode                                                                                   | org.apache.iotdb.consensus.ratis.RatisConsensus |
+| schema\_replication\_factor                | Schema replication factor, no more than DataNode number                                                            | 1                                               |
+| schema\_region\_consensus\_protocol\_class | Consensus protocol of schema replicas                                                                              | org.apache.iotdb.consensus.ratis.RatisConsensus |
+| data\_replication\_factor                  | Data replication factor, no more than DataNode number                                                              | 1                                               |
+| data\_region\_consensus\_protocol\_class   | Consensus protocol of data replicas. Note that RatisConsensus currently does not support multiple data directories | org.apache.iotdb.consensus.iot.IoTConsensus     |
+
+**Notice: The preceding configuration parameters cannot be changed after the cluster is started. Ensure that the common configurations of all Nodes are the same. Otherwise, the Nodes cannot be started.**
+
+### 5.2.2 ConfigNode configuration
+
+Open the ConfigNode configuration file ./conf/iotdb-confignode.properties,
+and set the following parameters based on the IP address and available port of the server or VM:
+
+| **Configuration**              | **Description**                                                                                                                          | **Default**     | **Usage**                                                                                                                                                                           |
+|--------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| cn\_internal\_address          | Internal rpc service address of ConfigNode                                                                                               | 127.0.0.1       | Set to the IPV4 address or domain name of the server                                                                                                                                |
+| cn\_internal\_port             | Internal rpc service port of ConfigNode                                                                                                  | 22277           | Set to any unoccupied port                                                                                                                                                          |
+| cn\_consensus\_port            | ConfigNode replication consensus protocol communication port                                                                             | 22278           | Set to any unoccupied port                                                                                                                                                          |
+| cn\_target\_config\_node\_list | ConfigNode address to which the node is connected when it is registered to the cluster. Note that Only one ConfigNode can be configured. | 127.0.0.1:22277 | For Seed-ConfigNode, set to its own cn\_internal\_address:cn\_internal\_port; For other ConfigNodes, set to other one running ConfigNode's cn\_internal\_address:cn\_internal\_port |
 
-## Binary Distribution Content
+**Notice: The preceding configuration parameters cannot be changed after the node is started. Ensure that all ports are not occupied. Otherwise, the Node cannot be started.**
 
-| **Folder**              | **Description**                                                                            |
-|-------------------------|--------------------------------------------------------------------------------------------|
-| conf                    | Configuration files folder, contains configuration files of ConfigNode and DataNode        |
-| data                    | Data files folder, contains data files of ConfigNode and DataNode                          |       |
-| lib                     | Jar files folder                                                                           |
-| licenses                | Licenses files folder                                                                      |
-| logs                    | Logs files folder, contains logs files of ConfigNode and DataNode                          |
-| sbin                    | Shell files folder, contains start/stop/remove shell of ConfigNode and DataNode, cli shell |
-| tools                   | System tools                                                                               |
+### 5.2.3 DataNode configuration
 
-## Start the Cluster
+Open the DataNode configuration file ./conf/iotdb-datanode.properties,
+and set the following parameters based on the IP address and available port of the server or VM:
 
-Users could start a cluster which contains multiple ConfigNode and DataNode.
-A cluster need at least one ConfigNode and no less than the number of data/schema_replication_factor DataNodes.
+| **Configuration**                   | **Description**                                  | **Default**     | **Usage**                                                                                                                             |
+|-------------------------------------|--------------------------------------------------|-----------------|---------------------------------------------------------------------------------------------------------------------------------------|
+| dn\_rpc\_address                    | Client RPC Service address                       | 127.0.0.1       | Set to the IPV4 address or domain name of the server                                                                                  |
+| dn\_rpc\_port                       | Client RPC Service port                          | 6667            | Set to any unoccupied port                                                                                                            |
+| dn\_internal\_address               | Control flow address of DataNode inside cluster  | 127.0.0.1       | Set to the IPV4 address or domain name of the server                                                                                  |
+| dn\_internal\_port                  | Control flow port of DataNode inside cluster     | 9003            | Set to any unoccupied port                                                                                                            |
+| dn\_mpp\_data\_exchange\_port       | Data flow port of DataNode inside cluster        | 8777            | Set to any unoccupied port                                                                                                            |
+| dn\_data\_region\_consensus\_port   | Data replicas communication port for consensus   | 50010           | Set to any unoccupied port                                                                                                            |
+| dn\_schema\_region\_consensus\_port | Schema replicas communication port for consensus | 40010           | Set to any unoccupied port                                                                                                            |
+| dn\_target\_config\_node\_list      | Running ConfigNode of the Cluster                | 127.0.0.1:22277 | Set to any running ConfigNode's cn\_internal\_address:cn\_internal\_port. You can set multiple values, separate them with commas(",") |
+
+**Notice: The preceding configuration parameters cannot be changed after the node is started. Ensure that all ports are not occupied. Otherwise, the Node cannot be started.**
+
+# 6. Cluster Operation
+
+## 6.1 Starting the cluster
+
+This section describes how to start a cluster that includes several ConfigNodes and DataNodes.
+The cluster can provide services only by starting at least one ConfigNode
+and no less than the number of data/schema_replication_factor DataNodes.
 
 The total process are three steps:
 
-* Start the first ConfigNode
+* Start the Seed-ConfigNode
 * Add ConfigNode (Optional)
 * Add DataNode
 
-### Start the first ConfigNode
+### 6.1.1 Start the Seed-ConfigNode
 
-Please set the important parameters in conf/iotdb-confignode.properties and conf/iotdb-common.properties:
+**The first Node started in the cluster must be ConfigNode. The first started ConfigNode must follow the tutorial in this section.**
 
-iotdb-confignode.properties:
+The first ConfigNode to start is the Seed-ConfigNode, which marks the creation of the new cluster.
+Before start the Seed-ConfigNode, please open its configuration file ./conf/iotdb-confignode.properties and check the following parameters:
 
-| **Configuration**              | **Description**                                                                              |
-|--------------------------------|----------------------------------------------------------------------------------------------|
-| cn\_internal\_address          | Internal rpc service address of ConfigNode                                                   |
-| cn\_internal\_port             | Internal rpc service port of ConfigNode                                                      |
-| cn\_consensus\_port            | ConfigNode replication consensus protocol communication port                                 |
-| cn\_target\_config\_node\_list | Target ConfigNode address, if the current ConfigNode is the first one, then set its own address:port |
+| **Configuration**              | **Check**                                                                                           |
+|--------------------------------|-----------------------------------------------------------------------------------------------------|
+| cn\_internal\_address          | Is set to the IPV4 address or domain name of the server                                             |
+| cn\_internal\_port             | The port isn't occupied                                                                             |
+| cn\_consensus\_port            | The port isn't occupied                                                                             |
+| cn\_target\_config\_node\_list | Is set to its own internal communication address, which is cn\_internal\_address:cn\_internal\_port |
 
-iotdb-common.properties:
+After checking, you can run the startup script on the server:
 
-| **Configuration**                          | **Description**                                                                                                    |
-|--------------------------------------------|--------------------------------------------------------------------------------------------------------------------|
-| data\_replication\_factor                  | Data replication factor, no more than DataNode number                                                              |
-| data\_region\_consensus\_protocol\_class   | Consensus protocol of data replicas. Note that RatisConsensus currently does not support multiple data directories |
-| schema\_replication\_factor                | Schema replication factor, no more than DataNode number                                                            |
-| schema\_region\_consensus\_protocol\_class | Consensus protocol of schema replicas                                                                              |
-
-Start on Linux:
 ```
-# Foreground
+# Linux foreground
 bash ./sbin/start-confignode.sh
 
-# Background
+# Linux background
 nohup bash ./sbin/start-confignode.sh >/dev/null 2>&1 &
-```
 
-Start on Windows:
-```
-sbin\start-confignode.bat
+# Windows
+.\sbin\start-confignode.bat
 ```
 
-More details  [ConfigNode Configurations](https://iotdb.apache.org/UserGuide/Master/Reference/ConfigNode-Config-Manual.html).
+For more details about other configuration parameters of ConfigNode, see the
+[ConfigNode Configurations](https://iotdb.apache.org/UserGuide/Master/Reference/ConfigNode-Config-Manual.html).
 
-### Add ConfigNode (Optional)
+### 6.1.2 Add more ConfigNodes (Optional)
 
-This will add the replication factor of ConfigNode, except for the ports that couldn't conflict with, make sure other configurations are the same with existing ConfigNode in Cluster, and set parameter cn\_target\_config\_nodes\_list as an active ConfigNode in Cluster.
+**The ConfigNode who isn't the first one started must follow the tutorial in this section.**
 
-The adding ConfigNode also use the start-confignode.sh/bat.
+You can add more ConfigNodes to the cluster to ensure high availability of ConfigNodes.
+A common configuration is to add extra two ConfigNodes to make the cluster has three ConfigNodes.
 
-### Start DataNode
+Ensure that all configuration parameters in the ./conf/iotdb-common.properites are the same as those in the Seed-ConfigNode; 
+otherwise, it may fail to start or generate runtime errors.
 
-You could add any number of DataNode.
+Before start the new ConfigNode, please open its configuration file ./conf/iotdb-confignode.properties and check the following parameters:
 
-Please set the important parameters in iotdb-datanode.properties:
+| **Configuration**              | **Check**                                                                                                                                              |
+|--------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------|
+| cn\_internal\_address          | Is set to the IPV4 address or domain name of the server                                                                                                |
+| cn\_internal\_port             | The port isn't occupied                                                                                                                                |
+| cn\_consensus\_port            | The port isn't occupied                                                                                                                                |
+| cn\_target\_config\_node\_list | Is set to the internal communication address of an other running ConfigNode. The internal communication address of the seed ConfigNode is recommended. |
 
-| **Configuration**                   | **Description**                                  |
-|-------------------------------------|--------------------------------------------------|
-| dn\_rpc\_address                    | Client RPC Service address                       |
-| dn\_rpc\_port                       | Client RPC Service port                          |
-| dn\_internal\_address               | Control flow address of DataNode inside cluster  |
-| dn\_internal\_port                  | Control flow port of DataNode inside cluster     |
-| dn\_mpp\_data\_exchange\_port       | Data flow port of DataNode inside cluster        |
-| dn\_data\_region\_consensus\_port   | Data replicas communication port for consensus   |
-| dn\_schema\_region\_consensus\_port | Schema replicas communication port for consensus |
-| dn\_target\_config\_node\_list      | Running ConfigNode of the Cluster                |
+After checking, you can run the startup script on the server:
 
-Start on Linux:
 ```
-# Foreground
-bash ./sbin/start-datanode.sh
+# Linux foreground
+bash ./sbin/start-confignode.sh
 
-# Background
-nohup bash ./sbin/start-datanode.sh >/dev/null 2>&1 &
-```
+# Linux background
+nohup bash ./sbin/start-confignode.sh >/dev/null 2>&1 &
 
-Start on Windows:
-```
-sbin\start-datanode.bat
+# Windows
+.\sbin\start-confignode.bat
 ```
 
-More details are in [DataNode Configurations](https://iotdb.apache.org/UserGuide/Master/Reference/DataNode-Config-Manual.html).
+For more details about other configuration parameters of ConfigNode, see the
+[ConfigNode Configurations](https://iotdb.apache.org/UserGuide/Master/Reference/ConfigNode-Config-Manual.html).
 
-### Stop IoTDB
-When you meet problem, and want to stop IoTDB ConfigNode and DataNode directly, our shells can help you do this.
+### 6.1.3 Start DataNode
 
-In Windows:
+**Before adding DataNodes, ensure that there exists at least one ConfigNode is running in the cluster.**
 
-```
-sbin\stop-datanode.bat
-```
-```
-sbin\stop-confignode.bat
-```
-In Linux:
-```
-bash sbin/stop-datanode.sh
-```
-```
-bash sbin/stop-confignode.sh
-```
-Be careful not to miss the "sudo" label, because some port info's acquisition may require root authority. If you can't sudo, just
-use "jps" or "ps aux | grep iotdb" to get the process's id, then use "kill -9 <process-id>" to stop the process.  
+You can add any number of DataNodes to the cluster.
+Before adding a new DataNode, please
+open its configuration file ./conf/iotdb-datanode.properties and check the following parameters:
 
-## Start StandAlone
-If you just want to setup your IoTDB locally, 
-You can quickly init 1C1D (i.e. 1 Confignode and 1 Datanode) environment by our shells.
+| **Configuration**                   | **Check**                                                                                                                                            |
+|-------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|
+| dn\_rpc\_address                    | Is set to the IPV4 address or domain name of the server                                                                                              |
+| dn\_rpc\_port                       | The port isn't occupied                                                                                                                              |
+| dn\_internal\_address               | Is set to the IPV4 address or domain name of the server                                                                                              |
+| dn\_internal\_port                  | The port isn't occupied                                                                                                                              |
+| dn\_mpp\_data\_exchange\_port       | The port isn't occupied                                                                                                                              |
+| dn\_data\_region\_consensus\_port   | The port isn't occupied                                                                                                                              |
+| dn\_schema\_region\_consensus\_port | The port isn't occupied                                                                                                                              |
+| dn\_target\_config\_node\_list      | Is set to the internal communication address of other running ConfigNodes. The internal communication address of the seed ConfigNode is recommended. |
 
-This will work well if you don't change our default settings.
+After checking, you can run the startup script on the server:
 
-Start on Windows:
-```
-sbin\start-standalone.bat
-```
-Start on Linux:
-```
-bash sbin/start-standalone.sh
 ```
+# Linux foreground
+bash ./sbin/start-datanode.sh
 
-Besides, with our shell, you can also directly kill these processes.
+# Linux background
+nohup bash ./sbin/start-datanode.sh >/dev/null 2>&1 &
 
-Stop on Windows:
-```
-sbin\stop-standalone.bat
-```
-Stop on Linux:
-```
-bash sbin/stop-standalone.sh
+# Windows
+.\sbin\start-datanode.bat
 ```
 
-Note: On Linux, the 1C1D processes both launches in the background, and you can see the logs for details. 
+For more details about other configuration parameters of DataNode, see the
+[DataNode Configurations](https://iotdb.apache.org/UserGuide/Master/Reference/DataNode-Config-Manual.html).
 
-The stop-standalone.sh may not work well without sudo, since IoTDB's port numbers may be invisible without permission. 
-If stop-standalone.sh meets some error, you can use "jps" or "ps aux | grep iotdb" to obtain the process ids,
-and use "sudo kill -9 <process-id>" to manually stop the processes.
+**Notice: The cluster can provide services only if the number of its DataNodes is no less than the number of replicas(max{schema\_replication\_factor, data\_replication\_factor}).**
 
-## Start Cli
+## 6.2 Start Cli
 
-Cli shell is in sbin folder.
+If the cluster is in local environment, you can directly run the Cli startup script in the ./sbin directory:
 
-Start on Linux:
-```
-./datanode/sbin/start-cli.sh
 ```
+# Linux
+./sbin/start-cli.sh
 
-Start on Windows:
-```
-datanode\sbin\start-cli.bat
+# Windows
+.\sbin\start-cli.bat
 ```
 
-## Shrink the Cluster
+If you want to use the Cli to connect to a cluster in the production environment,
+Please read the [Cli manual](https://iotdb.apache.org/UserGuide/Master/QuickStart/Command-Line-Interface.html).
 
-### Remove ConfigNode
+## 6.3 Verify Cluster
 
-Execute the remove-confignode shell on an active ConfigNode, and make sure that there is at least one active ConfigNode in Cluster after removing.
+Use a 3C3D(3 ConfigNodes and 3 DataNodes) as an example.
+Run the `show cluster details` command on the Cli, You will see the following results:
 
-Remove on Linux:
 ```
-# Remove the ConfigNode with confignode_id
-./confignode/sbin/remove-confignode.sh <confignode_id>
-
-# Remove the ConfigNode with address:port
-./confignode/sbin/remove-confignode.sh <internal_address>:<internal_port>
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|DataConsensusPort|SchemaConsensusPort|MppPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|     0|ConfigNode|Running|      127.0.0.1|       22277|              22278|          |       |                 |                   |       |
+|     2|ConfigNode|Running|      127.0.0.1|       22279|              22280|          |       |                 |                   |       |
+|     3|ConfigNode|Running|      127.0.0.1|       22281|              22282|          |       |                 |                   |       |
+|     1|  DataNode|Running|      127.0.0.1|        9003|                   | 127.0.0.1|   6667|            40010|              50010|   8777|
+|     4|  DataNode|Running|      127.0.0.1|        9004|                   | 127.0.0.1|   6668|            40011|              50011|   8778|
+|     5|  DataNode|Running|      127.0.0.1|        9005|                   | 127.0.0.1|   6669|            40012|              50012|   8779|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+Total line number = 6
+It costs 0.012s
 ```
 
-Remove on Windows:
-```
-# Remove the ConfigNode with confignode_id
-confignode\sbin\remove-confignode.bat <confignode_id>
+If the status of all Nodes is **Running**, the cluster deployment is successful.
+Otherwise, read the run logs of the Node that fails to start and 
+check the corresponding configuration parameters.
 
-# Remove the ConfigNode with address:port
-confignode\sbin\remove-confignode.bat <internal_address>:<internal_port>
-```
+## 6.4 Stop IoTDB
 
-### Remove DataNode
+This section describes how to manually shut down the ConfigNode or DataNode process of the IoTDB.
 
-Execute the remove-datanode shell on an active DataNode, and make sure that the number of active DataNodes are no less than the number of data/schema_replication_factor in Cluster after removing.
+### 6.4.1 Stop ConfigNode by script
 
-Remove on Linux:
-```
-# Remove the DataNode with datanode_id
-bash ./datanode/sbin/remove-datanode.sh <datanode_id>
+Run the stop ConfigNode script:
 
-# Remove the DataNode with rpc address:port
-bash ./datanode/sbin/remove-datanode.sh <rpc_address>:<rpc_port>
 ```
+# Linux
+./sbin/stop-confignode.sh
 
-Remove on Windows:
+# Windows
+.\sbin\stop-confignode.bat
 ```
-# Remove the DataNode with datanode_id
-datanode\sbin\remove-datanode.bat <datanode_id>
 
-# Remove the DataNode with rpc address:port
-datanode\sbin\remove-datanode.bat <rpc_address>:<rpc_port>
-```
+### 6.4.2 Stop DataNode by script
 
-## Quick Start
+Run the stop DataNode script:
 
-This section uses a local environment as an example to 
-illustrate how to start, expand, and shrink a IoTDB Cluster.
+```
+# Linux
+./sbin/stop-datanode.sh
 
-### 1. Prepare the Start Environment
+# Windows
+.\sbin\stop-datanode.bat
+```
 
-Unzip the apache-iotdb-1.0.0-all-bin.zip file to cluster0 folder.
+### 6.4.3 Kill Node process
 
-### 2. Start a Minimum Cluster
+Get the process number of the Node:
 
-Start the Cluster version with one ConfigNode and one DataNode(1C1D), and
-the default number of replicas is one.
-```
-./cluster0/sbin/start-confignode.sh
-./cluster0/sbin/start-datanode.sh
 ```
+jps
 
-### 3. Verify the Minimum Cluster
+# or
 
-+ If everything goes well, the minimum cluster will start successfully. Then, we can start the Cli for verification.
-```
-./cluster0/sbin/start-cli.sh
+ps aux | grep iotdb
 ```
 
-+ Execute the [show cluster](https://iotdb.apache.org/UserGuide/Master/Maintenance-Tools/Maintenance-Command.html#show-all-node-information)
-  command on the Cli. The result is shown below:
+Kill the process:
+
 ```
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+
-|NodeID|  NodeType| Status|InternalAddress|InternalPort|
-+------+----------+-------+---------------+------------+
-|     0|ConfigNode|Running|      127.0.0.1|       22277|
-|     1|  DataNode|Running|      127.0.0.1|        9003|
-+------+----------+-------+---------------+------------+
-Total line number = 2
-It costs 0.160s
+kill -9 <pid>
 ```
 
-### 4. Prepare the Expanding Environment
-
-Unzip the apache-iotdb-1.0.0-all-bin.zip file to cluster1 and cluster2 folder.
-
-### 5. Modify the Node Configuration file
-
-For folder cluster1:
+**Notice Some ports require root access, in which case use sudo**
 
-+ Modify ConfigNode configurations:
+## 6.5 Shrink the Cluster
 
-| **configuration item**         | **value**       |
-|--------------------------------|-----------------|
-| cn\_internal\_address          | 127.0.0.1       |
-| cn\_internal\_port             | 22279           |
-| cn\_consensus\_port            | 22280           |
-| cn\_target\_config\_node\_list | 127.0.0.1:22277 |
+This section describes how to remove ConfigNode or DataNode from the cluster.
 
-+ Modify DataNode configurations:
+### 6.5.1 Remove ConfigNode
 
-| **configuration item**              | **value**       |
-|-------------------------------------|-----------------|
-| dn\_rpc\_address                    | 127.0.0.1       |
-| dn\_rpc\_port                       | 6668            |
-| dn\_internal\_address               | 127.0.0.1       |
-| dn\_internal\_port                  | 9004            |
-| dn\_mpp\_data\_exchange\_port       | 8778            |
-| dn\_data\_region\_consensus\_port   | 40011           |
-| dn\_schema\_region\_consensus\_port | 50011           |
-| dn\_target\_config\_node\_list      | 127.0.0.1:22277 |
+Before removing a ConfigNode, ensure that there is at least one active ConfigNode in the cluster after the removal.
+Run the remove-confignode script on an active ConfigNode:
 
-For folder cluster2:
+```
+# Linux
+# Remove the ConfigNode with confignode_id
+./sbin/remove-confignode.sh <confignode_id>
 
-+ Modify ConfigNode configurations:
+# Remove the ConfigNode with address:port
+./sbin/remove-confignode.sh <cn_internal_address>:<cn_internal_port>
 
-| **configuration item**         | **value**       |
-|--------------------------------|-----------------|
-| cn\_internal\_address          | 127.0.0.1       |
-| cn\_internal\_port             | 22281           |
-| cn\_consensus\_port            | 22282           |
-| cn\_target\_config\_node\_list | 127.0.0.1:22277 |
 
-+ Modify DataNode configurations:
+# Windows
+# Remove the ConfigNode with confignode_id
+.\sbin\remove-confignode.bat <confignode_id>
 
-| **configuration item**              | **value**       |
-|-------------------------------------|-----------------|
-| dn\_rpc\_address                    | 127.0.0.1       |
-| dn\_rpc\_port                       | 6669            |
-| dn\_internal\_address               | 127.0.0.1       |
-| dn\_internal\_port                  | 9005            |
-| dn\_mpp\_data\_exchange\_port       | 8779            |
-| dn\_data\_region\_consensus\_port   | 40012           |
-| dn\_schema\_region\_consensus\_port | 50012           |
-| dn\_target\_config\_node\_list      | 127.0.0.1:22277 |
+# Remove the ConfigNode with address:port
+.\sbin\remove-confignode.bat <cn_internal_address>:<cn_internal_portcn_internal_port>
+```
 
-### 6. Expanding the Cluster
+### 6.5.2 Remove DataNode
 
-Expanding the Cluster to three ConfigNode and three DataNode(3C3D).
-The following commands can be executed in arbitrary order.
+Before removing a DataNode, ensure that the cluster has at least the number of data/schema replicas DataNodes.
+Run the remove-datanode script on an active DataNode:
 
 ```
-./cluster1/sbin/start-confignode.sh
-./cluster1/sbin/start-datanode.sh
-./cluster2/sbin/start-confignode.sh
-./cluster2/sbin/start-datanode.sh
-```
-
-### 7. Verify Cluster expansion
+# Linux
+# Remove the DataNode with datanode_id
+./sbin/remove-datanode.sh <datanode_id>
 
-Execute the show cluster command, then the result is shown below:
-```
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+
-|NodeID|  NodeType| Status|InternalAddress|InternalPort|
-+------+----------+-------+---------------+------------+
-|     0|ConfigNode|Running|      127.0.0.1|       22277|
-|     2|ConfigNode|Running|      127.0.0.1|       22279|
-|     3|ConfigNode|Running|      127.0.0.1|       22281|
-|     1|  DataNode|Running|      127.0.0.1|        9003|
-|     4|  DataNode|Running|      127.0.0.1|        9004|
-|     5|  DataNode|Running|      127.0.0.1|        9005|
-+------+----------+-------+---------------+------------+
-Total line number = 6
-It costs 0.012s
-```
+# Remove the DataNode with rpc address:port
+./sbin/remove-datanode.sh <dn_rpc_address>:<dn_rpc_port>
 
-### 8. Shrinking the Cluster
 
-+ Remove a ConfigNode:
-```
-./cluster0/sbin/remove-confignode.sh 127.0.0.1:22279
-```
+# Windows
+# Remove the DataNode with datanode_id
+.\sbin\remove-datanode.bat <datanode_id>
 
-+ Remove a DataNode:
-```
-./cluster0/sbin/remove-datanode.sh 127.0.0.1:6668
+# Remove the DataNode with rpc address:port
+.\sbin\remove-datanode.bat <dn_rpc_address>:<dn_rpc_port>
 ```
 
-### 9. Verify Cluster shrinkage
+# 7. FAQ
 
-Execute the show cluster command, then the result is shown below:
-```
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+
-|NodeID|  NodeType| Status|InternalAddress|InternalPort|
-+------+----------+-------+---------------+------------+
-|     0|ConfigNode|Running|      127.0.0.1|       22277|
-|     3|ConfigNode|Running|      127.0.0.1|       22281|
-|     1|  DataNode|Running|      127.0.0.1|        9003|
-|     5|  DataNode|Running|      127.0.0.1|        9005|
-+------+----------+-------+---------------+------------+
-Total line number = 4
-It costs 0.007s
-```
+See [FAQ](https://iotdb.apache.org/UserGuide/Master/FAQ/Frequently-asked-questions.html)
diff --git a/docs/UserGuide/QuickStart/ClusterQuickStart.md b/docs/UserGuide/QuickStart/ClusterQuickStart.md
new file mode 100644
index 0000000000..53902e43ed
--- /dev/null
+++ b/docs/UserGuide/QuickStart/ClusterQuickStart.md
@@ -0,0 +1,183 @@
+<!--
+
+    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.
+
+-->
+
+## Quick Start
+
+This article uses a local environment as an example to
+illustrate how to start, expand, and shrink an IoTDB Cluster.
+
+**Notice: This document is a tutorial for deploying in a pseudo-cluster environment using different local ports, and is for exercise only. In real deployment scenarios, you only need to configure the IPV4 address or domain name of the server, and do not need to change the Node ports.**
+
+### 1. Prepare the Start Environment
+
+Unzip the apache-iotdb-1.0.0-all-bin.zip file to cluster0 folder.
+
+### 2. Start a Minimum Cluster
+
+Start the Cluster version with one ConfigNode and one DataNode(1C1D), and
+the default number of replicas is one.
+```
+./cluster0/sbin/start-confignode.sh
+./cluster0/sbin/start-datanode.sh
+```
+
+### 3. Verify the Minimum Cluster
+
++ If everything goes well, the minimum cluster will start successfully. Then, we can start the Cli for verification.
+```
+./cluster0/sbin/start-cli.sh
+```
+
++ Execute the [show cluster details](https://iotdb.apache.org/UserGuide/Master/Maintenance-Tools/Maintenance-Command.html#show-all-node-information)
+  command on the Cli. The result is shown below:
+```
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|DataConsensusPort|SchemaConsensusPort|MppPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|     0|ConfigNode|Running|      127.0.0.1|       22277|              22278|          |       |                 |                   |       |
+|     1|  DataNode|Running|      127.0.0.1|        9003|                   | 127.0.0.1|   6667|            40010|              50010|   8777|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+Total line number = 2
+It costs 0.242s
+```
+
+### 4. Prepare the Expanding Environment
+
+Unzip the apache-iotdb-1.0.0-all-bin.zip file to cluster1 and cluster2 folder.
+
+### 5. Modify the Node Configuration file
+
+For folder cluster1:
+
++ Modify ConfigNode configurations:
+
+| **configuration item**         | **value**       |
+|--------------------------------|-----------------|
+| cn\_internal\_address          | 127.0.0.1       |
+| cn\_internal\_port             | 22279           |
+| cn\_consensus\_port            | 22280           |
+| cn\_target\_config\_node\_list | 127.0.0.1:22277 |
+
++ Modify DataNode configurations:
+
+| **configuration item**              | **value**       |
+|-------------------------------------|-----------------|
+| dn\_rpc\_address                    | 127.0.0.1       |
+| dn\_rpc\_port                       | 6668            |
+| dn\_internal\_address               | 127.0.0.1       |
+| dn\_internal\_port                  | 9004            |
+| dn\_mpp\_data\_exchange\_port       | 8778            |
+| dn\_data\_region\_consensus\_port   | 40011           |
+| dn\_schema\_region\_consensus\_port | 50011           |
+| dn\_target\_config\_node\_list      | 127.0.0.1:22277 |
+
+For folder cluster2:
+
++ Modify ConfigNode configurations:
+
+| **configuration item**         | **value**       |
+|--------------------------------|-----------------|
+| cn\_internal\_address          | 127.0.0.1       |
+| cn\_internal\_port             | 22281           |
+| cn\_consensus\_port            | 22282           |
+| cn\_target\_config\_node\_list | 127.0.0.1:22277 |
+
++ Modify DataNode configurations:
+
+| **configuration item**              | **value**       |
+|-------------------------------------|-----------------|
+| dn\_rpc\_address                    | 127.0.0.1       |
+| dn\_rpc\_port                       | 6669            |
+| dn\_internal\_address               | 127.0.0.1       |
+| dn\_internal\_port                  | 9005            |
+| dn\_mpp\_data\_exchange\_port       | 8779            |
+| dn\_data\_region\_consensus\_port   | 40012           |
+| dn\_schema\_region\_consensus\_port | 50012           |
+| dn\_target\_config\_node\_list      | 127.0.0.1:22277 |
+
+### 6. Expanding the Cluster
+
+Expanding the Cluster to three ConfigNode and three DataNode(3C3D).
+The following commands can be executed in arbitrary order.
+
+```
+./cluster1/sbin/start-confignode.sh
+./cluster1/sbin/start-datanode.sh
+./cluster2/sbin/start-confignode.sh
+./cluster2/sbin/start-datanode.sh
+```
+
+### 7. Verify Cluster expansion
+
+Execute the `show cluster details` command, then the result is shown below:
+```
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|DataConsensusPort|SchemaConsensusPort|MppPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|     0|ConfigNode|Running|      127.0.0.1|       22277|              22278|          |       |                 |                   |       |
+|     2|ConfigNode|Running|      127.0.0.1|       22279|              22280|          |       |                 |                   |       |
+|     3|ConfigNode|Running|      127.0.0.1|       22281|              22282|          |       |                 |                   |       |
+|     1|  DataNode|Running|      127.0.0.1|        9003|                   | 127.0.0.1|   6667|            40010|              50010|   8777|
+|     4|  DataNode|Running|      127.0.0.1|        9004|                   | 127.0.0.1|   6668|            40011|              50011|   8778|
+|     5|  DataNode|Running|      127.0.0.1|        9005|                   | 127.0.0.1|   6669|            40012|              50012|   8779|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+Total line number = 6
+It costs 0.012s
+```
+
+### 8. Shrinking the Cluster
+
++ Remove a ConfigNode:
+```
+# Removing by ip:port
+./cluster0/sbin/remove-confignode.sh 127.0.0.1:22279
+
+# Removing by Node index
+./cluster0/sbin/remove-confignode.sh 2
+```
+
++ Remove a DataNode:
+```
+# Removing by ip:port
+./cluster0/sbin/remove-datanode.sh 127.0.0.1:6668
+
+# Removing by Node index
+./cluster0/sbin/remove-confignode.sh 4
+```
+
+### 9. Verify Cluster shrinkage
+
+Execute the `show cluster details` command, then the result is shown below:
+```
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|DataConsensusPort|SchemaConsensusPort|MppPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|     0|ConfigNode|Running|      127.0.0.1|       22277|              22278|          |       |                 |                   |       |
+|     3|ConfigNode|Running|      127.0.0.1|       22281|              22282|          |       |                 |                   |       |
+|     1|  DataNode|Running|      127.0.0.1|        9003|                   | 127.0.0.1|   6667|            40010|              50010|   8777|
+|     5|  DataNode|Running|      127.0.0.1|        9005|                   | 127.0.0.1|   6669|            40012|              50012|   8779|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+Total line number = 4
+It costs 0.005s
+```
\ No newline at end of file
diff --git a/docs/zh/UserGuide/Cluster/Cluster-Setup.md b/docs/zh/UserGuide/Cluster/Cluster-Setup.md
index 461c28cd77..ab4729acf5 100644
--- a/docs/zh/UserGuide/Cluster/Cluster-Setup.md
+++ b/docs/zh/UserGuide/Cluster/Cluster-Setup.md
@@ -19,404 +19,383 @@
 
 -->
 
-## 集群设置
+# 1. 目标
 
-本文档为 IoTDB 集群版(1.0.0)启动教程。
+本文档为 IoTDB 集群版(1.0.0)的安装及启动教程。
 
-## 安装环境
+# 2. 前置检查
 
 1. JDK>=1.8 的运行环境,并配置好 JAVA_HOME 环境变量。
-
 2. 设置最大文件打开数为 65535。
-
 3. 关闭交换内存。
+4. 第一次启动节点时,确保该节点不存在 data 目录或 data 目录为空。
+5. 如果整个集群处在可信环境下,可以关闭机器上的防火墙选项。
+6. 在集群默认配置中,ConfigNode 会占用端口 22277 和 22278,DataNode 会占用端口 6667、8777、9003、40010 和 50010,
+请确保这些端口未被占用,或者手动修改配置文件中的端口配置。
 
-## 安装包获取
-
-### 下载
+# 3. 安装包获取
 
-可以直接在官网下载二进制版本 [Download Page](https://iotdb.apache.org/Download/)。
+你可以选择下载二进制文件(见 3.1)或从源代码编译(见 3.2)。
 
-### 源码编译
+## 3.1 下载二进制文件
 
-下载源码:
+1. 打开官网[Download Page](https://iotdb.apache.org/Download/)。
+2. 下载 IoTDB 1.0.0 版本的二进制文件。
+3. 解压得到 apache-iotdb-1.0.0-all-bin 目录。
 
-```
-git clone https://github.com/apache/iotdb.git
-```
+## 3.2 使用源码编译
 
-默认分支为 master 分支,你可以切换到发布版本的 tag,例如:
+### 3.2.1 下载源码
 
+**Git**
 ```
+git clone https://github.com/apache/iotdb.git
 git checkout v1.0.0
 ```
 
-在 IoTDB 根目录下:
+**官网下载**
+1. 打开官网[Download Page](https://iotdb.apache.org/Download/)。
+2. 下载 IoTDB 1.0.0 版本的源码。
+3. 解压得到 apache-iotdb-1.0.0 目录。
+
+### 3.2.2 编译源码
 
+在 IoTDB 源码根目录下:
 ```
 mvn clean package -pl distribution -am -DskipTests
 ```
 
-集群的二进制版本在目录 **distribution/target** 下,其中,all-bin 包含 ConfigNode 和 DataNode,DataNode 内包含 Cli。
+编译成功后,可在目录 
+**distribution/target/apache-iotdb-1.0.0-SNAPSHOT-all-bin/apache-iotdb-1.0.0-SNAPSHOT-all-bin** 
+找到集群版本的二进制文件。
 
-## 安装包说明
+# 4. 安装包说明
 
-| **目录**                  | **说明**                                               |
-|-------------------------|------------------------------------------------------|
-| conf                    | 配置文件目录,包含 ConfigNode 和 DataNode 的配置文件                |
-| data                    | 数据文件目录,包含 ConfigNode 和 DataNode 的数据文件                |
-| lib                     | 库文件目录                                                |
-| licenses                | 证书文件目录                                               |
-| logs                    | 日志文件目录,包含 ConfigNode 和 DataNode 的日志文件                |
-| sbin                    | 脚本目录,包含 ConfigNode 和 DataNode 的启停移除脚本目录,以及 Cli 的启动脚本 |
-| tools                   | 系统工具目录                                               |
+打开 apache-iotdb-1.0.0-SNAPSHOT-all-bin,可见以下目录:
 
-## 启动集群
+| **目录**   | **说明**                                              |
+|----------|-----------------------------------------------------|
+| conf     | 配置文件目录,包含 ConfigNode、DataNode、JMX 和 logback 等配置文件   |
+| data     | 数据文件目录,包含 ConfigNode 和 DataNode 的数据文件               |
+| lib      | 库文件目录                                               |
+| licenses | 证书文件目录                                              |
+| logs     | 日志文件目录,包含 ConfigNode 和 DataNode 的日志文件               |
+| sbin     | 脚本目录,包含 ConfigNode 和 DataNode 的启停移除脚本,以及 Cli 的启动脚本等 |
+| tools    | 系统工具目录                                              |
 
-用户可以启动包括若干 ConfigNode 和 DataNode 的集群。
-集群可以提供服务的标准是至少启动一个 ConfigNode 且启动 不小于(数据/元数据)副本个数 的 DataNode。
+# 5. 集群安装配置
 
-总体启动流程分为三步:
+## 5.1 集群安装
 
-* 启动种子 ConfigNode
-* 增加 ConfigNode(可选)
-* 增加 DataNode
+`apache-iotdb-1.0.0-SNAPSHOT-all-bin` 包含 ConfigNode 和 DataNode,
+请将安装包部署于你目标集群的所有机器上,推荐将安装包部署于所有服务器的相同目录下。
 
-### 启动种子 ConfigNode
+如果你希望先在一台服务器上尝试部署 IoTDB 集群,请参考
+[Cluster Quick Start](https://iotdb.apache.org/zh/UserGuide/Master/QuickStart/ClusterQuickStart.html)。
 
-对 confignode/conf/iotdb-confignode.properties 和 conf/iotdb-common.properties 中的重要参数进行配置:
-iotdb-confignode.properties:
+## 5.2 集群配置
 
-| **配置项**                                   | **说明**                                             |
-|-------------------------------------------|----------------------------------------------------|
-| cn\_internal\_address                     | ConfigNode 在集群内部通讯使用的地址                            |
-| cn\_internal\_port                        | ConfigNode 在集群内部通讯使用的端口                            |
-| cn\_consensus\_port                       | ConfigNode 副本组共识协议通信使用的端口                          |
-| cn\_target\_config\_node\_list            | 种子 ConfigNode 地址,第一个 ConfigNode 配置自己的 address:port |
+接下来需要修改每个服务器上的配置文件,登录服务器,
+并将工作路径切换至 `apache-iotdb-1.0.0-SNAPSHOT-all-bin`,
+配置文件在 `./conf` 目录内。
 
-iotdb-common.properties:
+对于所有部署 ConfigNode 的服务器,需要修改通用配置(见 5.2.1)和 ConfigNode 配置(见 5.2.2)。
 
-| **配置项**                                    | **说明**                                |
-|--------------------------------------------|---------------------------------------|
-| data\_replication\_factor                  | 数据副本数,DataNode 数量不应少于此数目              |
-| data\_region\_consensus\_protocol\_class   | 数据副本组的共识协议。注:RatisConsensus目前不支持多数据目录 |
-| schema\_replication\_factor                | 元数据副本数,DataNode 数量不应少于此数目             |
-| schema\_region\_consensus\_protocol\_class | 元数据副本组的共识协议                           |
+对于所有部署 DataNode 的服务器,需要修改通用配置(见 5.2.1)和 DataNode 配置(见 5.2.3)。
 
-Linux 启动方式:
-```
-# 前台启动
-bash ./sbin/start-confignode.sh
+### 5.2.1 通用配置
 
-# 后台启动
-nohup bash ./sbin/start-confignode.sh >/dev/null 2>&1 &
-```
+打开通用配置文件 ./conf/iotdb-common.properties,
+可根据 [部署推荐](https://iotdb.apache.org/zh/UserGuide/Master/Cluster/Deployment-Recommendation.html)
+设置以下参数:
 
-Windows 启动方式:
-```
-sbin\start-confignode.bat
-```
+| **配置项**                                    | **说明**                                 | **默认**                                          |
+|--------------------------------------------|----------------------------------------|-------------------------------------------------|
+| config\_node\_consensus\_protocol\_class   | ConfigNode 使用的共识协议                     | org.apache.iotdb.consensus.ratis.RatisConsensus |
+| schema\_replication\_factor                | 元数据副本数,DataNode 数量不应少于此数目              | 1                                               |
+| schema\_region\_consensus\_protocol\_class | 元数据副本组的共识协议                            | org.apache.iotdb.consensus.ratis.RatisConsensus |
+| data\_replication\_factor                  | 数据副本数,DataNode 数量不应少于此数目               | 1                                               |
+| data\_region\_consensus\_protocol\_class   | 数据副本组的共识协议。注:RatisConsensus 目前不支持多数据目录 | org.apache.iotdb.consensus.iot.IoTConsensus     |
 
-具体参考 [ConfigNode配置参数](https://iotdb.apache.org/zh/UserGuide/Master/Reference/ConfigNode-Config-Manual.html)
+**注意:上述配置项在集群启动后即不可更改,且务必保证所有节点的通用配置完全一致,否则节点无法启动。**
 
-### 增加 ConfigNode(可选)
+### 5.2.2 ConfigNode 配置
 
-增加 ConfigNode 是一个扩容操作,除 IP 和端口不能冲突外,上述其它重要参数需要与集群已有的 ConfigNode 保持一致,并将 cn\_target\_config\_nodes\_list 配置为集群活跃的 ConfigNode。
+打开 ConfigNode 配置文件 ./conf/iotdb-confignode.properties,根据服务器/虚拟机的 IP 地址和可用端口,设置以下参数:
 
-启动方式同上。
+| **配置项**                        | **说明**                               | **默认**          | **用法**                                                                                                                                               |
+|--------------------------------|--------------------------------------|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------|
+| cn\_internal\_address          | ConfigNode 在集群内部通讯使用的地址              | 127.0.0.1       | 设置为服务器的 IPV4 地址或域名                                                                                                                                   |
+| cn\_internal\_port             | ConfigNode 在集群内部通讯使用的端口              | 22277           | 设置为任意未占用端口                                                                                                                                           |
+| cn\_consensus\_port            | ConfigNode 副本组共识协议通信使用的端口            | 22278           | 设置为任意未占用端口                                                                                                                                           |
+| cn\_target\_config\_node\_list | 节点注册加入集群时连接的 ConfigNode 的地址。注:只能配置一个 | 127.0.0.1:22277 | 对于 Seed-ConfigNode,设置为自己的 cn\_internal\_address:cn\_internal\_port;对于其它 ConfigNode,设置为另一个正在运行的 ConfigNode 的 cn\_internal\_address:cn\_internal\_port |
 
-### 增加 DataNode
+**注意:上述配置项在节点启动后即不可更改,且务必保证所有端口均未被占用,否则节点无法启动。**
 
-可以向集群中添加任意个 DataNode。
+### 5.2.3 DataNode 配置
 
-iotdb-datanode.properties 中的重要配置如下:
+打开 DataNode 配置文件 ./conf/iotdb-datanode.properties,根据服务器/虚拟机的 IP 地址和可用端口,设置以下参数:
 
-| **配置项**                             | **说明**                    |
-|-------------------------------------|---------------------------|
-| dn\_rpc\_address                    | 客户端 RPC 服务的地址             |
-| dn\_rpc\_port                       | 客户端 RPC 服务的端口             |
-| dn\_internal\_address               | DataNode 在集群内部接收控制流使用的地址  |
-| dn\_internal\_port                  | DataNode 在集群内部接收控制流使用的端口  |
-| dn\_mpp\_data\_exchange\_port       | DataNode 在集群内部接收数据流使用的端口  |
-| dn\_data\_region\_consensus\_port   | DataNode 的数据副本间共识协议通信的端口  |
-| dn\_schema\_region\_consensus\_port | DataNode 的元数据副本间共识协议通信的端口 |
-| dn\_target\_config\_node\_list      | 集群中正在运行的 ConfigNode 地址    |
+| **配置项**                             | **说明**                    | **默认**          | **用法**                                                                            |
+|-------------------------------------|---------------------------|-----------------|-----------------------------------------------------------------------------------|
+| dn\_rpc\_address                    | 客户端 RPC 服务的地址             | 127.0.0.1       | 设置为服务器的 IPV4 地址或域名                                                                |
+| dn\_rpc\_port                       | 客户端 RPC 服务的端口             | 6667            | 设置为任意未占用端口                                                                        |
+| dn\_internal\_address               | DataNode 在集群内部接收控制流使用的地址  | 127.0.0.1       | 设置为服务器的 IPV4 地址或域名                                                                |
+| dn\_internal\_port                  | DataNode 在集群内部接收控制流使用的端口  | 9003            | 设置为任意未占用端口                                                                        |
+| dn\_mpp\_data\_exchange\_port       | DataNode 在集群内部接收数据流使用的端口  | 8777            | 设置为任意未占用端口                                                                        |
+| dn\_data\_region\_consensus\_port   | DataNode 的数据副本间共识协议通信的端口  | 50010           | 设置为任意未占用端口                                                                        |
+| dn\_schema\_region\_consensus\_port | DataNode 的元数据副本间共识协议通信的端口 | 40010           | 设置为任意未占用端口                                                                        |
+| dn\_target\_config\_node\_list      | 集群中正在运行的 ConfigNode 地址    | 127.0.0.1:22277 | 设置为任意正在运行的 ConfigNode 的 cn\_internal\_address:cn\_internal\_port,可设置多个,用逗号(",")隔开 |
 
+**注意:上述配置项在节点启动后即不可更改,且务必保证所有端口均未被占用,否则节点无法启动。**
 
-Linux 启动方式:
-```
-# 前台启动
-bash ./sbin/start-datanode.sh
+# 6. 集群操作
 
-# 后台启动
-nohup bash ./sbin/start-datanode.sh >/dev/null 2>&1 &
-```
+## 6.1 启动集群
 
-Windows 启动方式:
-```
-sbin\start-datanode.bat
-```
+本小节描述如何启动包括若干 ConfigNode 和 DataNode 的集群。
+集群可以提供服务的标准是至少启动一个 ConfigNode 且启动 不小于(数据/元数据)副本个数 的 DataNode。
 
-具体参考 [DataNode配置参数](https://iotdb.apache.org/zh/UserGuide/Master/Reference/DataNode-Config-Manual.html)。
+总体启动流程分为三步:
 
-### 停止 IoTDB 进程
-如果你碰到了问题,希望手动关闭 IoTDB 的 ConfigNode 和 DataNode 进程,可以使用我们的脚本。
+1. 启动种子 ConfigNode
+2. 增加 ConfigNode(可选)
+3. 增加 DataNode
 
-在 Windows 上:
+### 6.1.1 启动 Seed-ConfigNode
 
-```
-sbin\stop-datanode.bat
-```
-```
-sbin\stop-confignode.bat
-```
-在 Linux 上:
-```
-bash sbin/stop-datanode.sh
-```
-```
-bash sbin/stop-confignode.sh
-```
+**集群第一个启动的节点必须是 ConfigNode,第一个启动的 ConfigNode 必须遵循本小节教程。**
 
-注意不要遗漏 ”sudo“ 的标签,因为一些端口信息的获取需要 root 权限。如果无法 sudo 或遇到其他问题,可以使用 jps 或 ps aux | grep iotdb 的命令来获取 IoTDB 的进程,然后使用 kill -9 进程号来结束此进程。
+第一个启动的 ConfigNode 是 Seed-ConfigNode,标志着新集群的创建。
+在启动 Seed-ConfigNode 前,请打开它的配置文件 ./conf/iotdb-confignode.properties,并检查如下参数:
 
-## 启动单机
-除了集群之外, 我们的脚本也提供了单机 1C1D(也就是1个Confignode + 1个Datanode) 的便捷启动方式。
+| **配置项**                        | **检查**                                                   |
+|--------------------------------|----------------------------------------------------------|
+| cn\_internal\_address          | 已设置为服务器的 IPV4 地址或域名                                      |
+| cn\_internal\_port             | 该端口未被占用                                                  |
+| cn\_consensus\_port            | 该端口未被占用                                                  |
+| cn\_target\_config\_node\_list | 已设置为自己的内部通讯地址,即 cn\_internal\_address:cn\_internal\_port |
 
-在不更改配置文件的情况下,该脚本可以成功执行。
+检查完毕后,即可在服务器上运行启动脚本:
 
-Windows 启动方式:
-```
-sbin\start-standalone.bat
-```
-Linux 启动方式:
-```
-bash sbin/start-standalone.sh
 ```
+# Linux 前台启动
+bash ./sbin/start-confignode.sh
 
-也可以使用脚本直接关闭这些进程。
+# Linux 后台启动
+nohup bash ./sbin/start-confignode.sh >/dev/null 2>&1 &
 
-Windows 停止方式:
-```
-sbin\stop-standalone.bat
-```
-Linux 停止方式:
-```
-bash sbin/stop-standalone.sh
+# Windows
+.\sbin\start-confignode.bat
 ```
-注意: 在 Linux 平台上,1C1D 的两个进程都在后台启动,可以查看 confignode1.log 和 datanode1.log 来找到它们的运行日志。
 
-一般来说,stop-standalone.sh需要sudo权限,因为iotdb的端口信息在非sudo下可能是隐形的。如果 stop-standalone.sh
-出现错误,可以使用“jps”命令或“ps aux | grep iotdb“命令来查看iotdb的进程,再使用" kill -9 <进程号>"的方式来停止它们。
+ConfigNode 的其它配置参数可参考
+[ConfigNode 配置参数](https://iotdb.apache.org/zh/UserGuide/Master/Reference/ConfigNode-Config-Manual.html)。
 
-### 启动 Cli
+### 6.1.2 增加更多 ConfigNode(可选)
 
-Cli 启动脚本在 sbin 目录。
+**只要不是第一个启动的 ConfigNode 就必须遵循本小节教程。**
 
-Linux 启动方式:
-```
-./sbin/start-cli.sh
-```
+可向集群添加更多 ConfigNode,以保证 ConfigNode 的高可用。常用的配置为额外增加两个 ConfigNode,使集群共有三个 ConfigNode。
 
-Windows 启动方式:
-```
-sbin\start-cli.bat
-```
+新增的 ConfigNode 需要保证 ./conf/iotdb-common.properites 中的所有配置参数与种子 ConfigNode 完全一致,否则可能启动失败或产生运行时错误。
 
-## 集群缩容
+在增加一个新的 ConfigNode 之前,请打开它的配置文件 ./conf/iotdb-confignode.properties,并检查以下参数:
 
-### 移除 ConfigNode
+| **配置项**                        | **检查**                                                       |
+|--------------------------------|--------------------------------------------------------------|
+| cn\_internal\_address          | 已设置为服务器的 IPV4 地址或域名                                          |
+| cn\_internal\_port             | 该端口未被占用                                                      |
+| cn\_consensus\_port            | 该端口未被占用                                                      |
+| cn\_target\_config\_node\_list | 已设置为另一个正在运行的 ConfigNode 的内部通讯地址,推荐使用 Seed-ConfigNode 的内部通讯地址 |
 
-需要在活跃的 ConfigNode 上执行 remove-confignode 脚本,且保证移除后集群中至少有一个活跃的 ConfigNode。
+检查完毕后,即可在服务器上运行启动脚本:
 
-Linux 移除方式:
 ```
-# 根据 confignode_id 移除节点
-./sbin/remove-confignode.sh <confignode_id>
+# Linux 前台启动
+bash ./sbin/start-confignode.sh
+
+# Linux 后台启动
+nohup bash ./sbin/start-confignode.sh >/dev/null 2>&1 &
 
-# 根据 ConfigNode 内部通讯地址和端口移除节点
-./sbin/remove-confignode.sh <internal_address>:<internal_port>
+# Windows
+.\sbin\start-confignode.bat
 ```
 
-Windows 移除方式:
+ConfigNode 的其它配置参数可参考
+[ConfigNode配置参数](https://iotdb.apache.org/zh/UserGuide/Master/Reference/ConfigNode-Config-Manual.html)。
+
+### 6.1.3 增加 DataNode
+
+**确保集群已有正在运行的 ConfigNode 后,才能开始增加 DataNode。**
+
+可以向集群中添加任意个 DataNode。
+在添加新的 DataNode 前,请打开它的配置文件 ./conf/iotdb-datanode.properties 并检查以下参数:
+
+| **配置项**                             | **检查**                                                    |
+|-------------------------------------|-----------------------------------------------------------|
+| dn\_rpc\_address                    | 已设置为服务器的 IPV4 地址或域名                                       |
+| dn\_rpc\_port                       | 该端口未被占用                                                   |
+| dn\_internal\_address               | 已设置为服务器的 IPV4 地址或域名                                       |
+| dn\_internal\_port                  | 该端口未被占用                                                   |
+| dn\_mpp\_data\_exchange\_port       | 该端口未被占用                                                   |
+| dn\_data\_region\_consensus\_port   | 该端口未被占用                                                   |
+| dn\_schema\_region\_consensus\_port | 该端口未被占用                                                   |
+| dn\_target\_config\_node\_list      | 已设置为正在运行的 ConfigNode 的内部通讯地址,推荐使用 Seed-ConfigNode 的内部通讯地址 |
+
+检查完毕后,即可在服务器上运行启动脚本:
+
 ```
-# 根据 confignode_id 移除节点
-sbin\remove-confignode.bat <confignode_id>
+# Linux 前台启动
+bash ./sbin/start-datanode.sh
 
-# 根据 ConfigNode 内部通讯地址和端口移除节点
-sbin\remove-confignode.bat <internal_address>:<internal_port>
+# Linux 后台启动
+nohup bash ./sbin/start-datanode.sh >/dev/null 2>&1 &
+
+# Windows
+.\sbin\start-datanode.bat
 ```
 
-### 移除 DataNode
+DataNode 的其它配置参数可参考
+[DataNode配置参数](https://iotdb.apache.org/zh/UserGuide/Master/Reference/DataNode-Config-Manual.html)。
+
+**注意:当且仅当集群拥有不少于副本个数(max{schema\_replication\_factor, data\_replication\_factor})的 DataNode 后,集群才可以提供服务**
 
-需要在活跃的 DataNode 上执行 remove-datanode 脚本,且保证移除后集群中至少有不少于(数据/元数据)副本个数 的 DataNode。
+## 6.2 启动 Cli
 
-Linux 移除方式:
+若搭建的集群仅用于本地调试,可直接执行 ./sbin 目录下的 Cli 启动脚本:
 
 ```
-# 根据 datanode_id 移除节点
-./sbin/remove-datanode.sh <datanode_id>
+# Linux
+./sbin/start-cli.sh
 
-# 根据 DataNode RPC 服务地址和端口移除节点
-./sbin/remove-datanode.sh <rpc_address>:<rpc_port>
+# Windows
+.\sbin\start-cli.bat
 ```
 
-Windows 移除方式:
+若希望通过 Cli 连接生产环境的集群,
+请阅读 [Cli 使用手册](https://iotdb.apache.org/zh/UserGuide/Master/QuickStart/Command-Line-Interface.html)。
 
-```
-# 根据 datanode_id 移除节点
-sbin\remove-datanode.bat <datanode_id>
+## 6.3 验证集群
+
+以本地启动的 3C3D(3个 ConfigNode 和3个 DataNode) 集群为例,
+在 Cli 执行 `show cluster details`,结果如下:
 
-# 根据 DataNode RPC 服务地址和端口移除节点
-sbin\remove-datanode.bat <rpc_address>:<rpc_port>
+```
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|DataConsensusPort|SchemaConsensusPort|MppPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|     0|ConfigNode|Running|      127.0.0.1|       22277|              22278|          |       |                 |                   |       |
+|     2|ConfigNode|Running|      127.0.0.1|       22279|              22280|          |       |                 |                   |       |
+|     3|ConfigNode|Running|      127.0.0.1|       22281|              22282|          |       |                 |                   |       |
+|     1|  DataNode|Running|      127.0.0.1|        9003|                   | 127.0.0.1|   6667|            40010|              50010|   8777|
+|     4|  DataNode|Running|      127.0.0.1|        9004|                   | 127.0.0.1|   6668|            40011|              50011|   8778|
+|     5|  DataNode|Running|      127.0.0.1|        9005|                   | 127.0.0.1|   6669|            40012|              50012|   8779|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+Total line number = 6
+It costs 0.012s
 ```
 
-## 快速上手
+若所有节点的状态均为 **Running**,则说明集群部署成功;
+否则,请阅读启动失败节点的运行日志,并检查对应的配置参数。
 
-以本地环境为例,演示 IoTDB 集群的启动、扩容与缩容:
+## 6.4 停止 IoTDB 进程
 
-### 1. 准备启动环境
+本小节描述如何手动关闭 IoTDB 的 ConfigNode 或 DataNode 进程。
 
-解压 apache-iotdb-1.0.0-all-bin.zip 至 cluster0 目录。
+### 6.4.1 使用脚本停止 ConfigNode
 
-### 2. 启动最小集群
+执行停止 ConfigNode 脚本:
 
-在 Linux 环境中,部署 1 个 ConfigNode 和 1 个 DataNode(1C1D)集群版,默认 1 副本:
 ```
-./cluster0/sbin/start-confignode.sh
-./cluster0/sbin/start-datanode.sh
+# Linux
+./sbin/stop-confignode.sh
+
+# Windows
+.\sbin\stop-confignode.bat
 ```
 
-### 3. 验证最小集群
+### 6.4.2 使用脚本停止 DataNode
 
-+ 最小集群启动成功,启动 Cli 进行验证:
-```
-./cluster0/sbin/start-cli.sh
-```
+执行停止 DataNode 脚本:
 
-+ 在 Cli 执行 [show cluster](https://iotdb.apache.org/zh/UserGuide/Master/Maintenance-Tools/Maintenance-Command.html#%E6%9F%A5%E7%9C%8B%E5%85%A8%E9%83%A8%E8%8A%82%E7%82%B9%E4%BF%A1%E6%81%AF) 
-指令,结果如下所示:
 ```
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+
-|NodeID|  NodeType| Status|InternalAddress|InternalPort|
-+------+----------+-------+---------------+------------+
-|     0|ConfigNode|Running|      127.0.0.1|       22277|
-|     1|  DataNode|Running|      127.0.0.1|        9003|
-+------+----------+-------+---------------+------------+
-Total line number = 2
-It costs 0.160s
+# Linux
+./sbin/stop-datanode.sh
+
+# Windows
+.\sbin\stop-datanode.bat
 ```
 
-### 4. 准备扩容环境
+### 6.4.3 停止节点进程
 
-解压 apache-iotdb-1.0.0-all-bin.zip 至 cluster1 目录和 cluster2 目录
+首先获取节点的进程号:
 
-### 5. 修改节点配置文件
+```
+jps
 
-对于 cluster1 目录:
+# 或
 
-+ 修改 ConfigNode 配置:
+ps aux | grep iotdb
+```
 
-| **配置项**                        | **值**           |
-|--------------------------------|-----------------|
-| cn\_internal\_address          | 127.0.0.1       |
-| cn\_internal\_port             | 22279           |
-| cn\_consensus\_port            | 22280           |
-| cn\_target\_config\_node\_list | 127.0.0.1:22277 |
+结束进程:
 
-+ 修改 DataNode 配置:
+```
+kill -9 <pid>
+```
 
-| **配置项**                             | **值**           |
-|-------------------------------------|-----------------|
-| dn\_rpc\_address                    | 127.0.0.1       |
-| dn\_rpc\_port                       | 6668            |
-| dn\_internal\_address               | 127.0.0.1       |
-| dn\_internal\_port                  | 9004            |
-| dn\_mpp\_data\_exchange\_port       | 8778            |
-| dn\_data\_region\_consensus\_port   | 40011           |
-| dn\_schema\_region\_consensus\_port | 50011           |
-| dn\_target\_config\_node\_list      | 127.0.0.1:22277 |
+**注意:有些端口的信息需要 root 权限才能获取,在此情况下请使用 sudo**
 
-对于 cluster2 目录:
+## 6.5 集群缩容
 
-+ 修改 ConfigNode 配置:
+本小节描述如何将 ConfigNode 或 DataNode 移出集群。
 
-| **配置项**                        | **值**           |
-|--------------------------------|-----------------|
-| cn\_internal\_address          | 127.0.0.1       |
-| cn\_internal\_port             | 22281           |
-| cn\_consensus\_port            | 22282           |
-| cn\_target\_config\_node\_list | 127.0.0.1:22277 |
+### 6.5.1 移除 ConfigNode
 
-+ 修改 DataNode 配置:
+在移除 ConfigNode 前,请确保移除后集群至少还有一个活跃的 ConfigNode。
+在活跃的 ConfigNode 上执行 remove-confignode 脚本:
 
-| **配置项**                             | **值**           |
-|-------------------------------------|-----------------|
-| dn\_rpc\_address                    | 127.0.0.1       |
-| dn\_rpc\_port                       | 6669            |
-| dn\_internal\_address               | 127.0.0.1       |
-| dn\_internal\_port                  | 9005            |
-| dn\_mpp\_data\_exchange\_port       | 8779            |
-| dn\_data\_region\_consensus\_port   | 40012           |
-| dn\_schema\_region\_consensus\_port | 50012           |
-| dn\_target\_config\_node\_list      | 127.0.0.1:22277 |
+```
+# Linux
+## 根据 confignode_id 移除节点
+./sbin/remove-confignode.sh <confignode_id>
 
-### 6. 集群扩容
+## 根据 ConfigNode 内部通讯地址和端口移除节点
+./sbin/remove-confignode.sh <cn_internal_address>:<cn_internal_port>
 
-将集群扩容至 3 个 ConfigNode 和 3 个 DataNode(3C3D)集群版,
-指令执行顺序为先启动 ConfigNode,再启动 DataNode:
-```
-./cluster1/sbin/start-confignode.sh
-./cluster2/sbin/start-confignode.sh
-./cluster1/sbin/start-datanode.sh
-./cluster2/sbin/start-datanode.sh
-```
 
-### 7. 验证扩容结果
+# Windows
+## 根据 confignode_id 移除节点
+.\sbin\remove-confignode.bat <confignode_id>
 
-在 Cli 执行 show cluster,结果如下:
-```
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+
-|NodeID|  NodeType| Status|InternalAddress|InternalPort|
-+------+----------+-------+---------------+------------+
-|     0|ConfigNode|Running|      127.0.0.1|       22277|
-|     2|ConfigNode|Running|      127.0.0.1|       22279|
-|     3|ConfigNode|Running|      127.0.0.1|       22281|
-|     1|  DataNode|Running|      127.0.0.1|        9003|
-|     4|  DataNode|Running|      127.0.0.1|        9004|
-|     5|  DataNode|Running|      127.0.0.1|        9005|
-+------+----------+-------+---------------+------------+
-Total line number = 6
-It costs 0.012s
+## 根据 ConfigNode 内部通讯地址和端口移除节点
+.\sbin\remove-confignode.bat <cn_internal_address>:<cn_internal_port>
 ```
 
-### 8. 集群缩容
+### 6.5.2 移除 DataNode
 
-+ 缩容一个 ConfigNode:
-```
-./cluster0/sbin/remove-confignode.sh 127.0.0.1:22279
-```
+在移除 DataNode 前,请确保移除后集群至少还有不少于(数据/元数据)副本个数的 DataNode。
+在活跃的 DataNode 上执行 remove-datanode 脚本:
 
-+ 缩容一个 DataNode:
-```
-./cluster0/sbin/remove-datanode.sh 127.0.0.1:6668
 ```
+# Linux
+## 根据 datanode_id 移除节点
+./sbin/remove-datanode.sh <datanode_id>
 
-### 9. 验证缩容结果
+## 根据 DataNode RPC 服务地址和端口移除节点
+./sbin/remove-datanode.sh <dn_rpc_address>:<dn_rpc_port>
 
-在 Cli 执行 show cluster,结果如下:
-```
-IoTDB> show cluster
-+------+----------+-------+---------------+------------+
-|NodeID|  NodeType| Status|InternalAddress|InternalPort|
-+------+----------+-------+---------------+------------+
-|     0|ConfigNode|Running|      127.0.0.1|       22277|
-|     3|ConfigNode|Running|      127.0.0.1|       22281|
-|     1|  DataNode|Running|      127.0.0.1|        9003|
-|     5|  DataNode|Running|      127.0.0.1|        9005|
-+------+----------+-------+---------------+------------+
-Total line number = 4
-It costs 0.007s
+
+# Windows
+## 根据 datanode_id 移除节点
+.\sbin\remove-datanode.bat <datanode_id>
+
+## 根据 DataNode RPC 服务地址和端口移除节点
+.\sbin\remove-datanode.bat <dn_rpc_address>:<dn_rpc_port>
 ```
+
+# 7. 常见问题
+
+请参考 [常见问题](https://iotdb.apache.org/zh/UserGuide/Master/FAQ/Frequently-asked-questions.html)
\ No newline at end of file
diff --git a/docs/zh/UserGuide/QuickStart/ClusterQuickStart.md b/docs/zh/UserGuide/QuickStart/ClusterQuickStart.md
new file mode 100644
index 0000000000..0d76702862
--- /dev/null
+++ b/docs/zh/UserGuide/QuickStart/ClusterQuickStart.md
@@ -0,0 +1,180 @@
+<!--
+
+    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.
+
+-->
+
+# 快速上手
+
+以本地环境为例,演示 IoTDB 集群的启动、扩容与缩容。
+
+**注意:本文档为使用本地不同端口,进行伪分布式环境部署的教程,仅用于练习。在真实环境部署时,一般不需要修改节点端口,仅需配置节点 IPV4 地址或域名即可。**
+
+## 1. 准备启动环境
+
+解压 apache-iotdb-1.0.0-all-bin.zip 至 cluster0 目录。
+
+## 2. 启动最小集群
+
+在 Linux 环境中,部署 1 个 ConfigNode 和 1 个 DataNode(1C1D)集群版,默认 1 副本:
+```
+./cluster0/sbin/start-confignode.sh
+./cluster0/sbin/start-datanode.sh
+```
+
+## 3. 验证最小集群
+
++ 最小集群启动成功,启动 Cli 进行验证:
+```
+./cluster0/sbin/start-cli.sh
+```
+
++ 在 Cli 执行 [show cluster details](https://iotdb.apache.org/zh/UserGuide/Master/Maintenance-Tools/Maintenance-Command.html#%E6%9F%A5%E7%9C%8B%E5%85%A8%E9%83%A8%E8%8A%82%E7%82%B9%E4%BF%A1%E6%81%AF)
+  指令,结果如下所示:
+```
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|DataConsensusPort|SchemaConsensusPort|MppPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|     0|ConfigNode|Running|      127.0.0.1|       22277|              22278|          |       |                 |                   |       |
+|     1|  DataNode|Running|      127.0.0.1|        9003|                   | 127.0.0.1|   6667|            40010|              50010|   8777|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+Total line number = 2
+It costs 0.242s
+```
+
+## 4. 准备扩容环境
+
+解压 apache-iotdb-1.0.0-all-bin.zip 至 cluster1 目录和 cluster2 目录
+
+## 5. 修改节点配置文件
+
+对于 cluster1 目录:
+
++ 修改 ConfigNode 配置:
+
+| **配置项**                        | **值**           |
+|--------------------------------|-----------------|
+| cn\_internal\_address          | 127.0.0.1       |
+| cn\_internal\_port             | 22279           |
+| cn\_consensus\_port            | 22280           |
+| cn\_target\_config\_node\_list | 127.0.0.1:22277 |
+
++ 修改 DataNode 配置:
+
+| **配置项**                             | **值**           |
+|-------------------------------------|-----------------|
+| dn\_rpc\_address                    | 127.0.0.1       |
+| dn\_rpc\_port                       | 6668            |
+| dn\_internal\_address               | 127.0.0.1       |
+| dn\_internal\_port                  | 9004            |
+| dn\_mpp\_data\_exchange\_port       | 8778            |
+| dn\_data\_region\_consensus\_port   | 40011           |
+| dn\_schema\_region\_consensus\_port | 50011           |
+| dn\_target\_config\_node\_list      | 127.0.0.1:22277 |
+
+对于 cluster2 目录:
+
++ 修改 ConfigNode 配置:
+
+| **配置项**                        | **值**           |
+|--------------------------------|-----------------|
+| cn\_internal\_address          | 127.0.0.1       |
+| cn\_internal\_port             | 22281           |
+| cn\_consensus\_port            | 22282           |
+| cn\_target\_config\_node\_list | 127.0.0.1:22277 |
+
++ 修改 DataNode 配置:
+
+| **配置项**                             | **值**           |
+|-------------------------------------|-----------------|
+| dn\_rpc\_address                    | 127.0.0.1       |
+| dn\_rpc\_port                       | 6669            |
+| dn\_internal\_address               | 127.0.0.1       |
+| dn\_internal\_port                  | 9005            |
+| dn\_mpp\_data\_exchange\_port       | 8779            |
+| dn\_data\_region\_consensus\_port   | 40012           |
+| dn\_schema\_region\_consensus\_port | 50012           |
+| dn\_target\_config\_node\_list      | 127.0.0.1:22277 |
+
+## 6. 集群扩容
+
+将集群扩容至 3 个 ConfigNode 和 3 个 DataNode(3C3D)集群版,
+指令执行顺序为先启动 ConfigNode,再启动 DataNode:
+```
+./cluster1/sbin/start-confignode.sh
+./cluster2/sbin/start-confignode.sh
+./cluster1/sbin/start-datanode.sh
+./cluster2/sbin/start-datanode.sh
+```
+
+## 7. 验证扩容结果
+
+在 Cli 执行 `show cluster details`,结果如下:
+```
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|DataConsensusPort|SchemaConsensusPort|MppPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|     0|ConfigNode|Running|      127.0.0.1|       22277|              22278|          |       |                 |                   |       |
+|     2|ConfigNode|Running|      127.0.0.1|       22279|              22280|          |       |                 |                   |       |
+|     3|ConfigNode|Running|      127.0.0.1|       22281|              22282|          |       |                 |                   |       |
+|     1|  DataNode|Running|      127.0.0.1|        9003|                   | 127.0.0.1|   6667|            40010|              50010|   8777|
+|     4|  DataNode|Running|      127.0.0.1|        9004|                   | 127.0.0.1|   6668|            40011|              50011|   8778|
+|     5|  DataNode|Running|      127.0.0.1|        9005|                   | 127.0.0.1|   6669|            40012|              50012|   8779|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+Total line number = 6
+It costs 0.012s
+```
+
+## 8. 集群缩容
+
++ 缩容一个 ConfigNode:
+```
+# 使用 ip:port 移除
+./cluster0/sbin/remove-confignode.sh 127.0.0.1:22279
+
+# 使用节点编号移除
+./cluster0/sbin/remove-confignode.sh 2
+```
+
++ 缩容一个 DataNode:
+```
+# 使用 ip:port 移除
+./cluster0/sbin/remove-datanode.sh 127.0.0.1:6668
+
+# 使用节点编号移除
+./cluster0/sbin/remove-confignode.sh 4
+```
+
+## 9. 验证缩容结果
+
+在 Cli 执行 `show cluster details`,结果如下:
+```
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|DataConsensusPort|SchemaConsensusPort|MppPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+|     0|ConfigNode|Running|      127.0.0.1|       22277|              22278|          |       |                 |                   |       |
+|     3|ConfigNode|Running|      127.0.0.1|       22281|              22282|          |       |                 |                   |       |
+|     1|  DataNode|Running|      127.0.0.1|        9003|                   | 127.0.0.1|   6667|            40010|              50010|   8777|
+|     5|  DataNode|Running|      127.0.0.1|        9005|                   | 127.0.0.1|   6669|            40012|              50012|   8779|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
+Total line number = 4
+It costs 0.005s
+```
\ No newline at end of file
diff --git a/site/src/main/.vuepress/config.js b/site/src/main/.vuepress/config.js
index b4f6d82f11..efa292a62e 100644
--- a/site/src/main/.vuepress/config.js
+++ b/site/src/main/.vuepress/config.js
@@ -1083,6 +1083,7 @@ var config = {
 						title: 'Quick Start',
 						children: [
 							['QuickStart/QuickStart','Quick Start'],
+							['QuickStart/ClusterQuickStart','Cluster Quick Start'],
 							['QuickStart/WayToGetIoTDB','Download and Setup'],
 							['QuickStart/Command-Line-Interface','Command Line Interface'],
 							['QuickStart/Files','Data storage']
@@ -2294,6 +2295,7 @@ var config = {
 						title: '快速上手',
 						children: [
 							['QuickStart/QuickStart','快速上手'],
+							['QuickStart/ClusterQuickStart', '集群快速上手'],
 							['QuickStart/WayToGetIoTDB','下载与安装'],
 							['QuickStart/Command-Line-Interface','SQL命令行终端(CLI)'],
 							['QuickStart/Files','数据文件存储']