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/30 07:36:06 UTC

[iotdb] branch rel/1.0 updated: [To rel/1.0] Cherry pick change default port commit (#8674)

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

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


The following commit(s) were added to refs/heads/rel/1.0 by this push:
     new db5e75e1c9 [To rel/1.0] Cherry pick change default port commit (#8674)
db5e75e1c9 is described below

commit db5e75e1c9cdfe8300bea0f219a5bd273e4af2e1
Author: Beyyes <cg...@foxmail.com>
AuthorDate: Fri Dec 30 15:36:01 2022 +0800

    [To rel/1.0] Cherry pick change default port commit (#8674)
---
 .../resources/conf/iotdb-confignode.properties     |   8 +-
 .../assembly/resources/sbin/start-confignode.bat   |   4 +-
 .../iotdb/confignode/conf/ConfigNodeConfig.java    |   6 +-
 .../request/ConfigPhysicalPlanSerDeTest.java       |  56 +--
 .../load/balancer/router/RegionRouteMapTest.java   |   8 +-
 .../router/priority/GreedyPriorityTest.java        |   8 +-
 .../priority/LeaderPriorityBalancerTest.java       |  16 +-
 .../confignode/persistence/PartitionInfoTest.java  |   8 +-
 .../impl/CreateRegionGroupsProcedureTest.java      |  16 +-
 .../impl/node/AddConfigNodeProcedureTest.java      |   2 +-
 .../impl/node/RemoveConfigNodeProcedureTest.java   |   2 +-
 .../confignode1conf/iotdb-confignode.properties    |   6 +-
 .../confignode2conf/iotdb-confignode.properties    |   6 +-
 .../confignode3conf/iotdb-confignode.properties    |   6 +-
 docs/UserGuide/Cluster/Cluster-Maintenance.md      |  50 +-
 docs/UserGuide/Cluster/Cluster-Setup.md            | 545 ++++++++++-----------
 .../Edge-Cloud-Collaboration/Sync-Tool.md          |   8 +-
 docs/UserGuide/QuickStart/ClusterQuickStart.md     | 183 +++++++
 docs/UserGuide/QuickStart/WayToGetIoTDB.md         | 178 ++++---
 .../Reference/ConfigNode-Config-Manual.md          |   6 +-
 docs/UserGuide/Reference/DataNode-Config-Manual.md |  10 +-
 docs/zh/UserGuide/Cluster/Cluster-Maintenance.md   |  50 +-
 docs/zh/UserGuide/Cluster/Cluster-Setup.md         | 534 ++++++++++----------
 .../Edge-Cloud-Collaboration/Sync-Tool.md          |   8 +-
 docs/zh/UserGuide/QuickStart/ClusterQuickStart.md  | 180 +++++++
 docs/zh/UserGuide/QuickStart/WayToGetIoTDB.md      | 185 ++++---
 .../Reference/ConfigNode-Config-Manual.md          |   6 +-
 .../UserGuide/Reference/DataNode-Config-Manual.md  |  10 +-
 .../org/apache/iotdb/it/env/RemoteServerEnv.java   |   2 +-
 .../src/assembly/resources/sbin/iotdb-common.sh    |  12 +-
 .../iotdb/commons/client/ClientManagerTest.java    |   2 +-
 .../iotdb/commons/utils/NodeUrlUtilsTest.java      |   8 +-
 .../commons/utils/ThriftCommonsSerDeUtilsTest.java |  16 +-
 .../utils/ThriftConfigNodeSerDeUtilsTest.java      |   2 +-
 .../resources/conf/iotdb-datanode.properties       |  12 +-
 .../src/assembly/resources/sbin/start-datanode.bat |   8 +-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |  10 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |   2 +-
 .../db/mpp/common/header/ColumnHeaderConstant.java |   4 +-
 .../apache/iotdb/db/mpp/plan/TestRPCClient.java    |  50 +-
 .../config/metadata/ShowClusterDetailsTask.java    |   4 +-
 .../mpp/plan/plan/FragmentInstanceSerdeTest.java   |  16 +-
 .../datanode1conf/iotdb-datanode.properties        |  10 +-
 .../datanode2conf/iotdb-datanode.properties        |  12 +-
 .../datanode3conf/iotdb-datanode.properties        |  12 +-
 45 files changed, 1357 insertions(+), 930 deletions(-)

diff --git a/confignode/src/assembly/resources/conf/iotdb-confignode.properties b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
index eed5d144b5..932864ba58 100644
--- a/confignode/src/assembly/resources/conf/iotdb-confignode.properties
+++ b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
@@ -28,11 +28,11 @@ cn_internal_address=127.0.0.1
 
 # Used for RPC communication inside cluster.
 # Datatype: int
-cn_internal_port=22277
+cn_internal_port=10710
 
 # Used for consensus communication among ConfigNodes inside cluster.
 # Datatype: int
-cn_consensus_port=22278
+cn_consensus_port=10720
 
 ####################
 ### Target Config Nodes
@@ -40,9 +40,9 @@ cn_consensus_port=22278
 
 # For the first ConfigNode to start, cn_target_config_node_list points to its own cn_internal_address:cn_internal_port.
 # For other ConfigNodes that to join the cluster, target_config_node_list points to any running ConfigNode's cn_internal_address:cn_internal_port.
-# Format: address:port(,address:port)*   e.g. 127.0.0.1:22277,127.0.0.1:22279
+# Format: address:port(,address:port)*   e.g. 127.0.0.1:10710,127.0.0.1:10711
 # Datatype: String
-cn_target_config_node_list=127.0.0.1:22277
+cn_target_config_node_list=127.0.0.1:10710
 
 ####################
 ### Directory configuration
diff --git a/confignode/src/assembly/resources/sbin/start-confignode.bat b/confignode/src/assembly/resources/sbin/start-confignode.bat
index 4ba762aedf..21c19ca611 100644
--- a/confignode/src/assembly/resources/sbin/start-confignode.bat
+++ b/confignode/src/assembly/resources/sbin/start-confignode.bat
@@ -99,8 +99,8 @@ IF EXIST "%CONFIGNODE_CONF%\iotdb-confignode.properties" (
   )
 ) ELSE (
   echo "Can't find iotdb-confignode.properties, check the default ports"
-  set cn_internal_port=22277
-  set cn_consensus_port=22278
+  set cn_internal_port=10710
+  set cn_consensus_port=10720
 )
 
 echo Check whether the ports are occupied....
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
index 8e6b354534..94e906a9ad 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java
@@ -41,13 +41,13 @@ public class ConfigNodeConfig {
   private String internalAddress = "127.0.0.1";
 
   /** used for communication between data node and config node */
-  private int internalPort = 22277;
+  private int internalPort = 10710;
 
   /** used for communication between config node and config node */
-  private int consensusPort = 22278;
+  private int consensusPort = 10720;
 
   /** Used for connecting to the ConfigNodeGroup */
-  private TEndPoint targetConfigNode = new TEndPoint("127.0.0.1", 22277);
+  private TEndPoint targetConfigNode = new TEndPoint("127.0.0.1", 10710);
 
   // TODO: Read from iotdb-confignode.properties
   private int configNodeRegionId = 0;
diff --git a/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java b/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
index 4672b402ce..45d407427f 100644
--- a/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
+++ b/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
@@ -149,10 +149,10 @@ public class ConfigPhysicalPlanSerDeTest {
     TDataNodeLocation dataNodeLocation = new TDataNodeLocation();
     dataNodeLocation.setDataNodeId(1);
     dataNodeLocation.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     TDataNodeConfiguration dataNodeConfiguration = new TDataNodeConfiguration();
     dataNodeConfiguration.setLocation(dataNodeLocation);
@@ -169,10 +169,10 @@ public class ConfigPhysicalPlanSerDeTest {
     TDataNodeLocation dataNodeLocation = new TDataNodeLocation();
     dataNodeLocation.setDataNodeId(1);
     dataNodeLocation.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     UpdateDataNodePlan plan0 = new UpdateDataNodePlan(dataNodeLocation);
     UpdateDataNodePlan plan1 =
@@ -281,10 +281,10 @@ public class ConfigPhysicalPlanSerDeTest {
     TDataNodeLocation dataNodeLocation = new TDataNodeLocation();
     dataNodeLocation.setDataNodeId(0);
     dataNodeLocation.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     CreateRegionGroupsPlan req0 = new CreateRegionGroupsPlan();
     TRegionReplicaSet dataRegionSet = new TRegionReplicaSet();
@@ -307,10 +307,10 @@ public class ConfigPhysicalPlanSerDeTest {
     TDataNodeLocation dataNodeLocation = new TDataNodeLocation();
     dataNodeLocation.setDataNodeId(0);
     dataNodeLocation.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     TRegionReplicaSet regionReplicaSet = new TRegionReplicaSet();
     regionReplicaSet.setRegionId(new TConsensusGroupId(TConsensusGroupType.DataRegion, 0));
@@ -345,10 +345,10 @@ public class ConfigPhysicalPlanSerDeTest {
     TDataNodeLocation dataNodeLocation = new TDataNodeLocation();
     dataNodeLocation.setDataNodeId(0);
     dataNodeLocation.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     String storageGroup = "root.sg0";
     TSeriesPartitionSlot seriesPartitionSlot = new TSeriesPartitionSlot(10);
@@ -400,10 +400,10 @@ public class ConfigPhysicalPlanSerDeTest {
     TDataNodeLocation dataNodeLocation = new TDataNodeLocation();
     dataNodeLocation.setDataNodeId(0);
     dataNodeLocation.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     String storageGroup = "root.sg0";
     TSeriesPartitionSlot seriesPartitionSlot = new TSeriesPartitionSlot(10);
@@ -745,10 +745,10 @@ public class ConfigPhysicalPlanSerDeTest {
     TDataNodeLocation dataNodeLocation0 = new TDataNodeLocation();
     dataNodeLocation0.setDataNodeId(5);
     dataNodeLocation0.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation0.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation0.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation0.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation0.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation0.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation0.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation0.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation0.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     TConsensusGroupId schemaRegionGroupId = new TConsensusGroupId(SchemaRegion, 1);
     TConsensusGroupId dataRegionGroupId = new TConsensusGroupId(DataRegion, 0);
diff --git a/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/RegionRouteMapTest.java b/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/RegionRouteMapTest.java
index 9481802d48..986fc68637 100644
--- a/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/RegionRouteMapTest.java
+++ b/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/RegionRouteMapTest.java
@@ -55,10 +55,10 @@ public class RegionRouteMapTest {
             new TDataNodeLocation(
                 j,
                 new TEndPoint("0.0.0.0", 6667 + j),
-                new TEndPoint("0.0.0.0", 9003 + j),
-                new TEndPoint("0.0.0.0", 8777 + j),
-                new TEndPoint("0.0.0.0", 40010 + j),
-                new TEndPoint("0.0.0.0", 50010 + j)));
+                new TEndPoint("0.0.0.0", 10730 + j),
+                new TEndPoint("0.0.0.0", 10740 + j),
+                new TEndPoint("0.0.0.0", 10760 + j),
+                new TEndPoint("0.0.0.0", 10750 + j)));
       }
       regionLeaderMap.put(regionGroupId, i % 3);
       regionPriorityMap.put(regionGroupId, regionReplicaSet);
diff --git a/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/GreedyPriorityTest.java b/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/GreedyPriorityTest.java
index e54fab7cd3..cb617bf027 100644
--- a/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/GreedyPriorityTest.java
+++ b/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/GreedyPriorityTest.java
@@ -50,10 +50,10 @@ public class GreedyPriorityTest {
           new TDataNodeLocation(
               i,
               new TEndPoint("0.0.0.0", 6667 + i),
-              new TEndPoint("0.0.0.0", 9003 + i),
-              new TEndPoint("0.0.0.0", 8777 + i),
-              new TEndPoint("0.0.0.0", 40010 + i),
-              new TEndPoint("0.0.0.0", 50010 + i)));
+              new TEndPoint("0.0.0.0", 10730 + i),
+              new TEndPoint("0.0.0.0", 10740 + i),
+              new TEndPoint("0.0.0.0", 10760 + i),
+              new TEndPoint("0.0.0.0", 10750 + i)));
     }
 
     /* Build nodeCacheMap */
diff --git a/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/LeaderPriorityBalancerTest.java b/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/LeaderPriorityBalancerTest.java
index d94f45def1..a028219b08 100644
--- a/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/LeaderPriorityBalancerTest.java
+++ b/confignode/src/test/java/org/apache/iotdb/confignode/manager/load/balancer/router/priority/LeaderPriorityBalancerTest.java
@@ -51,10 +51,10 @@ public class LeaderPriorityBalancerTest {
           new TDataNodeLocation(
               i,
               new TEndPoint("0.0.0.0", 6667 + i),
-              new TEndPoint("0.0.0.0", 9003 + i),
-              new TEndPoint("0.0.0.0", 8777 + i),
-              new TEndPoint("0.0.0.0", 40010 + i),
-              new TEndPoint("0.0.0.0", 50010 + i)));
+              new TEndPoint("0.0.0.0", 10730 + i),
+              new TEndPoint("0.0.0.0", 10740 + i),
+              new TEndPoint("0.0.0.0", 10760 + i),
+              new TEndPoint("0.0.0.0", 10750 + i)));
     }
 
     // Build nodeCacheMap
@@ -126,10 +126,10 @@ public class LeaderPriorityBalancerTest {
           new TDataNodeLocation(
               i,
               new TEndPoint("0.0.0.0", 6667 + i),
-              new TEndPoint("0.0.0.0", 9003 + i),
-              new TEndPoint("0.0.0.0", 8777 + i),
-              new TEndPoint("0.0.0.0", 40010 + i),
-              new TEndPoint("0.0.0.0", 50010 + i)));
+              new TEndPoint("0.0.0.0", 10730 + i),
+              new TEndPoint("0.0.0.0", 10740 + i),
+              new TEndPoint("0.0.0.0", 10760 + i),
+              new TEndPoint("0.0.0.0", 10750 + i)));
     }
 
     // Build TRegionReplicaSet
diff --git a/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java b/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java
index 3e8f28484d..dd504686c9 100644
--- a/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java
+++ b/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java
@@ -247,10 +247,10 @@ public class PartitionInfoTest {
     TDataNodeLocation dataNodeLocation = new TDataNodeLocation();
     dataNodeLocation.setDataNodeId(0);
     dataNodeLocation.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     TRegionReplicaSet regionReplicaSet = new TRegionReplicaSet();
     regionReplicaSet.setRegionId(new TConsensusGroupId(TConsensusGroupType.DataRegion, 0));
diff --git a/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java b/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java
index ee41e42cb6..0642bf6d6a 100644
--- a/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java
+++ b/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/CreateRegionGroupsProcedureTest.java
@@ -52,18 +52,18 @@ public class CreateRegionGroupsProcedureTest {
     TDataNodeLocation dataNodeLocation0 = new TDataNodeLocation();
     dataNodeLocation0.setDataNodeId(5);
     dataNodeLocation0.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation0.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation0.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation0.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation0.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation0.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation0.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation0.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation0.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     TDataNodeLocation dataNodeLocation1 = new TDataNodeLocation();
     dataNodeLocation1.setDataNodeId(6);
     dataNodeLocation1.setClientRpcEndPoint(new TEndPoint("0.0.0.1", 6667));
-    dataNodeLocation1.setInternalEndPoint(new TEndPoint("0.0.0.1", 9003));
-    dataNodeLocation1.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.1", 8777));
-    dataNodeLocation1.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.1", 40010));
-    dataNodeLocation1.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.1", 50010));
+    dataNodeLocation1.setInternalEndPoint(new TEndPoint("0.0.0.1", 10730));
+    dataNodeLocation1.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.1", 10740));
+    dataNodeLocation1.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.1", 10760));
+    dataNodeLocation1.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.1", 10750));
 
     TConsensusGroupId schemaRegionGroupId = new TConsensusGroupId(SchemaRegion, 1);
     TConsensusGroupId dataRegionGroupId = new TConsensusGroupId(DataRegion, 0);
diff --git a/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedureTest.java b/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedureTest.java
index 19b7bec383..e7d2b05dc8 100644
--- a/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedureTest.java
+++ b/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedureTest.java
@@ -37,7 +37,7 @@ public class AddConfigNodeProcedureTest {
     AddConfigNodeProcedure procedure0 =
         new AddConfigNodeProcedure(
             new TConfigNodeLocation(
-                0, new TEndPoint("127.0.0.1", 22277), new TEndPoint("0.0.0.0", 22278)));
+                0, new TEndPoint("127.0.0.1", 10710), new TEndPoint("0.0.0.0", 10720)));
 
     try (PublicBAOS byteArrayOutputStream = new PublicBAOS();
         DataOutputStream outputStream = new DataOutputStream(byteArrayOutputStream)) {
diff --git a/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveConfigNodeProcedureTest.java b/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveConfigNodeProcedureTest.java
index c01b620a5a..59351867e2 100644
--- a/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveConfigNodeProcedureTest.java
+++ b/confignode/src/test/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveConfigNodeProcedureTest.java
@@ -37,7 +37,7 @@ public class RemoveConfigNodeProcedureTest {
     RemoveConfigNodeProcedure procedure0 =
         new RemoveConfigNodeProcedure(
             new TConfigNodeLocation(
-                0, new TEndPoint("127.0.0.1", 22277), new TEndPoint("0.0.0.0", 22278)));
+                0, new TEndPoint("127.0.0.1", 10710), new TEndPoint("0.0.0.0", 10720)));
 
     try (PublicBAOS byteArrayOutputStream = new PublicBAOS();
         DataOutputStream outputStream = new DataOutputStream(byteArrayOutputStream)) {
diff --git a/confignode/src/test/resources/confignode1conf/iotdb-confignode.properties b/confignode/src/test/resources/confignode1conf/iotdb-confignode.properties
index 3c4e761ffd..ebc0e98212 100644
--- a/confignode/src/test/resources/confignode1conf/iotdb-confignode.properties
+++ b/confignode/src/test/resources/confignode1conf/iotdb-confignode.properties
@@ -18,9 +18,9 @@
 #
 
 cn_internal_address=127.0.0.1
-cn_internal_port=22277
-cn_consensus_port=22278
-cn_target_config_node_list=127.0.0.1:22277
+cn_internal_port=10710
+cn_consensus_port=10720
+cn_target_config_node_list=127.0.0.1:10710
 cn_system_dir=target/confignode1/system
 cn_data_dirs=target/confignode1/data
 cn_consensus_dir=target/confignode1/consensus
diff --git a/confignode/src/test/resources/confignode2conf/iotdb-confignode.properties b/confignode/src/test/resources/confignode2conf/iotdb-confignode.properties
index a0d4e4ef98..1a0ceaf8c3 100644
--- a/confignode/src/test/resources/confignode2conf/iotdb-confignode.properties
+++ b/confignode/src/test/resources/confignode2conf/iotdb-confignode.properties
@@ -18,9 +18,9 @@
 #
 
 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
+cn_internal_port=10711
+cn_consensus_port=10721
+cn_target_config_node_list=127.0.0.1:10710
 cn_system_dir=target/confignode2/system
 cn_data_dirs=target/confignode2/data
 cn_consensus_dir=target/confignode2/consensus
diff --git a/confignode/src/test/resources/confignode3conf/iotdb-confignode.properties b/confignode/src/test/resources/confignode3conf/iotdb-confignode.properties
index b95a94e5d8..f2eaaa2c7a 100644
--- a/confignode/src/test/resources/confignode3conf/iotdb-confignode.properties
+++ b/confignode/src/test/resources/confignode3conf/iotdb-confignode.properties
@@ -18,9 +18,9 @@
 #
 
 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
+cn_internal_port=10712
+cn_consensus_port=10722
+cn_target_config_node_list=127.0.0.1:10710
 cn_system_dir=target/confignode3/system
 cn_data_dirs=target/confignode3/data
 cn_consensus_dir=target/confignode3/consensus
diff --git a/docs/UserGuide/Cluster/Cluster-Maintenance.md b/docs/UserGuide/Cluster/Cluster-Maintenance.md
index 8573db4119..38911edc20 100644
--- a/docs/UserGuide/Cluster/Cluster-Maintenance.md
+++ b/docs/UserGuide/Cluster/Cluster-Maintenance.md
@@ -69,9 +69,9 @@ IoTDB> show confignodes
 +------+-------+---------------+------------+--------+
 |NodeID| Status|InternalAddress|InternalPort|    Role|
 +------+-------+---------------+------------+--------+
-|     0|Running|      127.0.0.1|       22277|  Leader|
-|     1|Running|      127.0.0.1|       22279|Follower|
-|     2|Running|      127.0.0.1|       22281|Follower|
+|     0|Running|      127.0.0.1|       10710|  Leader|
+|     1|Running|      127.0.0.1|       10711|Follower|
+|     2|Running|      127.0.0.1|       10712|Follower|
 +------+-------+---------------+------------+--------+
 Total line number = 3
 It costs 0.030s
@@ -145,12 +145,12 @@ IoTDB> show cluster
 +------+----------+-------+---------------+------------+
 |NodeID|  NodeType| Status|InternalAddress|InternalPort|
 +------+----------+-------+---------------+------------+
-|     0|ConfigNode|Running|      127.0.0.1|       22277|
-|     1|ConfigNode|Running|      127.0.0.1|       22279|
-|     2|ConfigNode|Running|      127.0.0.1|       22281|
-|     3|  DataNode|Running|      127.0.0.1|        9003|
-|     4|  DataNode|Running|      127.0.0.1|        9005|
-|     5|  DataNode|Running|      127.0.0.1|        9007|
+|     0|ConfigNode|Running|      127.0.0.1|       10710|
+|     1|ConfigNode|Running|      127.0.0.1|       10711|
+|     2|ConfigNode|Running|      127.0.0.1|       10712|
+|     3|  DataNode|Running|      127.0.0.1|       10730|
+|     4|  DataNode|Running|      127.0.0.1|       10731|
+|     5|  DataNode|Running|      127.0.0.1|       10732|
 +------+----------+-------+---------------+------------+
 Total line number = 6
 It costs 0.011s
@@ -162,12 +162,12 @@ IoTDB> show cluster
 +------+----------+-------+---------------+------------+
 |NodeID|  NodeType| Status|InternalAddress|InternalPort|
 +------+----------+-------+---------------+------------+
-|     0|ConfigNode|Running|      127.0.0.1|       22277|
-|     1|ConfigNode|Unknown|      127.0.0.1|       22279|
-|     2|ConfigNode|Running|      127.0.0.1|       22281|
-|     3|  DataNode|Running|      127.0.0.1|        9003|
-|     4|  DataNode|Running|      127.0.0.1|        9005|
-|     5|  DataNode|Running|      127.0.0.1|        9007|
+|     0|ConfigNode|Running|      127.0.0.1|       10710|
+|     1|ConfigNode|Unknown|      127.0.0.1|       10711|
+|     2|ConfigNode|Running|      127.0.0.1|       10712|
+|     3|  DataNode|Running|      127.0.0.1|       10730|
+|     4|  DataNode|Running|      127.0.0.1|       10731|
+|     5|  DataNode|Running|      127.0.0.1|       10732|
 +------+----------+-------+---------------+------------+
 Total line number = 6
 It costs 0.012s
@@ -181,16 +181,16 @@ SHOW CLUSTER DETAILS
 Eg:
 ```
 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|ConfigNode|Running|      127.0.0.1|       22279|              22280|          |       |                 |                   |       |
-|     2|ConfigNode|Running|      127.0.0.1|       22281|              22282|          |       |                 |                   |       |
-|     3|  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|
-+------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|MppPort|SchemaConsensusPort|DataConsensusPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+|     0|ConfigNode|Running|      127.0.0.1|       10710|              10720|          |       |       |                   |                 |
+|     1|ConfigNode|Running|      127.0.0.1|       10711|              10721|          |       |       |                   |                 |
+|     2|ConfigNode|Running|      127.0.0.1|       10712|              10722|          |       |       |                   |                 |
+|     3|  DataNode|Running|      127.0.0.1|       10730|                   | 127.0.0.1|   6667|  10740|              10750|            10760|
+|     4|  DataNode|Running|      127.0.0.1|       10731|                   | 127.0.0.1|   6668|  10741|              10751|            10761|
+|     5|  DataNode|Running|      127.0.0.1|       10732|                   | 127.0.0.1|   6669|  10742|              10752|            10762|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
 Total line number = 6
 It costs 0.340s
 ```
diff --git a/docs/UserGuide/Cluster/Cluster-Setup.md b/docs/UserGuide/Cluster/Cluster-Setup.md
index 0e741b639c..b68838eab7 100644
--- a/docs/UserGuide/Cluster/Cluster-Setup.md
+++ b/docs/UserGuide/Cluster/Cluster-Setup.md
@@ -19,408 +19,395 @@
 
 -->
 
-## 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 that data/confignode directory has been cleared when starting ConfigNode for the first time,
+   and data/datanode directory has been cleared when starting DataNode 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 10710, 10720 for the ConfigNode and
+   6667, 10730, 10740, 10750 and 10760 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                                                                                                  | 10710           | Set to any unoccupied port                                                                                                                                                          |
+| cn\_consensus\_port            | ConfigNode replication consensus protocol communication port                                                                             | 10720           | 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:10710 | 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 |
+
+**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.**
 
-## Binary Distribution Content
+### 5.2.3 DataNode configuration
 
-| **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                                                                               |
+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:
 
-## Start the Cluster
+| **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     | 10730            | Set to any unoccupied port                                                                                                            |
+| dn\_mpp\_data\_exchange\_port       | Data flow port of DataNode inside cluster        | 10740            | Set to any unoccupied port                                                                                                            |
+| dn\_data\_region\_consensus\_port   | Data replicas communication port for consensus   | 10750           | Set to any unoccupied port                                                                                                            |
+| dn\_schema\_region\_consensus\_port | Schema replicas communication port for consensus | 10760           | Set to any unoccupied port                                                                                                            |
+| dn\_target\_config\_node\_list      | Running ConfigNode of the Cluster                | 127.0.0.1:10710 | Set to any running ConfigNode's cn\_internal\_address:cn\_internal\_port. You can set multiple values, separate them with commas(",") |
 
-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.
+**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
-
-Please set the important parameters in conf/iotdb-confignode.properties and conf/iotdb-common.properties:
+### 6.1.1 Start the Seed-ConfigNode
 
-iotdb-confignode.properties:
+**The first Node started in the cluster must be ConfigNode. The first started ConfigNode must follow the tutorial in this section.**
 
-| **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 |
+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:
 
-iotdb-common.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 its own internal communication address, which is cn\_internal\_address:cn\_internal\_port |
 
-| **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                                                                              |
+After checking, you can run the startup script on the server:
 
-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.
+Assumed that the IP addresses of the 3 ConfigNodes are 192.168.1.10, 192.168.1.11 and 192.168.1.12, and the default ports 10710 and 10720 are used.
+Assumed that the IP addresses of the 3 DataNodes are 192.168.1.20, 192.168.1.21 and 192.168.1.22, and the default ports 6667, 10730, 10740, 10750 and 10760 are used.
 
-Remove on Linux:
-```
-# Remove the ConfigNode with confignode_id
-./confignode/sbin/remove-confignode.sh <confignode_id>
+After starting the cluster successfully according to chapter 6.1, you can run the `show cluster details` command on the Cli, and you will see the following results:
 
-# Remove the ConfigNode with address:port
-./confignode/sbin/remove-confignode.sh <internal_address>:<internal_port>
 ```
-
-Remove on Windows:
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+------------+-------+-------+-------------------+-----------------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|  RpcAddress|RpcPort|MppPort|SchemaConsensusPort|DataConsensusPort|
++------+----------+-------+---------------+------------+-------------------+------------+-------+-------+-------------------+-----------------+
+|     0|ConfigNode|Running|   192.168.1.10|       10710|              10720|            |       |       |                   |                 |
+|     2|ConfigNode|Running|   192.168.1.11|       10710|              10720|            |       |       |                   |                 |
+|     3|ConfigNode|Running|   192.168.1.12|       10710|              10720|            |       |       |                   |                 |
+|     1|  DataNode|Running|   192.168.1.20|       10730|                   |192.168.1.20|   6667|  10740|              10750|            10760|
+|     4|  DataNode|Running|   192.168.1.21|       10730|                   |192.168.1.21|   6667|  10740|              10750|            10760|
+|     5|  DataNode|Running|   192.168.1.22|       10730|                   |192.168.1.22|   6667|  10740|              10750|            10760|
++------+----------+-------+---------------+------------+-------------------+------------+-------+-------+-------------------+-----------------+
+Total line number = 6
+It costs 0.012s
 ```
-# Remove the ConfigNode with confignode_id
-confignode\sbin\remove-confignode.bat <confignode_id>
 
-# Remove the ConfigNode with address:port
-confignode\sbin\remove-confignode.bat <internal_address>:<internal_port>
-```
+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 DataNode
+## 6.4 Stop 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.
+This section describes how to manually shut down the ConfigNode or DataNode process of the IoTDB.
 
-Remove on Linux:
-```
-# Remove the DataNode with datanode_id
-bash ./datanode/sbin/remove-datanode.sh <datanode_id>
+### 6.4.1 Stop ConfigNode by script
 
-# Remove the DataNode with rpc address:port
-bash ./datanode/sbin/remove-datanode.sh <rpc_address>:<rpc_port>
-```
+Run the stop ConfigNode script:
 
-Remove on Windows:
 ```
-# Remove the DataNode with datanode_id
-datanode\sbin\remove-datanode.bat <datanode_id>
+# Linux
+./sbin/stop-confignode.sh
 
-# Remove the DataNode with rpc address:port
-datanode\sbin\remove-datanode.bat <rpc_address>:<rpc_port>
+# Windows
+.\sbin\stop-confignode.bat
 ```
 
-## Quick Start
+### 6.4.2 Stop DataNode by script
+
+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/FAQ-for-cluster-setup.html)
diff --git a/docs/UserGuide/Edge-Cloud-Collaboration/Sync-Tool.md b/docs/UserGuide/Edge-Cloud-Collaboration/Sync-Tool.md
index e2a0162663..2214646b59 100644
--- a/docs/UserGuide/Edge-Cloud-Collaboration/Sync-Tool.md
+++ b/docs/UserGuide/Edge-Cloud-Collaboration/Sync-Tool.md
@@ -358,16 +358,16 @@ It costs 0.134s
 - Execute `CREATE PIPE p to demo`  get message  `PIPE [p] is STOP, please retry after drop it.`
   - Cause by: Current Pipe already exists
   - Solution: Execute `DROP PIPE p` to drop Pipe and recreate it.
-- Execute `CREATE PIPE p to demo` get message  `Fail to create PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:9005)}.`
+- Execute `CREATE PIPE p to demo` get message  `Fail to create PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:10732)}.`
   - Cause by: There are some DataNodes with the status Running cannot be connected.
   - Solution: Execute `SHOW DATANODES`, and check for unreachable DataNode networks, or wait for their status to change to Unknown and re-execute the statement.
-- Execute `START PIPE p`  get message  `Fail to start PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:9005)}.`
+- Execute `START PIPE p`  get message  `Fail to start PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:10732)}.`
   - Cause by: There are some DataNodes with the status Running cannot be connected.
   - Solution: Execute `SHOW DATANODES`, and check for unreachable DataNode networks, or wait for their status to change to Unknown and re-execute the statement.
-- Execute `STOP PIPE p`  get message  `Fail to stop PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:9005)}.`
+- Execute `STOP PIPE p`  get message  `Fail to stop PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:10732)}.`
   - Cause by: There are some DataNodes with the status Running cannot be connected.
   - Solution: Execute `SHOW DATANODES`, and check for unreachable DataNode networks, or wait for their status to change to Unknown and re-execute the statement.
-- Execute `DROP PIPE p`  get message  `Fail to DROP_PIPE because Fail to drop PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:9005)}. Please execute [DROP PIPE p] later to retry.`
+- Execute `DROP PIPE p`  get message  `Fail to DROP_PIPE because Fail to drop PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:10732)}. Please execute [DROP PIPE p] later to retry.`
   - Cause by: There are some DataNodes with the status Running cannot be connected. Pipe has been deleted on some nodes and the status has been set to ***DROP***.
   - Solution: Execute `SHOW DATANODES`, and check for unreachable DataNode networks, or wait for their status to change to Unknown and re-execute the statement.
 - Sync.log prompts `org.apache.iotdb.commons.exception.IoTDBException: root.** already been created as database`
diff --git a/docs/UserGuide/QuickStart/ClusterQuickStart.md b/docs/UserGuide/QuickStart/ClusterQuickStart.md
new file mode 100644
index 0000000000..21d19dce45
--- /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|MppPort |SchemaConsensusPort|DataConsensusPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+--------+-------------------+-----------------+
+|     0|ConfigNode|Running|      127.0.0.1|       10710|              10720|          |       |        |                   |                 |
+|     1|  DataNode|Running|      127.0.0.1|       10730|                   | 127.0.0.1|   6667|   10740|              10750|            10760|
++------+----------+-------+---------------+------------+-------------------+----------+-------+--------+-------------------+-----------------+
+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             | 10711           |
+| cn\_consensus\_port            | 10721           |
+| cn\_target\_config\_node\_list | 127.0.0.1:10710 |
+
++ 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                  | 10731           |
+| dn\_mpp\_data\_exchange\_port       | 10741           |
+| dn\_schema\_region\_consensus\_port | 10751           |
+| dn\_data\_region\_consensus\_port   | 10761           |
+| dn\_target\_config\_node\_list      | 127.0.0.1:10710 |
+
+For folder cluster2:
+
++ Modify ConfigNode configurations:
+
+| **configuration item**         | **value**       |
+|--------------------------------|-----------------|
+| cn\_internal\_address          | 127.0.0.1       |
+| cn\_internal\_port             | 10712           |
+| cn\_consensus\_port            | 10722           |
+| cn\_target\_config\_node\_list | 127.0.0.1:10710 |
+
++ 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                     | 10732           |
+| dn\_mpp\_data\_exchange\_port          | 10742           |
+| dn\_schema\_region\_consensus\_port    | 10752           |
+| dn\_data\_region\_consensus\_port      | 10762           |
+| dn\_target\_config\_node\_list         | 127.0.0.1:10710 |
+
+### 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|MppPort|SchemaConsensusPort|DataConsensusPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+|     0|ConfigNode|Running|      127.0.0.1|       10710|              10720|          |       |       |                   |                 |
+|     2|ConfigNode|Running|      127.0.0.1|       10711|              10721|          |       |       |                   |                 |
+|     3|ConfigNode|Running|      127.0.0.1|       10712|              10722|          |       |       |                   |                 |
+|     1|  DataNode|Running|      127.0.0.1|       10730|                   | 127.0.0.1|   6667|  10740|              10750|            10760|
+|     4|  DataNode|Running|      127.0.0.1|       10731|                   | 127.0.0.1|   6668|  10741|              10751|            10761|
+|     5|  DataNode|Running|      127.0.0.1|       10732|                   | 127.0.0.1|   6669|  10742|              10752|            10762|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+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:10711
+
+# 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|MppPort|SchemaConsensusPort|DataConsensusPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+|     0|ConfigNode|Running|      127.0.0.1|       10710|              10720|          |       |       |                   |                 |
+|     3|ConfigNode|Running|      127.0.0.1|       10712|              10722|          |       |       |                   |                 |
+|     1|  DataNode|Running|      127.0.0.1|       10730|                   | 127.0.0.1|   6667|  10740|              10750|            10760|
+|     5|  DataNode|Running|      127.0.0.1|       10732|                   | 127.0.0.1|   6669|  10742|              10752|            10762|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+Total line number = 4
+It costs 0.005s
+```
\ No newline at end of file
diff --git a/docs/UserGuide/QuickStart/WayToGetIoTDB.md b/docs/UserGuide/QuickStart/WayToGetIoTDB.md
index 56b1263ee9..9ec68b8048 100644
--- a/docs/UserGuide/QuickStart/WayToGetIoTDB.md
+++ b/docs/UserGuide/QuickStart/WayToGetIoTDB.md
@@ -73,7 +73,7 @@ If you would like to build the IoTDB server, you can run the following command u
 > mvn clean package -pl server -am -DskipTests
 ```
 
-After build, the IoTDB server will be at the folder "server/target/iotdb-server-{project.version}". 
+After build, the IoTDB server will be at the folder "server/target/iotdb-server-{project.version}".
 
 If you would like to build a module, you can execute command `mvn clean package -pl {module.name} -am -DskipTests` under the root path of IoTDB.
 If you need the jar with dependencies, you can add parameter `-P get-jar-with-dependencies` after the command. E.g., If you need the jar of jdbc with dependencies, you can execute this command:
@@ -84,67 +84,119 @@ If you need the jar with dependencies, you can add parameter `-P get-jar-with-de
 
 Then you can find it under the path `{module.name}/target`.
 
-### Installation by Docker (Dockerfile)
-
-Apache IoTDB' Docker image is released on [https://hub.docker.com/r/apache/iotdb](https://hub.docker.com/r/apache/iotdb),
-
-
-1. **Get IoTDB docker image**
-   - **Recommended:** Using `docker pull apache/iotdb:latest` can get the latest docker image.
-   - Users can also build a docker image themselves. Now a Dockerfile has been written at docker/src/main/Dockerfile.
-     - Way 1: `$ docker build -t iotdb:base git://github.com/apache/iotdb#master:docker`
-     - Way 2: 
-     ```shell
-      $ git clone https://github.com/apache/iotdb
-      $ cd iotdb
-      $ cd docker
-      $ docker build -t iotdb:base .
-		```
-
-Once the docker image has been built locally (the tag is iotdb:base in this example), you are almost done!
-
-2. **Create docker volume for data files and logs:**
+### Installation by Docker
+Apache IoTDB' Docker image is released on [https://hub.docker.com/r/apache/iotdb](https://hub.docker.com/r/apache/iotdb)
+Add environments of docker to update the configurations of Apache IoTDB.
+#### Have a try
 ```shell
-$ docker volume create mydata
-$ docker volume create mylogs
-```
-3. **Run a docker container:**
+# get IoTDB official image
+docker pull apache/iotdb:1.0.0-standalone
+# create docker bridge network
+docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb
+# create docker container
+docker run -d --name iotdb-service \
+              --hostname iotdb-service \
+              --network iotdb \
+              --ip 172.18.0.6 \
+              -p 6667:6667 \
+              -e cn_internal_address=iotdb-service \
+              -e cn_target_config_node_list=iotdb-service:22277 \
+              -e dn_rpc_address=iotdb-service \
+              -e dn_internal_address=iotdb-service \
+              -e dn_target_config_node_list=iotdb-service:22277 \
+              apache/iotdb:1.0.0-standalone              
+# execute SQL
+docker exec -ti iotdb-service /iotdb/sbin/start-cli.sh -h iotdb-service
+```
+External access:
 ```shell
-$ docker run -p 6667:6667 -v mydata:/iotdb/data -v mylogs:/iotdb/logs -d iotdb:base /iotdb/bin/start-server.sh
-```
-If success, you can run `docker ps`, and get something like the following:
-```
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
-2a68b6944cb5        iotdb:base          "/iotdb/bin/start-se…"   4 minutes ago       Up 5 minutes        0.0.0.0:6667->6667/tcp              laughing_meitner
-```
-You can use the above command to get the container ID:
-```shell
-$ docker container ls
-```
-suppose the ID is <C_ID>.
-
-And get the docker IP by the following, suppose the IP is <C_IP>.:
-```shell
-$ docker inspect --format='{{.NetworkSettings.IPAddress}}' <C_ID>
-```
-Now IoTDB server has started succesfully.
-
-4. If you just want to have a try by using iotdb-cli, you can:
-```shell
-$ docker exec -it <C_ID> /bin/bash
-$ (now you have enter the container): /iotdb/sbin/start-cli.sh -h localhost -p 6667 -u root -pw root
-```
-
-Or, if you have an iotdb-cli locally, execute the following command: 
-```shell
-$ /%IOTDB_HOME%/sbin/start-cli.sh -h localhost -p 6667 -u root -pw root
-```
-5. If you want to write codes to insert data and query data, please add the following dependencies:
-```xml
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-jdbc</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-```
-Some examples about how to use IoTDB with IoTDB-JDBC can be found at: https://github.com/apache/iotdb/tree/master/example/jdbc/src/main/java/org/apache/iotdb
+# <IP Address/hostname> is the real IP or domain address rather than the one in docker network, could be 127.0.0.1 within the computer.
+$IOTDB_HOME/sbin/start-cli.sh -h <IP Address/hostname> -p 6667
+```
+Notice:The confignode service would fail when restarting this container if the IP Adress of the container has been changed.
+```yaml
+# docker-compose-1c1d.yml
+version: "3"
+services:
+  iotdb-service:
+    image: apache/iotdb:1.0.0-standalone
+    hostname: iotdb-service
+    container_name: iotdb-service
+    ports:
+      - "6667:6667"
+    environment:
+      - cn_internal_address=iotdb-service
+      - cn_target_config_node_list=iotdb-service:22277
+      - dn_rpc_address=iotdb-service
+      - dn_internal_address=iotdb-service
+      - dn_target_config_node_list=iotdb-service:22277
+    volumes:
+      - ./data:/iotdb/data
+      - ./logs:/iotdb/logs
+    networks:
+      iotdb:
+        ipv4_address: 172.18.0.6
+
+networks:
+  iotdb:
+    external: true
+```
+#### deploy cluster
+Until now, we support host and overlay networks but haven't supported bridge networks on multiple computers.
+Overlay networks see [1C2D](https://github.com/apache/iotdb/tree/master/docker/src/main/DockerCompose/docker-compose-cluster-1c2d.yml) and here are the configurations and operation steps to start an IoTDB cluster with docker using host networks。
+
+Suppose that there are three computers of iotdb-1, iotdb-2 and iotdb-3. We called them nodes.
+Here is the docker-compose file of iotdb-2, as the sample:
+```yaml
+version: "3"
+services:
+  iotdb-confignode:
+    image: apache/iotdb:1.0.0-confignode
+    container_name: iotdb-confignode
+    ports:
+      - "22277:22277"
+      - "22278:22278"
+    environment:
+      - cn_internal_address=iotdb-2
+      - cn_target_config_node_list=iotdb-1:22277
+      - schema_replication_factor=3
+      - schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
+      - config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
+      - data_replication_factor=3
+      - data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
+    volumes:
+      - /etc/hosts:/etc/hosts:ro
+      - ./data/confignode:/iotdb/data
+      - ./logs/confignode:/iotdb/logs
+    network_mode: "host"
+
+  iotdb-datanode:
+    image: apache/iotdb:1.0.0-datanode
+    container_name: iotdb-datanode
+    ports:
+      - "6667:6667"
+      - "8777:8777"
+      - "9003:9003"
+      - "50010:50010"
+      - "40010:40010"
+    environment:
+      - dn_rpc_address=iotdb-2
+      - dn_internal_address=iotdb-2
+      - dn_target_config_node_list=iotdb-1:22277
+      - data_replication_factor=3
+      - data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
+        - schema_replication_factor=3
+      - schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
+      - config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
+    volumes:
+      - /etc/hosts:/etc/hosts:ro
+      - ./data/datanode:/iotdb/data/
+      - ./logs/datanode:/iotdb/logs/
+    network_mode: "host"
+```
+Notice:
+1. The `dn_target_config_node_list` of three nodes must the same and it is the first starting node of `iotdb-1` with the cn_internal_port of 22277。
+2. In this docker-compose file,`iotdb-2` should be replace with the real IP or hostname of each node to generate docker compose files in the other nodes.
+3. The services would talk with each other, so they need map the /etc/hosts file or add the `extra_hosts` to the docker compose file.
+4. We must start the IoTDB services of `iotdb-1` first at the first time of starting.
+5. Stop and remove all the IoTDB services and clean up the `data` and `logs` directories of the 3 nodes,then start the cluster again.
diff --git a/docs/UserGuide/Reference/ConfigNode-Config-Manual.md b/docs/UserGuide/Reference/ConfigNode-Config-Manual.md
index 261f8545a1..8f300afbc1 100644
--- a/docs/UserGuide/Reference/ConfigNode-Config-Manual.md
+++ b/docs/UserGuide/Reference/ConfigNode-Config-Manual.md
@@ -82,7 +82,7 @@ The global configuration of cluster is in ConfigNode.
 |:---:|:---|
 |Description| ConfigNode internal service port|
 |Type| Short Int : [0,65535] |
-|Default| 22277 |
+|Default| 10710 |
 |Effective|After restarting system|
 
 ### Consensus
@@ -93,7 +93,7 @@ The global configuration of cluster is in ConfigNode.
 |:---:|:---|
 |Description| ConfigNode data Consensus Port  |
 |Type| Short Int : [0,65535] |
-|Default| 22278 |
+|Default| 10720 |
 |Effective|After restarting system|
 
 ### Target Config Nodes
@@ -104,7 +104,7 @@ The global configuration of cluster is in ConfigNode.
 |:---:|:----------------------------------------------------------------------|
 |Description| Target ConfigNode address, for current ConfigNode to join the cluster |
 |Type| String                                                                |
-|Default| 127.0.0.1:22277                                                       |
+|Default| 127.0.0.1:10710                                                       |
 |Effective| After restarting system                                               |
 
 ### Directory configuration
diff --git a/docs/UserGuide/Reference/DataNode-Config-Manual.md b/docs/UserGuide/Reference/DataNode-Config-Manual.md
index 267b79cbbc..34dd38a75e 100644
--- a/docs/UserGuide/Reference/DataNode-Config-Manual.md
+++ b/docs/UserGuide/Reference/DataNode-Config-Manual.md
@@ -139,7 +139,7 @@ The permission definitions are in ${IOTDB\_CONF}/conf/jmx.access.
 |:---:|:-------------------------------|
 |Description| DataNode internal service port |
 |Type| int                            |
-|Default| 9003                           |
+|Default| 10730                           |
 |Effective| After restarting system        |
 
 * dn\_mpp\_data\_exchange\_port
@@ -148,7 +148,7 @@ The permission definitions are in ${IOTDB\_CONF}/conf/jmx.access.
 |:---:|:---|
 |Description| MPP data exchange port |
 |Type| int |
-|Default| 8777 |
+|Default| 10740 |
 |Effective|After restarting system|
 
 * dn\_schema\_region\_consensus\_port
@@ -157,7 +157,7 @@ The permission definitions are in ${IOTDB\_CONF}/conf/jmx.access.
 |:---:|:---|
 |Description| DataNode Schema replica communication port for consensus |
 |Type| int |
-|Default| 50010 |
+|Default| 10750 |
 |Effective|After restarting system|
 
 * dn\_data\_region\_consensus\_port
@@ -166,7 +166,7 @@ The permission definitions are in ${IOTDB\_CONF}/conf/jmx.access.
 |:---:|:---|
 |Description| DataNode Data replica communication port for consensus |
 |Type| int |
-|Default| 40010 |
+|Default| 10760 |
 |Effective|After restarting system|
 
 * dn\_join\_cluster\_retry\_interval\_ms
@@ -186,7 +186,7 @@ The permission definitions are in ${IOTDB\_CONF}/conf/jmx.access.
 |:---:|:------------------------------------------------|
 |Description| ConfigNode Address for DataNode to join cluster |
 |Type| String                                          |
-|Default| 127.0.0.1:22277                                 |
+|Default| 127.0.0.1:10710                                 |
 |Effective| After restarting system                         |
 
 ### Connection Configuration
diff --git a/docs/zh/UserGuide/Cluster/Cluster-Maintenance.md b/docs/zh/UserGuide/Cluster/Cluster-Maintenance.md
index 9f38f681fc..a55a94ac75 100644
--- a/docs/zh/UserGuide/Cluster/Cluster-Maintenance.md
+++ b/docs/zh/UserGuide/Cluster/Cluster-Maintenance.md
@@ -69,9 +69,9 @@ IoTDB> show confignodes
 +------+-------+---------------+------------+--------+
 |NodeID| Status|InternalAddress|InternalPort|    Role|
 +------+-------+---------------+------------+--------+
-|     0|Running|      127.0.0.1|       22277|  Leader|
-|     1|Running|      127.0.0.1|       22279|Follower|
-|     2|Running|      127.0.0.1|       22281|Follower|
+|     0|Running|      127.0.0.1|       10710|  Leader|
+|     1|Running|      127.0.0.1|       10711|Follower|
+|     2|Running|      127.0.0.1|       10712|Follower|
 +------+-------+---------------+------------+--------+
 Total line number = 3
 It costs 0.030s
@@ -146,12 +146,12 @@ IoTDB> show cluster
 +------+----------+-------+---------------+------------+
 |NodeID|  NodeType| Status|InternalAddress|InternalPort|
 +------+----------+-------+---------------+------------+
-|     0|ConfigNode|Running|      127.0.0.1|       22277|
-|     1|ConfigNode|Running|      127.0.0.1|       22279|
-|     2|ConfigNode|Running|      127.0.0.1|       22281|
-|     3|  DataNode|Running|      127.0.0.1|        9003|
-|     4|  DataNode|Running|      127.0.0.1|        9005|
-|     5|  DataNode|Running|      127.0.0.1|        9007|
+|     0|ConfigNode|Running|      127.0.0.1|       10710|
+|     1|ConfigNode|Running|      127.0.0.1|       10711|
+|     2|ConfigNode|Running|      127.0.0.1|       10712|
+|     3|  DataNode|Running|      127.0.0.1|       10730|
+|     4|  DataNode|Running|      127.0.0.1|       10731|
+|     5|  DataNode|Running|      127.0.0.1|       10732|
 +------+----------+-------+---------------+------------+
 Total line number = 6
 It costs 0.011s
@@ -163,12 +163,12 @@ IoTDB> show cluster
 +------+----------+-------+---------------+------------+
 |NodeID|  NodeType| Status|InternalAddress|InternalPort|
 +------+----------+-------+---------------+------------+
-|     0|ConfigNode|Running|      127.0.0.1|       22277|
-|     1|ConfigNode|Unknown|      127.0.0.1|       22279|
-|     2|ConfigNode|Running|      127.0.0.1|       22281|
-|     3|  DataNode|Running|      127.0.0.1|        9003|
-|     4|  DataNode|Running|      127.0.0.1|        9005|
-|     5|  DataNode|Running|      127.0.0.1|        9007|
+|     0|ConfigNode|Running|      127.0.0.1|       10710|
+|     1|ConfigNode|Unknown|      127.0.0.1|       10711|
+|     2|ConfigNode|Running|      127.0.0.1|       10712|
+|     3|  DataNode|Running|      127.0.0.1|       10730|
+|     4|  DataNode|Running|      127.0.0.1|       10731|
+|     5|  DataNode|Running|      127.0.0.1|       10732|
 +------+----------+-------+---------------+------------+
 Total line number = 6
 It costs 0.012s
@@ -182,16 +182,16 @@ 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|          |       |                 |                   |       |
-|     1|ConfigNode|Running|      127.0.0.1|       22279|              22280|          |       |                 |                   |       |
-|     2|ConfigNode|Running|      127.0.0.1|       22281|              22282|          |       |                 |                   |       |
-|     3|  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|
-+------+----------+-------+---------------+------------+-------------------+----------+-------+-----------------+-------------------+-------+
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|RpcAddress|RpcPort|MppPort|SchemaConsensusPort|DataConsensusPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+|     0|ConfigNode|Running|      127.0.0.1|       10710|              10720|          |       |       |                   |                 |
+|     1|ConfigNode|Running|      127.0.0.1|       10711|              10721|          |       |       |                   |                 |
+|     2|ConfigNode|Running|      127.0.0.1|       10712|              10722|          |       |       |                   |                 |
+|     3|  DataNode|Running|      127.0.0.1|       10730|                   | 127.0.0.1|   6667|  10740|              10750|            10760|
+|     4|  DataNode|Running|      127.0.0.1|       10731|                   | 127.0.0.1|   6668|  10741|              10751|            10761|
+|     5|  DataNode|Running|      127.0.0.1|       10732|                   | 127.0.0.1|   6669|  10742|              10752|            10762|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
 Total line number = 6
 It costs 0.340s
 ```
diff --git a/docs/zh/UserGuide/Cluster/Cluster-Setup.md b/docs/zh/UserGuide/Cluster/Cluster-Setup.md
index 461c28cd77..3800b0ecf2 100644
--- a/docs/zh/UserGuide/Cluster/Cluster-Setup.md
+++ b/docs/zh/UserGuide/Cluster/Cluster-Setup.md
@@ -19,404 +19,386 @@
 
 -->
 
-## 集群设置
+# 1. 目标
 
-本文档为 IoTDB 集群版(1.0.0)启动教程。
+本文档为 IoTDB 集群版(1.0.0)的安装及启动教程。
 
-## 安装环境
+# 2. 前置检查
 
 1. JDK>=1.8 的运行环境,并配置好 JAVA_HOME 环境变量。
-
 2. 设置最大文件打开数为 65535。
-
 3. 关闭交换内存。
+4. 首次启动ConfigNode节点时,确保已清空ConfigNode节点的data/confignode目录;首次启动DataNode节点时,确保已清空DataNode节点的data/datanode目录。
+5. 如果整个集群处在可信环境下,可以关闭机器上的防火墙选项。
+6. 在集群默认配置中,ConfigNode 会占用端口 10710 和 10720,DataNode 会占用端口 6667、10730、10740、10750 和 10760,
+   请确保这些端口未被占用,或者手动修改配置文件中的端口配置。
 
-## 安装包获取
-
-### 下载
+# 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 在集群内部通讯使用的端口              | 10710           | 设置为任意未占用端口                                                                                                                                           |
+| cn\_consensus\_port            | ConfigNode 副本组共识协议通信使用的端口            | 10720           | 设置为任意未占用端口                                                                                                                                           |
+| cn\_target\_config\_node\_list | 节点注册加入集群时连接的 ConfigNode 的地址。注:只能配置一个 | 127.0.0.1:10710 | 对于 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 在集群内部接收控制流使用的端口  | 10730            | 设置为任意未占用端口                                                                        |
+| dn\_mpp\_data\_exchange\_port       | DataNode 在集群内部接收数据流使用的端口  | 10740            | 设置为任意未占用端口                                                                        |
+| dn\_data\_region\_consensus\_port   | DataNode 的数据副本间共识协议通信的端口  | 10750           | 设置为任意未占用端口                                                                        |
+| dn\_schema\_region\_consensus\_port | DataNode 的元数据副本间共识协议通信的端口 | 10760           | 设置为任意未占用端口                                                                        |
+| dn\_target\_config\_node\_list      | 集群中正在运行的 ConfigNode 地址    | 127.0.0.1:10710 | 设置为任意正在运行的 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
+# Windows
+.\sbin\start-confignode.bat
 ```
-Linux 停止方式:
-```
-bash sbin/stop-standalone.sh
-```
-注意: 在 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
 
-# 根据 ConfigNode 内部通讯地址和端口移除节点
-./sbin/remove-confignode.sh <internal_address>:<internal_port>
-```
+# Linux 后台启动
+nohup bash ./sbin/start-confignode.sh >/dev/null 2>&1 &
 
-Windows 移除方式:
+# Windows
+.\sbin\start-confignode.bat
 ```
-# 根据 confignode_id 移除节点
-sbin\remove-confignode.bat <confignode_id>
 
-# 根据 ConfigNode 内部通讯地址和端口移除节点
-sbin\remove-confignode.bat <internal_address>:<internal_port>
-```
+ConfigNode 的其它配置参数可参考
+[ConfigNode配置参数](https://iotdb.apache.org/zh/UserGuide/Master/Reference/ConfigNode-Config-Manual.html)。
 
-### 移除 DataNode
+### 6.1.3 增加 DataNode
 
-需要在活跃的 DataNode 上执行 remove-datanode 脚本,且保证移除后集群中至少有不少于(数据/元数据)副本个数 的 DataNode。
+**确保集群已有正在运行的 ConfigNode 后,才能开始增加 DataNode。**
 
-Linux 移除方式:
+可以向集群中添加任意个 DataNode。
+在添加新的 DataNode 前,请打开它的配置文件 ./conf/iotdb-datanode.properties 并检查以下参数:
 
-```
-# 根据 datanode_id 移除节点
-./sbin/remove-datanode.sh <datanode_id>
+| **配置项**                             | **检查**                                                    |
+|-------------------------------------|-----------------------------------------------------------|
+| 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 的内部通讯地址 |
+
+检查完毕后,即可在服务器上运行启动脚本:
 
-# 根据 DataNode RPC 服务地址和端口移除节点
-./sbin/remove-datanode.sh <rpc_address>:<rpc_port>
 ```
+# Linux 前台启动
+bash ./sbin/start-datanode.sh
 
-Windows 移除方式:
+# Linux 后台启动
+nohup bash ./sbin/start-datanode.sh >/dev/null 2>&1 &
 
+# Windows
+.\sbin\start-datanode.bat
 ```
-# 根据 datanode_id 移除节点
-sbin\remove-datanode.bat <datanode_id>
 
-# 根据 DataNode RPC 服务地址和端口移除节点
-sbin\remove-datanode.bat <rpc_address>:<rpc_port>
+DataNode 的其它配置参数可参考
+[DataNode配置参数](https://iotdb.apache.org/zh/UserGuide/Master/Reference/DataNode-Config-Manual.html)。
+
+**注意:当且仅当集群拥有不少于副本个数(max{schema\_replication\_factor, data\_replication\_factor})的 DataNode 后,集群才可以提供服务**
+
+## 6.2 启动 Cli
+
+若搭建的集群仅用于本地调试,可直接执行 ./sbin 目录下的 Cli 启动脚本:
+
 ```
+# Linux
+./sbin/start-cli.sh
 
-## 快速上手
+# Windows
+.\sbin\start-cli.bat
+```
 
-以本地环境为例,演示 IoTDB 集群的启动、扩容与缩容:
+若希望通过 Cli 连接生产环境的集群,
+请阅读 [Cli 使用手册](https://iotdb.apache.org/zh/UserGuide/Master/QuickStart/Command-Line-Interface.html)。
 
-### 1. 准备启动环境
+## 6.3 验证集群
 
-解压 apache-iotdb-1.0.0-all-bin.zip 至 cluster0 目录。
+以在6台服务器上启动的3C3D(3个ConfigNode 和 3个DataNode)集群为例,
+这里假设3个ConfigNode的IP地址依次为192.168.1.10、192.168.1.11、192.168.1.12,且3个ConfigNode启动时均使用了默认的端口10710与10720;
+3个DataNode的IP地址依次为192.168.1.20、192.168.1.21、192.168.1.22,且3个DataNode启动时均使用了默认的端口6667、10730、10740、10750与10760。
 
-### 2. 启动最小集群
+当按照6.1步骤成功启动集群后,在 Cli 执行 `show cluster details`,看到的结果应当如下:
 
-在 Linux 环境中,部署 1 个 ConfigNode 和 1 个 DataNode(1C1D)集群版,默认 1 副本:
 ```
-./cluster0/sbin/start-confignode.sh
-./cluster0/sbin/start-datanode.sh
+IoTDB> show cluster details
++------+----------+-------+---------------+------------+-------------------+------------+-------+-------+-------------------+-----------------+
+|NodeID|  NodeType| Status|InternalAddress|InternalPort|ConfigConsensusPort|  RpcAddress|RpcPort|MppPort|SchemaConsensusPort|DataConsensusPort|
++------+----------+-------+---------------+------------+-------------------+------------+-------+-------+-------------------+-----------------+
+|     0|ConfigNode|Running|   192.168.1.10|       10710|              10720|            |       |       |                   |                 |
+|     2|ConfigNode|Running|   192.168.1.11|       10710|              10720|            |       |       |                   |                 |
+|     3|ConfigNode|Running|   192.168.1.12|       10710|              10720|            |       |       |                   |                 |
+|     1|  DataNode|Running|   192.168.1.20|       10730|                   |192.168.1.20|   6667|  10740|              10750|            10760|
+|     4|  DataNode|Running|   192.168.1.21|       10730|                   |192.168.1.21|   6667|  10740|              10750|            10760|
+|     5|  DataNode|Running|   192.168.1.22|       10730|                   |192.168.1.22|   6667|  10740|              10750|            10760|
++------+----------+-------+---------------+------------+-------------------+------------+-------+-------+-------------------+-----------------+
+Total line number = 6
+It costs 0.012s
 ```
 
-### 3. 验证最小集群
+若所有节点的状态均为 **Running**,则说明集群部署成功;
+否则,请阅读启动失败节点的运行日志,并检查对应的配置参数。
+
+## 6.4 停止 IoTDB 进程
+
+本小节描述如何手动关闭 IoTDB 的 ConfigNode 或 DataNode 进程。
+
+### 6.4.1 使用脚本停止 ConfigNode
+
+执行停止 ConfigNode 脚本:
 
-+ 最小集群启动成功,启动 Cli 进行验证:
 ```
-./cluster0/sbin/start-cli.sh
+# Linux
+./sbin/stop-confignode.sh
+
+# Windows
+.\sbin\stop-confignode.bat
 ```
 
-+ 在 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) 
-指令,结果如下所示:
+### 6.4.2 使用脚本停止 DataNode
+
+执行停止 DataNode 脚本:
+
 ```
-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. 常见问题
+
+请参考 [分布式部署FAQ](https://iotdb.apache.org/zh/UserGuide/Master/FAQ/FAQ-for-cluster-setup.html)
\ No newline at end of file
diff --git a/docs/zh/UserGuide/Edge-Cloud-Collaboration/Sync-Tool.md b/docs/zh/UserGuide/Edge-Cloud-Collaboration/Sync-Tool.md
index c269441b21..38e3977c6d 100644
--- a/docs/zh/UserGuide/Edge-Cloud-Collaboration/Sync-Tool.md
+++ b/docs/zh/UserGuide/Edge-Cloud-Collaboration/Sync-Tool.md
@@ -345,16 +345,16 @@ It costs 0.134s
 - 执行 `CREATE PIPE p to demo` 提示 `PIPE [p] is STOP, please retry after drop it.`
   - 原因:当前 Pipe 已存在
   - 解决方案:删除 Pipe 后重新创建
-- 执行 `CREATE PIPE p to demo`提示 `Fail to create PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:9005)}.`
+- 执行 `CREATE PIPE p to demo`提示 `Fail to create PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:10732)}.`
   - 原因:存在状态为 Running 的 DataNode 无法连通
   - 解决方案:执行 `SHOW DATANODES` 语句,检查无法连通的 DataNode 网络,或等待其状态变为 Unknown 后重新执行语句。
-- 执行 `START PIPE p` 提示 `Fail to start PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:9005)}.`
+- 执行 `START PIPE p` 提示 `Fail to start PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:10732)}.`
   - 原因:存在状态为 Running 的 DataNode 无法连通
   - 解决方案:执行 `SHOW DATANODES` 语句,检查无法连通的 DataNode 网络,或等待其状态变为 Unknown 后重新执行语句。
-- 执行 `STOP PIPE p` 提示 `Fail to stop PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:9005)}.`
+- 执行 `STOP PIPE p` 提示 `Fail to stop PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:10732)}.`
   - 原因:存在状态为 Running 的 DataNode 无法连通
   - 解决方案:执行 `SHOW DATANODES` 语句,检查无法连通的 DataNode 网络,或等待其状态变为 Unknown 后重新执行语句。
-- 执行 `DROP PIPE p` 提示 `Fail to DROP_PIPE because Fail to drop PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:9005)}. Please execute [DROP PIPE p] later to retry.`
+- 执行 `DROP PIPE p` 提示 `Fail to DROP_PIPE because Fail to drop PIPE [p] because Connection refused on DataNode: {id=2, internalEndPoint=TEndPoint(ip:127.0.0.1, port:10732)}. Please execute [DROP PIPE p] later to retry.`
   - 原因:存在状态为 Running 的 DataNode 无法连通,Pipe 已在部分节点上被删除,状态被置为 ***DROP***。
   - 解决方案:执行 `SHOW DATANODES` 语句,检查无法连通的 DataNode 网络,或等待其状态变为 Unknown 后重新执行语句。
 - 运行时日志提示 `org.apache.iotdb.commons.exception.IoTDBException: root.** already been created as database`
diff --git a/docs/zh/UserGuide/QuickStart/ClusterQuickStart.md b/docs/zh/UserGuide/QuickStart/ClusterQuickStart.md
new file mode 100644
index 0000000000..35e543c52f
--- /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|MppPort |SchemaConsensusPort|DataConsensusPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+--------+-------------------+-----------------+
+|     0|ConfigNode|Running|      127.0.0.1|       10710|              10720|          |       |        |                   |                 |
+|     1|  DataNode|Running|      127.0.0.1|       10730|                   | 127.0.0.1|   6667|   10740|              10750|            10760|
++------+----------+-------+---------------+------------+-------------------+----------+-------+--------+-------------------+-----------------+
+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             | 10711           |
+| cn\_consensus\_port            | 10721           |
+| cn\_target\_config\_node\_list | 127.0.0.1:10710 |
+
++ 修改 DataNode 配置:
+
+| **配置项**                                | **值**           |
+|----------------------------------------|-----------------|
+| dn\_rpc\_address                       | 127.0.0.1       |
+| dn\_rpc\_port                          | 6668            |
+| dn\_internal\_address                  | 127.0.0.1       |
+| dn\_internal\_port                     | 10731           |
+| dn\_mpp\_data\_exchange\_port          | 10741           |
+| dn\_schema\_region\_consensus\_port    | 10751           |
+| dn\_data\_region\_consensus\_port      | 10761           |
+| dn\_target\_config\_node\_list         | 127.0.0.1:10710 |
+
+对于 cluster2 目录:
+
++ 修改 ConfigNode 配置:
+
+| **配置项**                        | **值**           |
+|--------------------------------|-----------------|
+| cn\_internal\_address          | 127.0.0.1       |
+| cn\_internal\_port             | 10712           |
+| cn\_consensus\_port            | 10722           |
+| cn\_target\_config\_node\_list | 127.0.0.1:10710 |
+
++ 修改 DataNode 配置:
+
+| **配置项**                              | **值**           |
+|--------------------------------------|-----------------|
+| dn\_rpc\_address                     | 127.0.0.1       |
+| dn\_rpc\_port                        | 6669            |
+| dn\_internal\_address                | 127.0.0.1       |
+| dn\_internal\_port                   | 10732           |
+| dn\_mpp\_data\_exchange\_port        | 10742           |
+| dn\_schema\_region\_consensus\_port  | 10752           |
+| dn\_data\_region\_consensus\_port    | 10762           |
+| dn\_target\_config\_node\_list       | 127.0.0.1:10710 |
+
+## 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|MppPort|SchemaConsensusPort|DataConsensusPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+|     0|ConfigNode|Running|      127.0.0.1|       10710|              10720|          |       |       |                   |                 |
+|     2|ConfigNode|Running|      127.0.0.1|       10711|              10721|          |       |       |                   |                 |
+|     3|ConfigNode|Running|      127.0.0.1|       10712|              10722|          |       |       |                   |                 |
+|     1|  DataNode|Running|      127.0.0.1|       10730|                   | 127.0.0.1|   6667|  10740|              10750|            10760|
+|     4|  DataNode|Running|      127.0.0.1|       10731|                   | 127.0.0.1|   6668|  10741|              10751|            10761|
+|     5|  DataNode|Running|      127.0.0.1|       10732|                   | 127.0.0.1|   6669|  10742|              10752|            10762|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+Total line number = 6
+It costs 0.012s
+```
+
+## 8. 集群缩容
+
++ 缩容一个 ConfigNode:
+```
+# 使用 ip:port 移除
+./cluster0/sbin/remove-confignode.sh 127.0.0.1:10711
+
+# 使用节点编号移除
+./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|MppPort|SchemaConsensusPort|DataConsensusPort|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+|     0|ConfigNode|Running|      127.0.0.1|       10710|              10720|          |       |       |                   |                 |
+|     3|ConfigNode|Running|      127.0.0.1|       10712|              10722|          |       |       |                   |                 |
+|     1|  DataNode|Running|      127.0.0.1|       10730|                   | 127.0.0.1|   6667|  10740|              10750|            10760|
+|     5|  DataNode|Running|      127.0.0.1|       10732|                   | 127.0.0.1|   6669|  10742|              10752|            10762|
++------+----------+-------+---------------+------------+-------------------+----------+-------+-------+-------------------+-----------------+
+Total line number = 4
+It costs 0.005s
+```
\ No newline at end of file
diff --git a/docs/zh/UserGuide/QuickStart/WayToGetIoTDB.md b/docs/zh/UserGuide/QuickStart/WayToGetIoTDB.md
index bba974fd34..1ced1d7c30 100644
--- a/docs/zh/UserGuide/QuickStart/WayToGetIoTDB.md
+++ b/docs/zh/UserGuide/QuickStart/WayToGetIoTDB.md
@@ -75,7 +75,7 @@ Shell > unzip iotdb-<version>.zip
 +- tools/      <-- system tools
 ```
 
-如果您想要编译项目中的某个模块,您可以在源码文件夹中使用`mvn clean package -pl {module.name} -am -DskipTests`命令进行编译。如果您需要的是带依赖的 jar 包,您可以在编译命令后面加上`-P get-jar-with-dependencies`参数。比如您想编译带依赖的 jdbc jar 包,您就可以使用以下命令进行编译:  
+如果您想要编译项目中的某个模块,您可以在源码文件夹中使用`mvn clean package -pl {module.name} -am -DskipTests`命令进行编译。如果您需要的是带依赖的 jar 包,您可以在编译命令后面加上`-P get-jar-with-dependencies`参数。比如您想编译带依赖的 jdbc jar 包,您就可以使用以下命令进行编译:
 
 ```shell
 > mvn clean package -pl jdbc -am -DskipTests -P get-jar-with-dependencies
@@ -84,77 +84,120 @@ Shell > unzip iotdb-<version>.zip
 编译完成后就可以在`{module.name}/target`目录中找到需要的包了。
 
 
-### 通过 Docker 安装 (Dockerfile)
+### 通过 Docker 安装
 
-Apache IoTDB 的 Docker 镜像已经上传至 [https://hub.docker.com/r/apache/iotdb](https://hub.docker.com/r/apache/iotdb),
-
-1. **获取 IoTDB docker 镜像**
-
-   - **推荐**:执行 `docker pull apache/iotdb:latest` 即可获取最新的 docker 镜像。
-
-   - 用户也可以根据代码提供的 Dockerfile 文件来自己生成镜像。Dockerfile 存放在的 docker 工程下的 src/main/Dockerfile 中。
-
-     - 方法 1:```$ docker build -t iotdb:base git://github.com/apache/iotdb#master:docker```
-
-     - 方法 2:
-       ```shell
-       $ git clone https://github.com/apache/iotdb
-       $ cd iotdb
-       $ mvn package -DskipTests
-       $ cd docker
-       $ docker build -t iotdb:base .
-       ```
-
-   当 docker image 在本地构建完成的时候 (示例中的 tag 为 iotdb:base),已经距完成只有一步之遥了!
-
-2. **创建数据文件和日志的 docker 挂载目录 (docker volume):**
-```
-$ docker volume create mydata
-$ docker volume create mylogs
-```
-3. **运行 docker 容器:**
+Apache IoTDB 的 Docker 镜像已经上传至 [https://hub.docker.com/r/apache/iotdb](https://hub.docker.com/r/apache/iotdb)。
+Apache IoTDB 的配置项以环境变量形式添加到容器内。
 
+#### 简单尝试
 ```shell
-$ docker run -p 6667:6667 -v mydata:/iotdb/data -v mylogs:/iotdb/logs -d iotdb:base /iotdb/bin/start-server.sh
-```
-您可以使用`docker ps`来检查是否运行成功,当成功时控制台会输出下面的日志:
-```
-CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
-2a68b6944cb5        iotdb:base          "/iotdb/bin/start-se…"   4 minutes ago       Up 5 minutes        0.0.0.0:6667->6667/tcp              laughing_meitner
-```
-您可以使用下面的命令来获取 container 的 ID:
-
+# 获取镜像
+docker pull apache/iotdb:1.0.0-standalone
+# 创建 docker bridge 网络
+docker network create --driver=bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 iotdb
+# 创建 docker 容器
+# 注意:必须固定IP部署。IP改变会导致 confignode 启动失败。
+docker run -d --name iotdb-service \
+              --hostname iotdb-service \
+              --network iotdb \
+              --ip 172.18.0.6 \
+              -p 6667:6667 \
+              -e cn_internal_address=iotdb-service \
+              -e cn_target_config_node_list=iotdb-service:22277 \
+              -e dn_rpc_address=iotdb-service \
+              -e dn_internal_address=iotdb-service \
+              -e dn_target_config_node_list=iotdb-service:22277 \
+              apache/iotdb:1.0.0-standalone              
+# 尝试使用命令行执行SQL
+docker exec -ti iotdb-service /iotdb/sbin/start-cli.sh -h iotdb-service
+```
+外部连接:
 ```shell
-$ docker container ls
-```
-假设这个 ID 为 <C_ID>.
-
-然后使用下面的命令获取这个 ID 对应的 IP 地址,假设获取的 IP 为 <C_IP>:
-
-```shell
-$ docker inspect --format='{{.NetworkSettings.IPAddress}}' <C_ID>
-```
-现在 IoTDB 服务器已经启动成功了。
-
-4. 如果您想尝试使用 iotdb-cli 命令行,您可以使用如下命令:
-
-```shell
-$ docker exec -it <C_ID> /bin/bash
-$ (now you have enter the container): /iotdb/sbin/start-cli.sh -h localhost -p 6667 -u root -pw root
-```
-
-还可以使用本地的 iotdb-cli,执行如下命令:
-
-```shell
-$ /%IOTDB_HOME%/sbin/start-cli.sh -h localhost -p 6667 -u root -pw root
-```
-5. 如果您想写一些代码来插入或者查询数据,您可以在 pom.xml 文件中加入下面的依赖:
-
-```xml
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-jdbc</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-```
-这里是一些使用 IoTDB-JDBC 连接 IoTDB 的示例:https://github.com/apache/iotdb/tree/master/example/jdbc/src/main/java/org/apache/iotdb
+# <主机IP/hostname> 是物理机的真实IP或域名。如果在同一台物理机,可以是127.0.0.1。
+$IOTDB_HOME/sbin/start-cli.sh -h <主机IP/hostname> -p 6667
+```
+```yaml
+# docker-compose-1c1d.yml
+version: "3"
+services:
+  iotdb-service:
+    image: apache/iotdb:1.0.0-standalone
+    hostname: iotdb-service
+    container_name: iotdb-service
+    ports:
+      - "6667:6667"
+    environment:
+      - cn_internal_address=iotdb-service
+      - cn_target_config_node_list=iotdb-service:22277
+      - dn_rpc_address=iotdb-service
+      - dn_internal_address=iotdb-service
+      - dn_target_config_node_list=iotdb-service:22277
+    volumes:
+      - ./data:/iotdb/data
+      - ./logs:/iotdb/logs
+    networks:
+      iotdb:
+        ipv4_address: 172.18.0.6
+
+networks:
+  iotdb:
+    external: true
+```
+#### 集群部署
+目前只支持 host 网络和 overlay 网络,不支持 bridge 网络。overlay 网络参照[1C2D](https://github.com/apache/iotdb/tree/master/docker/src/main/DockerCompose/docker-compose-cluster-1c2d.yml)的写法,host 网络如下。
+
+假如有三台物理机,它们的hostname分别是iotdb-1、iotdb-2、iotdb-3。依次启动。
+以 iotdb-2 节点的docker-compose文件为例:
+```yaml
+version: "3"
+services:
+  iotdb-confignode:
+    image: apache/iotdb:1.0.0-confignode
+    container_name: iotdb-confignode
+    ports:
+      - "22277:22277"
+      - "22278:22278"
+    environment:
+      - cn_internal_address=iotdb-2
+      - cn_target_config_node_list=iotdb-1:22277
+      - schema_replication_factor=3
+      - schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
+      - config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
+      - data_replication_factor=3
+      - data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
+    volumes:
+      - /etc/hosts:/etc/hosts:ro
+      - ./data/confignode:/iotdb/data
+      - ./logs/confignode:/iotdb/logs
+    network_mode: "host"
+
+  iotdb-datanode:
+    image: apache/iotdb:1.0.0-datanode
+    container_name: iotdb-datanode
+    ports:
+      - "6667:6667"
+      - "8777:8777"
+      - "9003:9003"
+      - "50010:50010"
+      - "40010:40010"
+    environment:
+      - dn_rpc_address=iotdb-2
+      - dn_internal_address=iotdb-2
+      - dn_target_config_node_list=iotdb-1:22277
+      - data_replication_factor=3
+      - data_region_consensus_protocol_class=org.apache.iotdb.consensus.iot.IoTConsensus
+        - schema_replication_factor=3
+      - schema_region_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
+      - config_node_consensus_protocol_class=org.apache.iotdb.consensus.ratis.RatisConsensus
+    volumes:
+      - /etc/hosts:/etc/hosts:ro
+      - ./data/datanode:/iotdb/data/
+      - ./logs/datanode:/iotdb/logs/
+    network_mode: "host"
+```
+注意:
+1. `dn_target_config_node_list`所有节点配置一样,需要配置第一个启动的节点,这里为`iotdb-1`。
+2. 上面docker-compose文件中,`iotdb-2`需要替换为每个节点的 hostname、域名或者IP地址。
+3. 需要映射`/etc/hosts`,文件内配置了 iotdb-1、iotdb-2、iotdb-3 与IP的映射。或者可以在 docker-compose 文件中增加 `extra_hosts` 配置。
+4. 首次启动时,必须首先启动 `iotdb-1`。
+5. 如果部署失败要重新部署集群,必须将所有节点上的IoTDB服务停止并删除,然后清除`data`和`logs`文件夹后,再启动。
diff --git a/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md b/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md
index 9a1d0f96c3..c3cf639c71 100644
--- a/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md
+++ b/docs/zh/UserGuide/Reference/ConfigNode-Config-Manual.md
@@ -80,7 +80,7 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。
 |:------:|:----------------------|
 |   描述   | ConfigNode 集群服务监听端口   |
 |   类型   | Short Int : [0,65535] |
-|  默认值   | 6667                  |
+|  默认值   | 10710                  |
 | 改后生效方式 | 重启服务生效                |
 
 ### 共识协议
@@ -91,7 +91,7 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。
 |:------:|:----------------------|
 |   描述   | ConfigNode 的共识协议通信端口  |
 |   类型   | Short Int : [0,65535] |
-|  默认值   | 22278                 |
+|  默认值   | 10720                 |
 | 改后生效方式 | 重启服务生效                |
 
 ### 目标 Config Node 配置
@@ -102,7 +102,7 @@ IoTDB 集群的全局配置通过 ConfigNode 配置。
 |:------:|:--------------------------------------|
 |   描述   | 目标 ConfigNode 地址,ConfigNode 通过此地址加入集群 |
 |   类型   | String                                |
-|  默认值   | 127.0.0.1:22277                       |
+|  默认值   | 127.0.0.1:10710                       |
 | 改后生效方式 | 重启服务生效                                |
 
 
diff --git a/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md b/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md
index 53f63f69f2..fad04934f0 100644
--- a/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md
+++ b/docs/zh/UserGuide/Reference/DataNode-Config-Manual.md
@@ -122,7 +122,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB 
 |:---:|:-------------------|
 |描述| DataNode 内网通信端口    |
 |类型| int                |
-|默认值| 9003               |
+|默认值| 10730               |
 |改后生效方式| 重启服务生效             |
 
 * dn\_mpp\_data\_exchange\_port
@@ -131,7 +131,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB 
 |:---:|:---|
 |描述| MPP 数据交换端口 |
 |类型| int |
-|默认值| 8777 |
+|默认值| 10740 |
 |改后生效方式|重启服务生效|
 
 * dn\_schema\_region\_consensus\_port
@@ -140,7 +140,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB 
 |:---:|:---|
 |描述| DataNode 元数据副本的共识协议通信端口 |
 |类型| int |
-|默认值| 50010 |
+|默认值| 10750 |
 |改后生效方式|重启服务生效|
 
 * dn\_data\_region\_consensus\_port
@@ -149,7 +149,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB 
 |:---:|:---|
 |描述| DataNode 数据副本的共识协议通信端口 |
 |类型| int |
-|默认值| 40010 |
+|默认值| 10760 |
 |改后生效方式|重启服务生效|
 
 * dn\_join\_cluster\_retry\_interval\_ms
@@ -169,7 +169,7 @@ IoTDB DataNode 与 Standalone 模式共用一套配置文件,均位于 IoTDB 
 |:---:|:------------------------------------|
 |描述| ConfigNode 地址,DataNode 启动时通过此地址加入集群 |
 |类型| String                              |
-|默认值| 127.0.0.1:22277                     |
+|默认值| 127.0.0.1:10710                     |
 |改后生效方式| 重启服务生效                              |
 
 ### 连接配置
diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/RemoteServerEnv.java b/integration-test/src/main/java/org/apache/iotdb/it/env/RemoteServerEnv.java
index 2cc2d1f926..20040842e2 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/env/RemoteServerEnv.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/env/RemoteServerEnv.java
@@ -163,7 +163,7 @@ public class RemoteServerEnv implements BaseEnv {
 
   @Override
   public IConfigNodeRPCService.Iface getLeaderConfigNodeConnection() throws ClientManagerException {
-    return clientManager.borrowClient(new TEndPoint(ip_addr, 22277));
+    return clientManager.borrowClient(new TEndPoint(ip_addr, 10710));
   }
 
   @Override
diff --git a/node-commons/src/assembly/resources/sbin/iotdb-common.sh b/node-commons/src/assembly/resources/sbin/iotdb-common.sh
index b41b20a7f4..cc748e946d 100755
--- a/node-commons/src/assembly/resources/sbin/iotdb-common.sh
+++ b/node-commons/src/assembly/resources/sbin/iotdb-common.sh
@@ -171,10 +171,10 @@ checkDataNodePortUsages () {
   else
     echo "Warning: cannot find iotdb-datanode.properties, check the default configuration"
     dn_rpc_port=6667
-    dn_internal_port=9003
-    dn_mpp_data_exchange_port=8777
-    dn_schema_region_consensus_port=50010
-    dn_data_region_consensus_port=40010
+    dn_internal_port=10730
+    dn_mpp_data_exchange_port=10740
+    dn_schema_region_consensus_port=10750
+    dn_data_region_consensus_port=10760
   fi
   if type lsof >/dev/null 2>&1; then
     PID=$(lsof -t -i:"${dn_rpc_port}" -sTCP:LISTEN)
@@ -252,8 +252,8 @@ checkConfigNodePortUsages () {
     cn_consensus_port=$(sed '/^cn_consensus_port=/!d;s/.*=//' "${CONFIGNODE_HOME}"/conf/iotdb-confignode.properties)
   else
     echo "Cannot find iotdb-confignode.properties, check the default configuration"
-    cn_internal_port=22277
-    cn_consensus_port=22278
+    cn_internal_port=10710
+    cn_consensus_port=10720
   fi
   if type lsof >/dev/null 2>&1; then
     PID=$(lsof -t -i:"${cn_internal_port}" -sTCP:LISTEN)
diff --git a/node-commons/src/test/java/org/apache/iotdb/commons/client/ClientManagerTest.java b/node-commons/src/test/java/org/apache/iotdb/commons/client/ClientManagerTest.java
index 18bf4bcd38..1375423486 100644
--- a/node-commons/src/test/java/org/apache/iotdb/commons/client/ClientManagerTest.java
+++ b/node-commons/src/test/java/org/apache/iotdb/commons/client/ClientManagerTest.java
@@ -42,7 +42,7 @@ import static org.mockito.Mockito.mock;
 
 public class ClientManagerTest {
 
-  private final TEndPoint endPoint = new TEndPoint("localhost", 9003);
+  private final TEndPoint endPoint = new TEndPoint("localhost", 10730);
 
   private MockInternalRPCService service;
 
diff --git a/node-commons/src/test/java/org/apache/iotdb/commons/utils/NodeUrlUtilsTest.java b/node-commons/src/test/java/org/apache/iotdb/commons/utils/NodeUrlUtilsTest.java
index fca5f407ab..977ab57039 100644
--- a/node-commons/src/test/java/org/apache/iotdb/commons/utils/NodeUrlUtilsTest.java
+++ b/node-commons/src/test/java/org/apache/iotdb/commons/utils/NodeUrlUtilsTest.java
@@ -48,13 +48,13 @@ public class NodeUrlUtilsTest {
     final List<TConfigNodeLocation> configNodeLocations =
         Arrays.asList(
             new TConfigNodeLocation(
-                0, new TEndPoint("0.0.0.0", 22277), new TEndPoint("0.0.0.0", 22278)),
+                0, new TEndPoint("0.0.0.0", 10710), new TEndPoint("0.0.0.0", 10720)),
             new TConfigNodeLocation(
-                1, new TEndPoint("0.0.0.0", 22279), new TEndPoint("0.0.0.0", 22280)),
+                1, new TEndPoint("0.0.0.0", 10711), new TEndPoint("0.0.0.0", 10721)),
             new TConfigNodeLocation(
-                2, new TEndPoint("0.0.0.0", 22281), new TEndPoint("0.0.0.0", 22282)));
+                2, new TEndPoint("0.0.0.0", 10712), new TEndPoint("0.0.0.0", 10722)));
     final String configNodeUrls =
-        "0,0.0.0.0:22277,0.0.0.0:22278;1,0.0.0.0:22279,0.0.0.0:22280;2,0.0.0.0:22281,0.0.0.0:22282";
+        "0,0.0.0.0:10710,0.0.0.0:10720;1,0.0.0.0:10711,0.0.0.0:10721;2,0.0.0.0:10712,0.0.0.0:10722";
 
     Assert.assertEquals(configNodeUrls, NodeUrlUtils.convertTConfigNodeUrls(configNodeLocations));
     Assert.assertEquals(configNodeLocations, NodeUrlUtils.parseTConfigNodeUrls(configNodeUrls));
diff --git a/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftCommonsSerDeUtilsTest.java b/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftCommonsSerDeUtilsTest.java
index 31972fc30b..18a679ed2a 100644
--- a/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftCommonsSerDeUtilsTest.java
+++ b/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftCommonsSerDeUtilsTest.java
@@ -64,10 +64,10 @@ public class ThriftCommonsSerDeUtilsTest {
     TDataNodeLocation dataNodeLocation0 = new TDataNodeLocation();
     dataNodeLocation0.setDataNodeId(0);
     dataNodeLocation0.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation0.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation0.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation0.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation0.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation0.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation0.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation0.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation0.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     try (PublicBAOS byteArrayOutputStream = new PublicBAOS();
         DataOutputStream outputStream = new DataOutputStream(byteArrayOutputStream)) {
@@ -128,10 +128,10 @@ public class ThriftCommonsSerDeUtilsTest {
       TDataNodeLocation dataNodeLocation = new TDataNodeLocation();
       dataNodeLocation.setDataNodeId(i);
       dataNodeLocation.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667 + i));
-      dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003 + i));
-      dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777 + i));
-      dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010 + i));
-      dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010 + i));
+      dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730 + i));
+      dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740 + i));
+      dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760 + i));
+      dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750 + i));
       regionReplicaSet0.getDataNodeLocations().add(dataNodeLocation);
     }
     try (PublicBAOS byteArrayOutputStream = new PublicBAOS();
diff --git a/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftConfigNodeSerDeUtilsTest.java b/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftConfigNodeSerDeUtilsTest.java
index 6c85a7b3fe..24aee00bf6 100644
--- a/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftConfigNodeSerDeUtilsTest.java
+++ b/node-commons/src/test/java/org/apache/iotdb/commons/utils/ThriftConfigNodeSerDeUtilsTest.java
@@ -57,7 +57,7 @@ public class ThriftConfigNodeSerDeUtilsTest {
   public void readWriteTConfigNodeLocationTest() {
     TConfigNodeLocation configNodeLocation0 =
         new TConfigNodeLocation(
-            0, new TEndPoint("0.0.0.0", 22277), new TEndPoint("0.0.0.0", 22278));
+            0, new TEndPoint("0.0.0.0", 10710), new TEndPoint("0.0.0.0", 10720));
 
     ThriftConfigNodeSerDeUtils.serializeTConfigNodeLocation(configNodeLocation0, buffer);
     buffer.flip();
diff --git a/server/src/assembly/resources/conf/iotdb-datanode.properties b/server/src/assembly/resources/conf/iotdb-datanode.properties
index 7eea86f87f..03ea81c3a4 100644
--- a/server/src/assembly/resources/conf/iotdb-datanode.properties
+++ b/server/src/assembly/resources/conf/iotdb-datanode.properties
@@ -39,22 +39,22 @@ dn_internal_address=127.0.0.1
 # Used for communication inside cluster.
 # Bind with dn_internal_address
 # Datatype: int
-dn_internal_port=9003
+dn_internal_port=10730
 
 # Port for data exchange among DataNodes inside cluster
 # Bind with dn_internal_address
 # Datatype: int
-dn_mpp_data_exchange_port=8777
+dn_mpp_data_exchange_port=10740
 
 # port for consensus's communication for schema region inside cluster.
 # Bind with dn_internal_address
 # Datatype: int
-dn_schema_region_consensus_port=50010
+dn_schema_region_consensus_port=10750
 
 # port for consensus's communication for data region inside cluster.
 # Bind with dn_internal_address
 # Datatype: int
-dn_data_region_consensus_port=40010
+dn_data_region_consensus_port=10760
 
 # Datatype: long
 # The time of data node waiting for the next retry to join into the cluster.
@@ -66,9 +66,9 @@ dn_data_region_consensus_port=40010
 
 # For the first ConfigNode to start, cn_target_config_node_list points to its own cn_internal_address:cn_internal_port.
 # For other ConfigNodes that to join the cluster, target_config_node_list points to any running ConfigNode's cn_internal_address:cn_internal_port.
-# Format: address:port(,address:port)*   e.g. 127.0.0.1:22277,127.0.0.1:22279
+# Format: address:port(,address:port)*   e.g. 127.0.0.1:10710,127.0.0.1:10711
 # Datatype: String
-dn_target_config_node_list=127.0.0.1:22277
+dn_target_config_node_list=127.0.0.1:10710
 
 ####################
 ### Connection Configuration
diff --git a/server/src/assembly/resources/sbin/start-datanode.bat b/server/src/assembly/resources/sbin/start-datanode.bat
index 7559ad2db8..ea66a36632 100755
--- a/server/src/assembly/resources/sbin/start-datanode.bat
+++ b/server/src/assembly/resources/sbin/start-datanode.bat
@@ -139,10 +139,10 @@ IF EXIST "%IOTDB_CONF%\iotdb-datanode.properties" (
 ) ELSE (
   echo "Can't find iotdb-datanode.properties, check the default ports"
   set dn_rpc_port=6667
-  set dn_internal_port=9003
-  set dn_mpp_data_exchange_port=8777
-  set dn_schema_region_consensus_port=50010
-  set dn_data_region_consensus_port=40010
+  set dn_internal_port=10730
+  set dn_mpp_data_exchange_port=10740
+  set dn_schema_region_consensus_port=10750
+  set dn_data_region_consensus_port=10760
 )
 
 echo Check whether the ports are occupied....
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 0069f6171c..462c45ed83 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -869,17 +869,17 @@ public class IoTDBConfig {
   private String internalAddress = "127.0.0.1";
 
   /** Internal port for coordinator */
-  private int internalPort = 9003;
+  private int internalPort = 10730;
 
   /** Internal port for dataRegion consensus protocol */
-  private int dataRegionConsensusPort = 40010;
+  private int dataRegionConsensusPort = 10760;
 
   /** Internal port for schemaRegion consensus protocol */
-  private int schemaRegionConsensusPort = 50010;
+  private int schemaRegionConsensusPort = 10750;
 
   /** Ip and port of config nodes. */
   private List<TEndPoint> targetConfigNodeList =
-      Collections.singletonList(new TEndPoint("127.0.0.1", 22277));
+      Collections.singletonList(new TEndPoint("127.0.0.1", 10710));
 
   /** The time of data node waiting for the next retry to join into the cluster */
   private long joinClusterRetryIntervalMs = TimeUnit.SECONDS.toMillis(5);
@@ -910,7 +910,7 @@ public class IoTDBConfig {
   private int seriesPartitionSlotNum = 10000;
 
   /** Port that mpp data exchange thrift service listen to. */
-  private int mppDataExchangePort = 8777;
+  private int mppDataExchangePort = 10740;
 
   /** Core pool size of mpp data exchange. */
   private int mppDataExchangeCorePoolSize = 10;
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 7ba0807316..e3915805a8 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -1814,7 +1814,7 @@ public class IoTDBDescriptor {
         conf.setTargetConfigNodeList(NodeUrlUtils.parseTEndPointUrls(configNodeUrls));
       } catch (BadNodeUrlException e) {
         logger.error(
-            "Config nodes are set in wrong format, please set them like 127.0.0.1:22277,127.0.0.1:22281");
+            "Config nodes are set in wrong format, please set them like 127.0.0.1:10710,127.0.0.1:10712");
       }
     }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
index 151668e148..ab5d491a40 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeaderConstant.java
@@ -261,9 +261,9 @@ public class ColumnHeaderConstant {
           new ColumnHeader(CONFIG_CONSENSUS_PORT, TSDataType.TEXT),
           new ColumnHeader(RPC_ADDRESS, TSDataType.TEXT),
           new ColumnHeader(RPC_PORT, TSDataType.TEXT),
-          new ColumnHeader(DATA_CONSENSUS_PORT, TSDataType.TEXT),
+          new ColumnHeader(MPP_PORT, TSDataType.TEXT),
           new ColumnHeader(SCHEMA_CONSENSUS_PORT, TSDataType.TEXT),
-          new ColumnHeader(MPP_PORT, TSDataType.TEXT));
+          new ColumnHeader(DATA_CONSENSUS_PORT, TSDataType.TEXT));
 
   public static final List<ColumnHeader> showClusterParametersColumnHeaders =
       ImmutableList.of(
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/TestRPCClient.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/TestRPCClient.java
index b9a358c2c3..872e1eb66d 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/TestRPCClient.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/TestRPCClient.java
@@ -66,7 +66,7 @@ public class TestRPCClient {
 
   private void loadSnapshot() {
     try (SyncIoTConsensusServiceClient client =
-        syncClientManager.borrowClient(new TEndPoint("127.0.0.1", 40011))) {
+        syncClientManager.borrowClient(new TEndPoint("127.0.0.1", 10761))) {
       TTriggerSnapshotLoadRes res =
           client.triggerSnapshotLoad(
               new TTriggerSnapshotLoadReq(
@@ -79,7 +79,7 @@ public class TestRPCClient {
 
   private void testAddPeer() {
     try (SyncIoTConsensusServiceClient client =
-        syncClientManager.borrowClient(new TEndPoint("127.0.0.1", 40012))) {
+        syncClientManager.borrowClient(new TEndPoint("127.0.0.1", 10762))) {
       TInactivatePeerRes res =
           client.inactivatePeer(
               new TInactivatePeerReq(new DataRegionId(1).convertToTConsensusGroupId()));
@@ -91,7 +91,7 @@ public class TestRPCClient {
 
   private void removeRegionPeer() {
     try (SyncDataNodeInternalServiceClient client =
-        INTERNAL_SERVICE_CLIENT_MANAGER.borrowClient(new TEndPoint("127.0.0.1", 9003))) {
+        INTERNAL_SERVICE_CLIENT_MANAGER.borrowClient(new TEndPoint("127.0.0.1", 10730))) {
       client.removeRegionPeer(
           new TMaintainPeerReq(new DataRegionId(1).convertToTConsensusGroupId(), getLocation2(3)));
     } catch (Exception e) {
@@ -101,7 +101,7 @@ public class TestRPCClient {
 
   private void addPeer() {
     try (SyncDataNodeInternalServiceClient client =
-        INTERNAL_SERVICE_CLIENT_MANAGER.borrowClient(new TEndPoint("127.0.0.1", 9003))) {
+        INTERNAL_SERVICE_CLIENT_MANAGER.borrowClient(new TEndPoint("127.0.0.1", 10730))) {
       client.addRegionPeer(
           new TMaintainPeerReq(new DataRegionId(1).convertToTConsensusGroupId(), getLocation2(3)));
     } catch (Exception e) {
@@ -113,25 +113,25 @@ public class TestRPCClient {
     return new TDataNodeLocation(
         dataNodeId,
         new TEndPoint("127.0.0.1", 6669),
-        new TEndPoint("127.0.0.1", 9005),
-        new TEndPoint("127.0.0.1", 8779),
-        new TEndPoint("127.0.0.1", 40012),
-        new TEndPoint("127.0.0.1", 50012));
+        new TEndPoint("127.0.0.1", 10732),
+        new TEndPoint("127.0.0.1", 10742),
+        new TEndPoint("127.0.0.1", 10762),
+        new TEndPoint("127.0.0.1", 10752));
   }
 
   private TDataNodeLocation getLocation2(int dataNodeId) {
     return new TDataNodeLocation(
         dataNodeId,
         new TEndPoint("127.0.0.1", 6668),
-        new TEndPoint("127.0.0.1", 9004),
-        new TEndPoint("127.0.0.1", 8778),
-        new TEndPoint("127.0.0.1", 40011),
-        new TEndPoint("127.0.0.1", 50011));
+        new TEndPoint("127.0.0.1", 10731),
+        new TEndPoint("127.0.0.1", 10741),
+        new TEndPoint("127.0.0.1", 10761),
+        new TEndPoint("127.0.0.1", 10751));
   }
 
   private void createDataRegion() {
     try (SyncDataNodeInternalServiceClient client =
-        INTERNAL_SERVICE_CLIENT_MANAGER.borrowClient(new TEndPoint("127.0.0.1", 9005))) {
+        INTERNAL_SERVICE_CLIENT_MANAGER.borrowClient(new TEndPoint("127.0.0.1", 10732))) {
       TCreateDataRegionReq req = new TCreateDataRegionReq();
       req.setStorageGroup("root.test.g_0");
       TRegionReplicaSet regionReplicaSet = new TRegionReplicaSet();
@@ -141,26 +141,26 @@ public class TestRPCClient {
           new TDataNodeLocation(
               3,
               new TEndPoint("127.0.0.1", 6667),
-              new TEndPoint("127.0.0.1", 9003),
-              new TEndPoint("127.0.0.1", 8777),
-              new TEndPoint("127.0.0.1", 40010),
-              new TEndPoint("127.0.0.1", 50010)));
+              new TEndPoint("127.0.0.1", 10730),
+              new TEndPoint("127.0.0.1", 10740),
+              new TEndPoint("127.0.0.1", 10760),
+              new TEndPoint("127.0.0.1", 10750)));
       locationList.add(
           new TDataNodeLocation(
               4,
               new TEndPoint("127.0.0.1", 6668),
-              new TEndPoint("127.0.0.1", 9004),
-              new TEndPoint("127.0.0.1", 8778),
-              new TEndPoint("127.0.0.1", 40011),
-              new TEndPoint("127.0.0.1", 50011)));
+              new TEndPoint("127.0.0.1", 10731),
+              new TEndPoint("127.0.0.1", 10741),
+              new TEndPoint("127.0.0.1", 10761),
+              new TEndPoint("127.0.0.1", 10751)));
       locationList.add(
           new TDataNodeLocation(
               4,
               new TEndPoint("127.0.0.1", 6669),
-              new TEndPoint("127.0.0.1", 9005),
-              new TEndPoint("127.0.0.1", 8779),
-              new TEndPoint("127.0.0.1", 40012),
-              new TEndPoint("127.0.0.1", 50012)));
+              new TEndPoint("127.0.0.1", 10732),
+              new TEndPoint("127.0.0.1", 10742),
+              new TEndPoint("127.0.0.1", 10762),
+              new TEndPoint("127.0.0.1", 10752)));
       regionReplicaSet.setDataNodeLocations(locationList);
       req.setRegionReplicaSet(regionReplicaSet);
       TSStatus res = client.createDataRegion(req);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterDetailsTask.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterDetailsTask.java
index daff96ca94..01e77c71bb 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterDetailsTask.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/metadata/ShowClusterDetailsTask.java
@@ -134,9 +134,9 @@ public class ShowClusterDetailsTask implements IConfigTask {
                     e.getInternalEndPoint().getPort(),
                     e.getClientRpcEndPoint().getIp(),
                     e.getClientRpcEndPoint().getPort(),
-                    e.getDataRegionConsensusEndPoint().getPort(),
+                    e.getMPPDataExchangeEndPoint().getPort(),
                     e.getSchemaRegionConsensusEndPoint().getPort(),
-                    e.getMPPDataExchangeEndPoint().getPort()));
+                    e.getDataRegionConsensusEndPoint().getPort()));
 
     DatasetHeader datasetHeader = DatasetHeaderFactory.getShowClusterDetailsHeader();
     future.set(new ConfigTaskResult(TSStatusCode.SUCCESS_STATUS, builder.build(), datasetHeader));
diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/FragmentInstanceSerdeTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/FragmentInstanceSerdeTest.java
index 8585732e76..968bc5c61b 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/FragmentInstanceSerdeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/FragmentInstanceSerdeTest.java
@@ -62,10 +62,10 @@ public class FragmentInstanceSerdeTest {
     TDataNodeLocation dataNodeLocation = new TDataNodeLocation();
     dataNodeLocation.setDataNodeId(0);
     dataNodeLocation.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     PlanFragmentId planFragmentId = new PlanFragmentId("test", -1);
     FragmentInstance fragmentInstance =
@@ -104,10 +104,10 @@ public class FragmentInstanceSerdeTest {
     TDataNodeLocation dataNodeLocation = new TDataNodeLocation();
     dataNodeLocation.setDataNodeId(0);
     dataNodeLocation.setClientRpcEndPoint(new TEndPoint("0.0.0.0", 6667));
-    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 9003));
-    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 8777));
-    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
-    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
+    dataNodeLocation.setInternalEndPoint(new TEndPoint("0.0.0.0", 10730));
+    dataNodeLocation.setMPPDataExchangeEndPoint(new TEndPoint("0.0.0.0", 10740));
+    dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10760));
+    dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 10750));
 
     PlanFragmentId planFragmentId = new PlanFragmentId("test2", 1);
     FragmentInstance fragmentInstance =
diff --git a/server/src/test/resources/datanode1conf/iotdb-datanode.properties b/server/src/test/resources/datanode1conf/iotdb-datanode.properties
index 5bb899e5ba..60aac5c54f 100644
--- a/server/src/test/resources/datanode1conf/iotdb-datanode.properties
+++ b/server/src/test/resources/datanode1conf/iotdb-datanode.properties
@@ -21,12 +21,12 @@ dn_rpc_address=0.0.0.0
 dn_internal_address=127.0.0.1
 
 dn_rpc_port=6667
-dn_mpp_data_exchange_port=8777
-dn_internal_port=9003
-dn_data_region_consensus_port=40010
-dn_schema_region_consensus_port=50030
+dn_internal_port=10730
+dn_mpp_data_exchange_port=10740
+dn_schema_region_consensus_port=10750
+dn_data_region_consensus_port=10760
 
-dn_target_config_node_list=127.0.0.1:22277,127.0.0.1:22279,127.0.0.1:22281
+dn_target_config_node_list=127.0.0.1:10710,127.0.0.1:10711,127.0.0.1:10712
 
 dn_system_dir=target/datanode1/system
 dn_data_dirs=target/datanode1/data
diff --git a/server/src/test/resources/datanode2conf/iotdb-datanode.properties b/server/src/test/resources/datanode2conf/iotdb-datanode.properties
index 0daf3bd5dd..decb6a4a38 100644
--- a/server/src/test/resources/datanode2conf/iotdb-datanode.properties
+++ b/server/src/test/resources/datanode2conf/iotdb-datanode.properties
@@ -20,13 +20,13 @@
 dn_rpc_address=0.0.0.0
 dn_internal_address=127.0.0.1
 
-dn_rpc_port=6669
-dn_mpp_data_exchange_port=8779
-dn_internal_port=9005
-dn_data_region_consensus_port=40012
-dn_schema_region_consensus_port=50032
+dn_rpc_port=6668
+dn_internal_port=10731
+dn_mpp_data_exchange_port=10741
+dn_schema_region_consensus_port=10751
+dn_data_region_consensus_port=10761
 
-dn_target_config_node_list=127.0.0.1:22277,127.0.0.1:22279,127.0.0.1:22281
+dn_target_config_node_list=127.0.0.1:10710,127.0.0.1:10711,127.0.0.1:10712
 
 dn_system_dir=target/datanode2/system
 dn_data_dirs=target/datanode2/data
diff --git a/server/src/test/resources/datanode3conf/iotdb-datanode.properties b/server/src/test/resources/datanode3conf/iotdb-datanode.properties
index 9837d3e26a..b087567713 100644
--- a/server/src/test/resources/datanode3conf/iotdb-datanode.properties
+++ b/server/src/test/resources/datanode3conf/iotdb-datanode.properties
@@ -20,13 +20,13 @@
 dn_rpc_address=0.0.0.0
 dn_internal_address=127.0.0.1
 
-dn_rpc_port=6671
-dn_mpp_data_exchange_port=8781
-dn_internal_port=9007
-dn_data_region_consensus_port=40014
-dn_schema_region_consensus_port=50034
+dn_rpc_port=6669
+dn_internal_port=10732
+dn_mpp_data_exchange_port=10742
+dn_schema_region_consensus_port=10752
+dn_data_region_consensus_port=10762
 
-dn_target_config_node_list=127.0.0.1:22277,127.0.0.1:22279,127.0.0.1:22281
+dn_target_config_node_list=127.0.0.1:10710,127.0.0.1:10711,127.0.0.1:10712
 
 dn_system_dir=target/datanode3/system
 dn_data_dirs=target/datanode3/data