pulsar-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] merlimat closed pull request #1059: Issue 1014: Rename "global zookeeper" to "configuration-store"(change in code, conf and cli)
Date Tue, 01 May 2018 16:35:59 GMT
merlimat closed pull request #1059: Issue 1014: Rename "global zookeeper" to "configuration-store"(change in code, conf and cli)
URL: https://github.com/apache/incubator-pulsar/pull/1059
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/bin/pulsar b/bin/pulsar
index 0bd2228ae9..4a58d30744 100755
--- a/bin/pulsar
+++ b/bin/pulsar
@@ -24,7 +24,7 @@ PULSAR_HOME=`cd $BINDIR/..;pwd`
 DEFAULT_BROKER_CONF=$PULSAR_HOME/conf/broker.conf
 DEFAULT_BOOKKEEPER_CONF=$PULSAR_HOME/conf/bookkeeper.conf
 DEFAULT_ZK_CONF=$PULSAR_HOME/conf/zookeeper.conf
-DEFAULT_GLOBAL_ZK_CONF=$PULSAR_HOME/conf/global_zookeeper.conf
+DEFAULT_CONFIGURATION_STORE_CONF=$PULSAR_HOME/conf/global_zookeeper.conf
 DEFAULT_DISCOVERY_CONF=$PULSAR_HOME/conf/discovery.conf
 DEFAULT_PROXY_CONF=$PULSAR_HOME/conf/proxy.conf
 DEFAULT_STANDALONE_CONF=$PULSAR_HOME/conf/standalone.conf
@@ -103,18 +103,19 @@ pulsar_help() {
     cat <<EOF
 Usage: pulsar <command>
 where command is one of:
+
     broker              Run a broker server
     bookie              Run a bookie server
     zookeeper           Run a zookeeper server
-    global-zookeeper    Run a global-zookeeper server
+    configuration-store Run a configuration-store server
     discovery           Run a discovery server
     proxy               Run a pulsar proxy
     websocket           Run a web socket proxy server
     functions-worker    Run a functions worker server
     standalone          Run a broker server with local bookies and local zookeeper
-    compact-topic       Run compaction against a topic
 
     initialize-cluster-metadata     One-time metadata initialization
+    compact-topic       Run compaction against a topic
     zookeeper-shell     Open a ZK shell client
 
     help                This help message
@@ -126,7 +127,7 @@ Environment variables:
    PULSAR_BROKER_CONF            Configuration file for broker (default: $DEFAULT_BROKER_CONF)
    PULSAR_BOOKKEEPER_CONF        Configuration file for bookie (default: $DEFAULT_BOOKKEEPER_CONF)
    PULSAR_ZK_CONF                Configuration file for zookeeper (default: $DEFAULT_ZK_CONF)
-   PULSAR_GLOBAL_ZK_CONF         Configuration file for global zookeeper (default: $DEFAULT_GLOBAL_ZK_CONF)
+   PULSAR_CONFIGURATION_STORE_CONF         Configuration file for global configuration store (default: $DEFAULT_CONFIGURATION_STORE_CONF)
    PULSAR_DISCOVERY_CONF         Configuration file for discovery service (default: $DEFAULT_DISCOVERY_CONF)
    PULSAR_WEBSOCKET_CONF         Configuration file for websocket proxy (default: $DEFAULT_WEBSOCKET_CONF)
    PULSAR_PROXY_CONF             Configuration file for Pulsar proxy (default: $DEFAULT_PROXY_CONF)
@@ -192,6 +193,11 @@ fi
 
 if [ -z "$PULSAR_GLOBAL_ZK_CONF" ]; then
     PULSAR_GLOBAL_ZK_CONF=$DEFAULT_GLOBAL_ZK_CONF
+    PULSAR_CONFIGURATION_STORE_CONF=$DEFAULT_GLOBAL_ZK_CONF
+fi
+
+if [ -z "$PULSAR_CONFIGURATION_STORE_CONF" ]; then
+    PULSAR_CONFIGURATION_STORE_CONF=$DEFAULT_CONFIGURATION_STORE_CONF
 fi
 
 if [ -z "$PULSAR_DISCOVERY_CONF" ]; then
@@ -260,7 +266,12 @@ elif [ $COMMAND == "global-zookeeper" ]; then
     PULSAR_LOG_FILE=${PULSAR_LOG_FILE:-"global-zookeeper.log"}
     # Allow global ZK to turn into read-only mode when it cannot reach the quorum
     OPTS="${OPTS} -Dreadonlymode.enabled=true"
-    exec $JAVA $OPTS -Dpulsar.log.file=$PULSAR_LOG_FILE org.apache.pulsar.zookeeper.GlobalZooKeeperStarter $PULSAR_GLOBAL_ZK_CONF $@
+    exec $JAVA $OPTS -Dpulsar.log.file=$PULSAR_LOG_FILE org.apache.pulsar.zookeeper.ConfigurationStoreStarter $PULSAR_GLOBAL_ZK_CONF $@
+elif [ $COMMAND == "configuration-store" ]; then
+    PULSAR_LOG_FILE=${PULSAR_LOG_FILE:-"configuration-store.log"}
+    # Allow global ZK to turn into read-only mode when it cannot reach the quorum
+    OPTS="${OPTS} -Dreadonlymode.enabled=true"
+    exec $JAVA $OPTS -Dpulsar.log.file=$PULSAR_LOG_FILE org.apache.pulsar.zookeeper.ConfigurationStoreStarter $PULSAR_CONFIGURATION_STORE_CONF $@
 elif [ $COMMAND == "discovery" ]; then
     PULSAR_LOG_FILE=${PULSAR_LOG_FILE:-"discovery.log"}
     exec $JAVA $OPTS -Dpulsar.log.file=$PULSAR_LOG_FILE org.apache.pulsar.discovery.service.server.DiscoveryServiceStarter $PULSAR_DISCOVERY_CONF $@
@@ -285,5 +296,8 @@ elif [ $COMMAND == "compact-topic" ]; then
 elif [ $COMMAND == "help" ]; then
     pulsar_help;
 else
-    exec $JAVA $OPTS $COMMAND $@
+    echo ""
+    echo "-- Invalid command '$COMMAND' -- Use '$0 help' to get a list of valid commands"
+    echo ""
+    exit 1
 fi
diff --git a/bin/pulsar-admin b/bin/pulsar-admin
index c8b41da45f..837a60561f 100755
--- a/bin/pulsar-admin
+++ b/bin/pulsar-admin
@@ -146,5 +146,4 @@ OPTS="$OPTS -Dpulsar.functions.python.instance.file=${PY_INSTANCE_FILE}"
 
 #Change to PULSAR_HOME to support relative paths
 cd "$PULSAR_HOME"
-    
 exec $JAVA $OPTS org.apache.pulsar.admin.cli.PulsarAdminTool $PULSAR_CLIENT_CONF "$@"
diff --git a/bin/pulsar-daemon b/bin/pulsar-daemon
index 5853f112d6..0957413866 100755
--- a/bin/pulsar-daemon
+++ b/bin/pulsar-daemon
@@ -7,9 +7,9 @@
 # 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
@@ -22,13 +22,13 @@ usage() {
     cat <<EOF
 Usage: pulsar-daemon (start|stop) <command> <args...>
 where command is one of:
-    broker           Run a broker server
-    bookie           Run a bookie server
-    zookeeper        Run a zookeeper server
-    global-zookeeper Run a global-zookeeper server
-    discovery        Run a discovery server
-    websocket        Run a websocket proxy server
-    standalone       Run a standalone Pulsar service
+    broker              Run a broker server
+    bookie              Run a bookie server
+    zookeeper           Run a zookeeper server
+    configuration-store Run a configuration-store server
+    discovery           Run a discovery server
+    websocket           Run a websocket proxy server
+    standalone          Run a standalone Pulsar service
 
 where argument is one of:
     -force (accepted only with stop command): Decides whether to stop the server forcefully if not stopped by normal shutdown
@@ -73,6 +73,9 @@ case $command in
     (global-zookeeper)
         echo "doing $startStop $command ..."
         ;;
+    (configuration-store)
+        echo "doing $startStop $command ..."
+        ;;
     (discovery)
         echo "doing $startStop $command ..."
         ;;
diff --git a/conf/broker.conf b/conf/broker.conf
index 6f502a59c6..dc7ca04d3d 100644
--- a/conf/broker.conf
+++ b/conf/broker.conf
@@ -22,8 +22,8 @@
 # Zookeeper quorum connection string
 zookeeperServers=
 
-# Global Zookeeper quorum connection string
-globalZookeeperServers=
+# Configuration Store connection string
+configurationStoreServers=
 
 # Broker data port
 brokerServicePort=6650
@@ -457,3 +457,10 @@ functionsWorkerEnabled=false
 
 # Enable topic level metrics
 exposePublisherStats=true
+
+
+### --- Deprecated config variables --- ###
+
+# Deprecated. Use configurationStoreServers
+globalZookeeperServers=
+
diff --git a/conf/discovery.conf b/conf/discovery.conf
index 87f887f0fa..b1b6f41017 100644
--- a/conf/discovery.conf
+++ b/conf/discovery.conf
@@ -20,8 +20,8 @@
 # Zookeeper quorum connection string (comma-separated)
 zookeeperServers=
 
-# Global zookeeper quorum connection string (comma-separated)
-globalZookeeperServers=
+# Configuration Store connection string (comma-separated)
+configurationStoreServers=
 
 # ZooKeeper session timeout
 zookeeperSessionTimeoutMs=30000
@@ -77,3 +77,9 @@ tlsKeyFilePath=
 # Specify whether Client certificates are required for TLS
 # Reject the Connection if the Client Certificate is not trusted.
 tlsRequireTrustedClientCertOnConnect=false
+
+
+### --- Deprecated config variables --- ###
+
+# Deprecated. Use configurationStoreServers
+globalZookeeperServers=
diff --git a/conf/proxy.conf b/conf/proxy.conf
index f73124038c..a904f472d1 100644
--- a/conf/proxy.conf
+++ b/conf/proxy.conf
@@ -20,8 +20,8 @@
 # Zookeeper quorum connection string (comma-separated)
 zookeeperServers=
 
-# Global zookeeper quorum connection string (comma-separated)
-globalZookeeperServers=
+# Configuration Store connection string (comma-separated)
+configurationStoreServers=
 
 # ZooKeeper session timeout
 zookeeperSessionTimeoutMs=30000
@@ -70,10 +70,10 @@ superUserRoles=
 forwardAuthorizationCredentials=false
 
 # --- RateLimiting ----
-# Max concurrent inbound Connections, proxy will reject requests beyond that. Default value is 10,000 
+# Max concurrent inbound Connections, proxy will reject requests beyond that. Default value is 10,000
 maxConcurrentInboundConnections=10000
 
-# Max concurrent outbound Connections, proxy will error out requests beyond that. Default value is 10,000 
+# Max concurrent outbound Connections, proxy will error out requests beyond that. Default value is 10,000
 maxConcurrentLookupRequests=10000
 
 ##### --- TLS --- #####
@@ -96,3 +96,9 @@ tlsHostnameVerificationEnabled=false
 # Specify whether Client certificates are required for TLS
 # Reject the Connection if the Client Certificate is not trusted.
 tlsRequireTrustedClientCertOnConnect=false
+
+
+### --- Deprecated config variables --- ###
+
+# Deprecated. Use configurationStoreServers
+globalZookeeperServers=
diff --git a/conf/standalone.conf b/conf/standalone.conf
index 2beddf50da..f5c95460e1 100644
--- a/conf/standalone.conf
+++ b/conf/standalone.conf
@@ -22,8 +22,8 @@
 # Zookeeper quorum connection string
 zookeeperServers=
 
-# Global Zookeeper quorum connection string
-globalZookeeperServers=
+# Configuration Store connection string
+configurationStoreServers=
 
 brokerServicePort=6650
 
@@ -396,3 +396,9 @@ exposeTopicLevelMetricsInPrometheus=true
 
 # Enable topic level metrics
 exposePublisherStats=true
+
+### --- Deprecated config variables --- ###
+
+# Deprecated. Use configurationStoreServers
+globalZookeeperServers=
+
diff --git a/conf/websocket.conf b/conf/websocket.conf
index 87accac7a3..f9f2436e7a 100644
--- a/conf/websocket.conf
+++ b/conf/websocket.conf
@@ -19,13 +19,13 @@
 
 ### --- Web Socket proxy settings --- ###
 
-# Global Zookeeper quorum connection string
-globalZookeeperServers=
+# Configuration Store connection string
+configurationStoreServers=
 
 # Zookeeper session timeout in milliseconds
 zooKeeperSessionTimeoutMillis=30000
 
-# Pulsar cluster url to connect to broker (optional if globalZookeeperServers present)
+# Pulsar cluster url to connect to broker (optional if configurationStoreServers present)
 serviceUrl=
 serviceUrlTls=
 brokerServiceUrl=
@@ -103,3 +103,9 @@ tlsTrustCertsFilePath=
 # Specify whether Client certificates are required for TLS
 # Reject the Connection if the Client Certificate is not trusted.
 tlsRequireTrustedClientCertOnConnect=false
+
+
+### --- Deprecated config variables --- ###
+
+# Deprecated. Use configurationStoreServers
+globalZookeeperServers=
diff --git a/deployment/dcos/PulsarGroups.json b/deployment/dcos/PulsarGroups.json
index 65859763f0..990ec57530 100644
--- a/deployment/dcos/PulsarGroups.json
+++ b/deployment/dcos/PulsarGroups.json
@@ -182,7 +182,7 @@
             "// Notice": "add PULSAR_MEM, PULSAR_GC, according to your environment.",
             "webServicePort": "8082",
             "zookeeperServers":  "master.mesos:2181",
-            "globalZookeeperServers":  "master.mesos:2181",
+            "configurationStoreServers":  "master.mesos:2181",
             "clusterName": "pulsar-dcos"
           },
 
@@ -223,7 +223,7 @@
           "env": {
             "webServicePort": "8082",
             "zookeeperServers":  "master.mesos:2181",
-            "globalZookeeperServers":  "master.mesos:2181",
+            "configurationStoreServers":  "master.mesos:2181",
             "clusterName": "pulsar-dcos",
             "webServiceUrl": "http://broker.brokers.pulsar.marathon.mesos:8082",
             "brokerServiceUrl":  "pulsar://broker.brokers.pulsar.marathon.mesos:6650"
diff --git a/deployment/kubernetes/aws/broker.yaml b/deployment/kubernetes/aws/broker.yaml
index c01ff20bb3..70940ef718 100644
--- a/deployment/kubernetes/aws/broker.yaml
+++ b/deployment/kubernetes/aws/broker.yaml
@@ -28,7 +28,7 @@ data:
     PULSAR_MEM: "\" -Dio.netty.leakDetectionLevel=disabled -Dio.netty.recycler.linkCapacity=1024 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+ExitOnOutOfMemoryError -XX:+PerfDisableSharedMem -Xms12g -Xmx12g -XX:MaxDirectMemorySize=14g -Dpulsar.root.logger=DEBUG,FILE \""
     PULSAR_GC: "\" -XX:+UseG1GC -XX:MaxGCPauseMillis=10\""
     zookeeperServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
-    globalZookeeperServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
+    configurationStoreServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
     clusterName: us-east
     managedLedgerDefaultEnsembleSize: "2"
     managedLedgerDefaultWriteQuorum: "2"
diff --git a/deployment/kubernetes/generic/broker.yaml b/deployment/kubernetes/generic/broker.yaml
index 452cdf119c..cf760c1005 100644
--- a/deployment/kubernetes/generic/broker.yaml
+++ b/deployment/kubernetes/generic/broker.yaml
@@ -27,7 +27,7 @@ data:
     # better GC behavior at high throughput
     PULSAR_MEM: "\" -Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g\""
     zookeeperServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
-    globalZookeeperServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
+    configurationStoreServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
     clusterName: us-central
 ---
 ##
diff --git a/deployment/kubernetes/generic/proxy.yaml b/deployment/kubernetes/generic/proxy.yaml
index 453b91ec59..6715cf13e7 100644
--- a/deployment/kubernetes/generic/proxy.yaml
+++ b/deployment/kubernetes/generic/proxy.yaml
@@ -25,7 +25,7 @@ metadata:
 data:
     PULSAR_MEM: "\" -Xms4g -Xmx4g -XX:MaxDirectMemorySize=4g\""
     zookeeperServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
-    globalZookeeperServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
+    configurationStoreServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
     clusterName: us-central
 ---
 ##
diff --git a/deployment/kubernetes/google-kubernetes-engine/broker.yaml b/deployment/kubernetes/google-kubernetes-engine/broker.yaml
index a07baa1fb1..6e0d78e6f9 100644
--- a/deployment/kubernetes/google-kubernetes-engine/broker.yaml
+++ b/deployment/kubernetes/google-kubernetes-engine/broker.yaml
@@ -26,7 +26,7 @@ data:
     PULSAR_MEM: "\" -Xms8g -Xmx8g -XX:MaxDirectMemorySize=4g\""
     PULSAR_GC: "\" -XX:+UseG1GC \""
     zookeeperServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
-    globalZookeeperServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
+    configurationStoreServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
     clusterName: pulsar-gke
 ---
 ##
diff --git a/deployment/kubernetes/google-kubernetes-engine/cluster-metadata.yaml b/deployment/kubernetes/google-kubernetes-engine/cluster-metadata.yaml
index e4afffbbc5..0027490e15 100644
--- a/deployment/kubernetes/google-kubernetes-engine/cluster-metadata.yaml
+++ b/deployment/kubernetes/google-kubernetes-engine/cluster-metadata.yaml
@@ -36,7 +36,7 @@ spec:
               bin/pulsar initialize-cluster-metadata \
                 --cluster us-central \
                 --zookeeper zookeeper \
-                --global-zookeeper zookeeper \
+                --configuration-store zookeeper \
                 --web-service-url http://broker.default.svc.cluster.local:8080/ \
                 --broker-service-url pulsar://broker.default.svc.cluster.local:6650/ || true;
       restartPolicy: Never
diff --git a/deployment/kubernetes/google-kubernetes-engine/proxy.yaml b/deployment/kubernetes/google-kubernetes-engine/proxy.yaml
index e62aa2a1e2..138f12f355 100644
--- a/deployment/kubernetes/google-kubernetes-engine/proxy.yaml
+++ b/deployment/kubernetes/google-kubernetes-engine/proxy.yaml
@@ -24,7 +24,7 @@ metadata:
 data:
   PULSAR_MEM: "\" -Xms4g -Xmx4g -XX:MaxDirectMemorySize=4g\""
   zookeeperServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
-  globalZookeeperServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
+  configurationStoreServers: zk-0.zookeeper,zk-1.zookeeper,zk-2.zookeeper
   clusterName: pulsar-gke
 
 ---
diff --git a/deployment/terraform-ansible/deploy-pulsar.yaml b/deployment/terraform-ansible/deploy-pulsar.yaml
index c0e8eb82fb..bec552ae0b 100644
--- a/deployment/terraform-ansible/deploy-pulsar.yaml
+++ b/deployment/terraform-ansible/deploy-pulsar.yaml
@@ -88,7 +88,7 @@
         state: directory
       with_items:
         - data/zookeeper
-    - name: Add pulsar_env.sh configuration file 
+    - name: Add pulsar_env.sh configuration file
       template:
         src: "../templates/pulsar_env.sh"
         dest: "/opt/pulsar/conf/pulsar_env.sh"
@@ -114,7 +114,7 @@
         bin/pulsar initialize-cluster-metadata \
           --cluster {{ cluster_name }} \
           --zookeeper localhost:2181 \
-          --global-zookeeper localhost:2181 \
+          --configuration-store localhost:2181 \
           --web-service-url {{ http_url }} \
           --broker-service-url {{ service_url }}
       args:
@@ -161,7 +161,7 @@
       args:
         chdir: /opt/pulsar
       when: groups['zookeeper'][0] == inventory_hostname
-      
+
 - name:  Hosts addresses
   hosts: localhost
   become: false
diff --git a/deployment/terraform-ansible/templates/broker.conf b/deployment/terraform-ansible/templates/broker.conf
index de78366706..d16810025b 100644
--- a/deployment/terraform-ansible/templates/broker.conf
+++ b/deployment/terraform-ansible/templates/broker.conf
@@ -25,7 +25,7 @@
 zookeeperServers={{ zookeeper_servers }}
 
 # Global Zookeeper quorum connection string
-globalZookeeperServers={{ zookeeper_servers }}
+configurationStoreServers={{ zookeeper_servers }}
 
 # Hostname or IP address the service advertises to the outside world. If not set, the value of InetAddress.getLocalHost().getHostName() is used.
 advertisedAddress={{ hostvars[inventory_hostname].public_ip }}
diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
index e6c37ba162..5cf31c1593 100644
--- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
+++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
@@ -41,8 +41,12 @@
     @FieldContext(required = true)
     private String zookeeperServers;
     // Global Zookeeper quorum connection string
+    @Deprecated
     @FieldContext(required = false)
     private String globalZookeeperServers;
+    // Configuration Store connection string
+    @FieldContext(required = false)
+    private String configurationStoreServers;
     private int brokerServicePort = 6650;
     private int brokerServicePortTls = 6651;
     // Port to use to server HTTP request
@@ -467,6 +471,10 @@ public void setZookeeperServers(String zookeeperServers) {
         this.zookeeperServers = zookeeperServers;
     }
 
+    /**
+     * @deprecated See {@link #getConfigurationStoreServers}
+     */
+    @Deprecated
     public String getGlobalZookeeperServers() {
         if (this.globalZookeeperServers == null || this.globalZookeeperServers.isEmpty()) {
             // If the configuration is not set, assuming that the globalZK is not enabled and all data is in the same
@@ -476,10 +484,26 @@ public String getGlobalZookeeperServers() {
         return globalZookeeperServers;
     }
 
+    /**
+     * @deprecated See {@link #setConfigurationStoreServers(String)}
+     */
+    @Deprecated
     public void setGlobalZookeeperServers(String globalZookeeperServers) {
         this.globalZookeeperServers = globalZookeeperServers;
     }
 
+    public String getConfigurationStoreServers() {
+        if (this.configurationStoreServers == null || this.configurationStoreServers.isEmpty()) {
+            // If the configuration is not set, assuming that all data is in the same as globalZK cluster
+            return this.getGlobalZookeeperServers();
+        }
+        return configurationStoreServers;
+    }
+
+    public void setConfigurationStoreServers(String configurationStoreServers) {
+        this.configurationStoreServers = configurationStoreServers;
+    }
+
     public int getBrokerServicePort() {
         return brokerServicePort;
     }
diff --git a/pulsar-broker-common/src/test/java/org/apache/pulsar/common/configuration/PulsarConfigurationLoaderTest.java b/pulsar-broker-common/src/test/java/org/apache/pulsar/common/configuration/PulsarConfigurationLoaderTest.java
index d830c4ff05..baa0e7558c 100644
--- a/pulsar-broker-common/src/test/java/org/apache/pulsar/common/configuration/PulsarConfigurationLoaderTest.java
+++ b/pulsar-broker-common/src/test/java/org/apache/pulsar/common/configuration/PulsarConfigurationLoaderTest.java
@@ -41,7 +41,7 @@
         private Properties properties = new Properties();
 
         private String zookeeperServers = "localhost:2181";
-        private String globalZookeeperServers = "localhost:2184";
+        private String configurationStoreServers = "localhost:2184";
         private int brokerServicePort = 7650;
         private int brokerServicePortTls = 7651;
         private int webServicePort = 9080;
@@ -66,7 +66,7 @@ public void testConfigurationConverting() throws Exception {
 
         // check whether converting correctly
         assertEquals(serviceConfiguration.getZookeeperServers(), "localhost:2181");
-        assertEquals(serviceConfiguration.getGlobalZookeeperServers(), "localhost:2184");
+        assertEquals(serviceConfiguration.getConfigurationStoreServers(), "localhost:2184");
         assertEquals(serviceConfiguration.getBrokerServicePort(), 7650);
         assertEquals(serviceConfiguration.getBrokerServicePortTls(), 7651);
         assertEquals(serviceConfiguration.getWebServicePort(), 9080);
@@ -90,7 +90,7 @@ public void testPulsarConfiguraitonLoadingStream() throws Exception {
         final String zkServer = "z1.example.com,z2.example.com,z3.example.com";
         PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(testConfigFile)));
         printWriter.println("zookeeperServers=" + zkServer);
-        printWriter.println("globalZookeeperServers=gz1.example.com,gz2.example.com,gz3.example.com/foo");
+        printWriter.println("configurationStoreServers=gz1.example.com,gz2.example.com,gz3.example.com/foo");
         printWriter.println("brokerDeleteInactiveTopicsEnabled=true");
         printWriter.println("statusFilePath=/tmp/status.html");
         printWriter.println("managedLedgerDefaultEnsembleSize=1");
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java
index 5dfa80d0cc..3e62c9aa46 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java
@@ -79,9 +79,13 @@
         private String zookeeper;
 
         @Parameter(names = { "-gzk",
-                "--global-zookeeper" }, description = "Global ZooKeeper quorum connection string", required = true)
+                "--global-zookeeper" }, description = "Global ZooKeeper quorum connection string", required = false, hidden = true)
         private String globalZookeeper;
 
+        @Parameter(names = { "-cs",
+            "--configuration-store" }, description = "Configuration Store connection string", required = false)
+        private String configurationStore;
+
         @Parameter(names = { "-h", "--help" }, description = "Show this help message")
         private boolean help = false;
     }
@@ -101,12 +105,27 @@ public static void main(String[] args) throws Exception {
             throw e;
         }
 
-        log.info("Setting up cluster {} with zk={} global-zk={}", arguments.cluster, arguments.zookeeper,
-                arguments.globalZookeeper);
+        if (arguments.configurationStore == null && arguments.globalZookeeper == null) {
+            System.err.println("Configuration store address argument is required (--configuration-store)");
+            jcommander.usage();
+            System.exit(1);
+        }
+
+        if (arguments.configurationStore != null && arguments.globalZookeeper != null) {
+            System.err.println("Configuration store argument (--configuration-store) supercedes the deprecated (--global-zookeeper) argument");
+            jcommander.usage();
+            System.exit(1);
+        }
+
+        if (arguments.configurationStore == null) {
+            arguments.configurationStore = arguments.globalZookeeper;
+        }
 
+        log.info("Setting up cluster {} with zk={} configuration-store ={}", arguments.cluster, arguments.zookeeper,
+                arguments.configurationStore);
         ZooKeeperClientFactory zkfactory = new ZookeeperClientFactoryImpl();
         ZooKeeper localZk = zkfactory.create(arguments.zookeeper, SessionType.ReadWrite, 30000).get();
-        ZooKeeper globalZk = zkfactory.create(arguments.globalZookeeper, SessionType.ReadWrite, 30000).get();
+        ZooKeeper configStoreZk = zkfactory.create(arguments.configurationStore, SessionType.ReadWrite, 30000).get();
 
         // Format BookKeeper metadata
         ServerConfiguration bkConf = new ServerConfiguration();
@@ -121,14 +140,14 @@ public static void main(String[] args) throws Exception {
         localZk.create("/namespace", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
 
         try {
-            ZkUtils.createFullPathOptimistic(globalZk, POLICIES_ROOT, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE,
+            ZkUtils.createFullPathOptimistic(configStoreZk, POLICIES_ROOT, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE,
                     CreateMode.PERSISTENT);
         } catch (NodeExistsException e) {
             // Ignore
         }
 
         try {
-            ZkUtils.createFullPathOptimistic(globalZk, "/admin/clusters", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE,
+            ZkUtils.createFullPathOptimistic(configStoreZk, "/admin/clusters", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE,
                     CreateMode.PERSISTENT);
         } catch (NodeExistsException e) {
             // Ignore
@@ -138,7 +157,7 @@ public static void main(String[] args) throws Exception {
                 arguments.clusterBrokerServiceUrl, arguments.clusterBrokerServiceUrlTls);
         byte[] clusterDataJson = ObjectMapperFactory.getThreadLocal().writeValueAsBytes(clusterData);
 
-        globalZk.create("/admin/clusters/" + arguments.cluster, clusterDataJson, ZooDefs.Ids.OPEN_ACL_UNSAFE,
+        configStoreZk.create("/admin/clusters/" + arguments.cluster, clusterDataJson, ZooDefs.Ids.OPEN_ACL_UNSAFE,
                 CreateMode.PERSISTENT);
 
         // Create marker for "global" cluster
@@ -146,7 +165,7 @@ public static void main(String[] args) throws Exception {
         byte[] globalClusterDataJson = ObjectMapperFactory.getThreadLocal().writeValueAsBytes(globalClusterData);
 
         try {
-            globalZk.create("/admin/clusters/global", globalClusterDataJson, ZooDefs.Ids.OPEN_ACL_UNSAFE,
+            configStoreZk.create("/admin/clusters/global", globalClusterDataJson, ZooDefs.Ids.OPEN_ACL_UNSAFE,
                     CreateMode.PERSISTENT);
         } catch (NodeExistsException e) {
             // Ignore
@@ -155,12 +174,12 @@ public static void main(String[] args) throws Exception {
         // Create public tenant, whitelisted to use the this same cluster, along with other clusters
         String publicTenantPath = POLICIES_ROOT + "/" + TopicName.PUBLIC_TENANT;
 
-        Stat stat = globalZk.exists(publicTenantPath, false);
+        Stat stat = configStoreZk.exists(publicTenantPath, false);
         if (stat == null) {
             TenantInfo publicTenant = new TenantInfo(Collections.emptySet(), Collections.singleton(arguments.cluster));
 
             try {
-                ZkUtils.createFullPathOptimistic(globalZk, publicTenantPath,
+                ZkUtils.createFullPathOptimistic(configStoreZk, publicTenantPath,
                         ObjectMapperFactory.getThreadLocal().writeValueAsBytes(publicTenant),
                         ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
             } catch (NodeExistsException e) {
@@ -168,14 +187,14 @@ public static void main(String[] args) throws Exception {
             }
         } else {
             // Update existing public tenant with new cluster
-            byte[] content = globalZk.getData(publicTenantPath, false, null);
+            byte[] content = configStoreZk.getData(publicTenantPath, false, null);
             TenantInfo publicTenant = ObjectMapperFactory.getThreadLocal().readValue(content, TenantInfo.class);
 
             // Only update z-node if the list of clusters should be modified
             if (!publicTenant.getAllowedClusters().contains(arguments.cluster)) {
                 publicTenant.getAllowedClusters().add(arguments.cluster);
 
-                globalZk.setData(publicTenantPath, ObjectMapperFactory.getThreadLocal().writeValueAsBytes(publicTenant),
+                configStoreZk.setData(publicTenantPath, ObjectMapperFactory.getThreadLocal().writeValueAsBytes(publicTenant),
                         stat.getVersion());
             }
         }
@@ -184,7 +203,7 @@ public static void main(String[] args) throws Exception {
         String defaultNamespacePath = POLICIES_ROOT + "/" + TopicName.PUBLIC_TENANT + "/" + TopicName.DEFAULT_NAMESPACE;
         Policies policies;
 
-        stat = globalZk.exists(defaultNamespacePath, false);
+        stat = configStoreZk.exists(defaultNamespacePath, false);
         if (stat == null) {
             policies = new Policies();
             policies.bundles = getBundles(16);
@@ -192,7 +211,7 @@ public static void main(String[] args) throws Exception {
 
             try {
                 ZkUtils.createFullPathOptimistic(
-                    globalZk,
+                    configStoreZk,
                     defaultNamespacePath,
                     ObjectMapperFactory.getThreadLocal().writeValueAsBytes(policies),
                     ZooDefs.Ids.OPEN_ACL_UNSAFE,
@@ -201,14 +220,14 @@ public static void main(String[] args) throws Exception {
                 // Ignore
             }
         } else {
-            byte[] content = globalZk.getData(defaultNamespacePath, false, null);
+            byte[] content = configStoreZk.getData(defaultNamespacePath, false, null);
             policies = ObjectMapperFactory.getThreadLocal().readValue(content, Policies.class);
 
             // Only update z-node if the list of clusters should be modified
             if (!policies.replication_clusters.contains(arguments.cluster)) {
                 policies.replication_clusters.add(arguments.cluster);
 
-                globalZk.setData(defaultNamespacePath, ObjectMapperFactory.getThreadLocal().writeValueAsBytes(policies),
+                configStoreZk.setData(defaultNamespacePath, ObjectMapperFactory.getThreadLocal().writeValueAsBytes(policies),
                         stat.getVersion());
             }
         }
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandaloneStarter.java b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandaloneStarter.java
index e5415b4b6a..641636afed 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandaloneStarter.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/PulsarStandaloneStarter.java
@@ -133,7 +133,7 @@ public PulsarStandaloneStarter(String[] args) throws Exception {
 
         // Set ZK server's host to localhost
         config.setZookeeperServers(zkServers + ":" + zkPort);
-        config.setGlobalZookeeperServers(zkServers + ":" + zkPort);
+        config.setConfigurationStoreServers(zkServers + ":" + zkPort);
         config.setRunningStandalone(true);
 
         Runtime.getRuntime().addShutdownHook(new Thread() {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java
index 3d14b8b08f..c74ecd72e1 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/PulsarService.java
@@ -421,7 +421,7 @@ public synchronized void brokerIsAFollowerNow() {
             state = State.Started;
 
             acquireSLANamespace();
-            
+
             // start function worker service if necessary
             this.startWorkerService();
 
@@ -491,7 +491,7 @@ private void startZkCacheService() throws PulsarServerException {
 
         this.localZkCache = new LocalZooKeeperCache(getZkClient(), getOrderedExecutor());
         this.globalZkCache = new GlobalZooKeeperCache(getZooKeeperClientFactory(),
-                (int) config.getZooKeeperSessionTimeoutMillis(), config.getGlobalZookeeperServers(),
+                (int) config.getZooKeeperSessionTimeoutMillis(), config.getConfigurationStoreServers(),
                 getOrderedExecutor(), this.cacheExecutor);
         try {
             this.globalZkCache.start();
@@ -889,7 +889,7 @@ private void startWorkerService() throws InterruptedException, IOException, Keep
 
             InternalConfigurationData internalConf = new InternalConfigurationData(
                     this.getConfiguration().getZookeeperServers(),
-                    this.getConfiguration().getGlobalZookeeperServers(),
+                    this.getConfiguration().getConfigurationStoreServers(),
                     new ClientConfiguration().getZkLedgersRootPath());
 
             URI dlogURI;
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/BrokersBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/BrokersBase.java
index 59027c2d48..cab707e90c 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/BrokersBase.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/BrokersBase.java
@@ -56,7 +56,7 @@
 public class BrokersBase extends AdminResource {
     private static final Logger LOG = LoggerFactory.getLogger(BrokersBase.class);
     private int serviceConfigZkVersion = -1;
-    
+
     @GET
     @Path("/{cluster}")
     @ApiOperation(value = "Get the list of active brokers (web service addresses) in the cluster.", response = String.class, responseContainer = "Set")
@@ -135,11 +135,11 @@ public void updateDynamicConfiguration(@PathParam("configName") String configNam
     public List<String> getDynamicConfigurationName() {
         return BrokerService.getDynamicConfiguration();
     }
-    
+
     /**
      * if {@link ServiceConfiguration}-field is allowed to be modified dynamically, update configuration-map into zk, so
      * all other brokers get the watch and can see the change and take appropriate action on the change.
-     * 
+     *
      * @param configName
      *            : configuration key
      * @param configValue
@@ -192,7 +192,7 @@ public InternalConfigurationData getInternalConfigurationData() {
         ClientConfiguration conf = new ClientConfiguration();
         return new InternalConfigurationData(
             pulsar().getConfiguration().getZookeeperServers(),
-            pulsar().getConfiguration().getGlobalZookeeperServers(),
+            pulsar().getConfiguration().getConfigurationStoreServers(),
             conf.getZkLedgersRootPath());
     }
 
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/PulsarBrokerStarterTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/PulsarBrokerStarterTest.java
index f9373c0b3f..9cce6db0b0 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/PulsarBrokerStarterTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/PulsarBrokerStarterTest.java
@@ -47,7 +47,7 @@ private File createValidBrokerConfigFile() throws FileNotFoundException {
         }
         PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(testConfigFile)));
         printWriter.println("zookeeperServers=z1.example.com,z2.example.com,z3.example.com");
-        printWriter.println("globalZookeeperServers=gz1.example.com,gz2.example.com,gz3.example.com/foo");
+        printWriter.println("configurationStoreServers=gz1.example.com,gz2.example.com,gz3.example.com/foo");
         printWriter.println("brokerDeleteInactiveTopicsEnabled=false");
         printWriter.println("statusFilePath=/tmp/status.html");
         printWriter.println("managedLedgerDefaultEnsembleSize=1");
@@ -99,7 +99,7 @@ public void testLoadConfig() throws SecurityException, NoSuchMethodException, IO
         Assert.assertTrue(ServiceConfiguration.class.isInstance(returnValue));
         ServiceConfiguration serviceConfig = (ServiceConfiguration) returnValue;
         Assert.assertEquals(serviceConfig.getZookeeperServers(), "z1.example.com,z2.example.com,z3.example.com");
-        Assert.assertEquals(serviceConfig.getGlobalZookeeperServers(),
+        Assert.assertEquals(serviceConfig.getConfigurationStoreServers(),
                 "gz1.example.com,gz2.example.com,gz3.example.com/foo");
         Assert.assertFalse(serviceConfig.isBrokerDeleteInactiveTopicsEnabled());
         Assert.assertEquals(serviceConfig.getStatusFilePath(), "/tmp/status.html");
@@ -217,7 +217,7 @@ public void testGlobalZooKeeperConfig() throws SecurityException, NoSuchMethodEx
         }
         PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(testConfigFile)));
         printWriter.println("zookeeperServers=z1.example.com,z2.example.com,z3.example.com");
-        printWriter.println("globalZookeeperServers=");
+        printWriter.println("configurationStoreServers=");
         printWriter.println("brokerDeleteInactiveTopicsEnabled=false");
         printWriter.println("statusFilePath=/tmp/status.html");
         printWriter.println("managedLedgerDefaultEnsembleSize=1");
@@ -248,7 +248,7 @@ public void testGlobalZooKeeperConfig() throws SecurityException, NoSuchMethodEx
         Assert.assertTrue(ServiceConfiguration.class.isInstance(returnValue));
         ServiceConfiguration serviceConfig = (ServiceConfiguration) returnValue;
         Assert.assertEquals(serviceConfig.getZookeeperServers(), "z1.example.com,z2.example.com,z3.example.com");
-        Assert.assertEquals(serviceConfig.getGlobalZookeeperServers(), "z1.example.com,z2.example.com,z3.example.com");
+        Assert.assertEquals(serviceConfig.getConfigurationStoreServers(), "z1.example.com,z2.example.com,z3.example.com");
         Assert.assertFalse(serviceConfig.isBrokerDeleteInactiveTopicsEnabled());
         Assert.assertEquals(serviceConfig.getStatusFilePath(), "/tmp/status.html");
         Assert.assertEquals(serviceConfig.getBacklogQuotaDefaultLimitGB(), 18);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java
index c14ecfc231..1f0058c74c 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminTest.java
@@ -208,7 +208,7 @@ public void cleanup() throws Exception {
     void internalConfiguration() throws Exception {
         InternalConfigurationData expectedData = new InternalConfigurationData(
             pulsar.getConfiguration().getZookeeperServers(),
-            pulsar.getConfiguration().getGlobalZookeeperServers(),
+            pulsar.getConfiguration().getConfigurationStoreServers(),
             new ClientConfiguration().getZkLedgersRootPath());
 
         assertEquals(brokers.getInternalConfigurationData(), expectedData);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
index 72b8b747f9..23592b50db 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/auth/MockedPulsarServiceBaseTest.java
@@ -100,7 +100,7 @@ protected void resetConfig() {
         this.conf.setActiveConsumerFailoverDelayTimeMillis(0);
         this.conf.setDefaultNumberOfNamespaceBundles(1);
         this.conf.setZookeeperServers("localhost:2181");
-        this.conf.setGlobalZookeeperServers("localhost:3181");
+        this.conf.setConfigurationStoreServers("localhost:3181");
     }
 
     protected final void internalSetup() throws Exception {
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java
index 7d411f532b..2f599eeac8 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/ReplicatorTestBase.java
@@ -119,7 +119,7 @@ void setup() throws Exception {
         config1.setWebServicePort(webServicePort1);
         config1.setWebServicePortTls(webServicePortTls1);
         config1.setZookeeperServers("127.0.0.1:" + zkPort1);
-        config1.setGlobalZookeeperServers("127.0.0.1:" + globalZKPort + "/foo");
+        config1.setConfigurationStoreServers("127.0.0.1:" + globalZKPort + "/foo");
         config1.setBrokerDeleteInactiveTopicsEnabled(isBrokerServicePurgeInactiveTopic());
         config1.setBrokerServicePurgeInactiveFrequencyInSeconds(
                 inSec(getBrokerServicePurgeInactiveFrequency(), TimeUnit.SECONDS));
@@ -153,7 +153,7 @@ void setup() throws Exception {
         config2.setWebServicePort(webServicePort2);
         config2.setWebServicePortTls(webServicePortTls2);
         config2.setZookeeperServers("127.0.0.1:" + zkPort2);
-        config2.setGlobalZookeeperServers("127.0.0.1:" + globalZKPort + "/foo");
+        config2.setConfigurationStoreServers("127.0.0.1:" + globalZKPort + "/foo");
         config2.setBrokerDeleteInactiveTopicsEnabled(isBrokerServicePurgeInactiveTopic());
         config2.setBrokerServicePurgeInactiveFrequencyInSeconds(
                 inSec(getBrokerServicePurgeInactiveFrequency(), TimeUnit.SECONDS));
@@ -187,7 +187,7 @@ void setup() throws Exception {
         config3.setWebServicePort(webServicePort3);
         config3.setWebServicePortTls(webServicePortTls3);
         config3.setZookeeperServers("127.0.0.1:" + zkPort3);
-        config3.setGlobalZookeeperServers("127.0.0.1:" + globalZKPort + "/foo");
+        config3.setConfigurationStoreServers("127.0.0.1:" + globalZKPort + "/foo");
         config3.setBrokerDeleteInactiveTopicsEnabled(isBrokerServicePurgeInactiveTopic());
         config3.setBrokerServicePurgeInactiveFrequencyInSeconds(
                 inSec(getBrokerServicePurgeInactiveFrequency(), TimeUnit.SECONDS));
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/v1/V1_ReplicatorTestBase.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/v1/V1_ReplicatorTestBase.java
index 298acde4f4..fc5001b2a6 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/v1/V1_ReplicatorTestBase.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/v1/V1_ReplicatorTestBase.java
@@ -118,7 +118,7 @@ void setup() throws Exception {
         config1.setWebServicePort(webServicePort1);
         config1.setWebServicePortTls(webServicePortTls1);
         config1.setZookeeperServers("127.0.0.1:" + zkPort1);
-        config1.setGlobalZookeeperServers("127.0.0.1:" + globalZKPort + "/foo");
+        config1.setConfigurationStoreServers("127.0.0.1:" + globalZKPort + "/foo");
         config1.setBrokerDeleteInactiveTopicsEnabled(isBrokerServicePurgeInactiveTopic());
         config1.setBrokerServicePurgeInactiveFrequencyInSeconds(
                 inSec(getBrokerServicePurgeInactiveFrequency(), TimeUnit.SECONDS));
@@ -152,7 +152,7 @@ void setup() throws Exception {
         config2.setWebServicePort(webServicePort2);
         config2.setWebServicePortTls(webServicePortTls2);
         config2.setZookeeperServers("127.0.0.1:" + zkPort2);
-        config2.setGlobalZookeeperServers("127.0.0.1:" + globalZKPort + "/foo");
+        config2.setConfigurationStoreServers("127.0.0.1:" + globalZKPort + "/foo");
         config2.setBrokerDeleteInactiveTopicsEnabled(isBrokerServicePurgeInactiveTopic());
         config2.setBrokerServicePurgeInactiveFrequencyInSeconds(
                 inSec(getBrokerServicePurgeInactiveFrequency(), TimeUnit.SECONDS));
@@ -186,7 +186,7 @@ void setup() throws Exception {
         config3.setWebServicePort(webServicePort3);
         config3.setWebServicePortTls(webServicePortTls3);
         config3.setZookeeperServers("127.0.0.1:" + zkPort3);
-        config3.setGlobalZookeeperServers("127.0.0.1:" + globalZKPort + "/foo");
+        config3.setConfigurationStoreServers("127.0.0.1:" + globalZKPort + "/foo");
         config3.setBrokerDeleteInactiveTopicsEnabled(isBrokerServicePurgeInactiveTopic());
         config3.setBrokerServicePurgeInactiveFrequencyInSeconds(
                 inSec(getBrokerServicePurgeInactiveFrequency(), TimeUnit.SECONDS));
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java
index e96dff4eef..20bb4074b6 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/NonPersistentTopicTest.java
@@ -886,7 +886,7 @@ void setupReplicationCluster() throws Exception {
             config1.setAdvertisedAddress("localhost");
             config1.setWebServicePort(webServicePort1);
             config1.setZookeeperServers("127.0.0.1:" + zkPort1);
-            config1.setGlobalZookeeperServers("127.0.0.1:" + globalZKPort + "/foo");
+            config1.setConfigurationStoreServers("127.0.0.1:" + globalZKPort + "/foo");
             config1.setBrokerDeleteInactiveTopicsEnabled(isBrokerServicePurgeInactiveTopic());
             config1.setBrokerServicePurgeInactiveFrequencyInSeconds(
                     inSec(getBrokerServicePurgeInactiveFrequency(), TimeUnit.SECONDS));
@@ -912,7 +912,7 @@ void setupReplicationCluster() throws Exception {
             config2.setWebServicePort(webServicePort2);
             config2.setAdvertisedAddress("localhost");
             config2.setZookeeperServers("127.0.0.1:" + zkPort2);
-            config2.setGlobalZookeeperServers("127.0.0.1:" + globalZKPort + "/foo");
+            config2.setConfigurationStoreServers("127.0.0.1:" + globalZKPort + "/foo");
             config2.setBrokerDeleteInactiveTopicsEnabled(isBrokerServicePurgeInactiveTopic());
             config2.setBrokerServicePurgeInactiveFrequencyInSeconds(
                     inSec(getBrokerServicePurgeInactiveFrequency(), TimeUnit.SECONDS));
@@ -938,7 +938,7 @@ void setupReplicationCluster() throws Exception {
             config3.setWebServicePort(webServicePort3);
             config3.setAdvertisedAddress("localhost");
             config3.setZookeeperServers("127.0.0.1:" + zkPort3);
-            config3.setGlobalZookeeperServers("127.0.0.1:" + globalZKPort + "/foo");
+            config3.setConfigurationStoreServers("127.0.0.1:" + globalZKPort + "/foo");
             config3.setBrokerDeleteInactiveTopicsEnabled(isBrokerServicePurgeInactiveTopic());
             config3.setBrokerServicePurgeInactiveFrequencyInSeconds(
                     inSec(getBrokerServicePurgeInactiveFrequency(), TimeUnit.SECONDS));
@@ -1012,4 +1012,4 @@ private void rolloverPerIntervalStats(PulsarService pulsar) {
             log.error("Stats executor error", e);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthenticationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthenticationTest.java
index eab6428862..c59bf47ba0 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthenticationTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthenticationTest.java
@@ -22,18 +22,17 @@
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 
+import com.google.common.collect.Sets;
 import java.net.URI;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
-
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.client.Invocation;
 import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-
 import org.apache.bookkeeper.test.PortManager;
 import org.apache.pulsar.client.api.ProducerConsumerBase;
 import org.apache.pulsar.websocket.WebSocketService;
@@ -50,8 +49,6 @@
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.Sets;
-
 public class ProxyAuthenticationTest extends ProducerConsumerBase {
 
     private int port;
@@ -70,11 +67,9 @@ public void setup() throws Exception {
         config.setWebServicePort(port);
         config.setClusterName("test");
         config.setAuthenticationEnabled(true);
-        config.setGlobalZookeeperServers("dummy-zk-servers");
-        config.setSuperUserRoles(Sets.newHashSet("pulsar.super_user"));
-
         // If this is not set, 500 error occurs.
-        config.setGlobalZookeeperServers("dummy");
+        config.setConfigurationStoreServers("dummy");
+        config.setSuperUserRoles(Sets.newHashSet("pulsar.super_user"));
 
         if (methodName.equals("authenticatedSocketTest") || methodName.equals("statsTest")) {
             config.setAuthenticationProviders(Sets.newHashSet("org.apache.pulsar.websocket.proxy.MockAuthenticationProvider"));
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java
index f9ac9eb8f5..b79862f3d9 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyAuthorizationTest.java
@@ -59,7 +59,7 @@ protected void setup() throws Exception {
         WebSocketProxyConfiguration config = new WebSocketProxyConfiguration();
         Set<String> superUser = Sets.newHashSet("");
         config.setAuthorizationEnabled(true);
-        config.setGlobalZookeeperServers("dummy-zk-servers");
+        config.setConfigurationStoreServers("dummy-zk-servers");
         config.setSuperUserRoles(superUser);
         config.setClusterName("c1");
         config.setWebServicePort(TEST_PORT);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyPublishConsumeTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyPublishConsumeTest.java
index c05c356a3c..e084b04622 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyPublishConsumeTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyPublishConsumeTest.java
@@ -86,7 +86,7 @@ public void setup() throws Exception {
         WebSocketProxyConfiguration config = new WebSocketProxyConfiguration();
         config.setWebServicePort(port);
         config.setClusterName("test");
-        config.setGlobalZookeeperServers("dummy-zk-servers");
+        config.setConfigurationStoreServers("dummy-zk-servers");
         service = spy(new WebSocketService(config));
         doReturn(mockZooKeeperClientFactory).when(service).getZooKeeperClientFactory();
         proxyServer = new ProxyServer(config);
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyPublishConsumeTlsTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyPublishConsumeTlsTest.java
index 6d486c2f49..650e05e139 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyPublishConsumeTlsTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/ProxyPublishConsumeTlsTest.java
@@ -73,7 +73,7 @@ public void setup() throws Exception {
         config.setTlsTrustCertsFilePath(TLS_TRUST_CERT_FILE_PATH);
         config.setBrokerClientTrustCertsFilePath(TLS_TRUST_CERT_FILE_PATH);
         config.setClusterName("use");
-        config.setGlobalZookeeperServers("dummy-zk-servers");
+        config.setConfigurationStoreServers("dummy-zk-servers");
         config.setBrokerClientAuthenticationParameters("tlsCertFile:" + TLS_CLIENT_CERT_FILE_PATH + ",tlsKeyFile:" + TLS_CLIENT_KEY_FILE_PATH);
         config.setBrokerClientAuthenticationPlugin(AuthenticationTls.class.getName());
         String lookupUrl = new URI("pulsar://localhost:" + BROKER_PORT_TLS).toString();
diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/v1/V1_ProxyAuthenticationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/v1/V1_ProxyAuthenticationTest.java
index fbe6e07bdd..b13a6c64cf 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/v1/V1_ProxyAuthenticationTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/websocket/proxy/v1/V1_ProxyAuthenticationTest.java
@@ -72,11 +72,9 @@ public void setup() throws Exception {
         config.setWebServicePort(port);
         config.setClusterName("use");
         config.setAuthenticationEnabled(true);
-        config.setGlobalZookeeperServers("dummy-zk-servers");
-        config.setSuperUserRoles(Sets.newHashSet("pulsar.super_user"));
-
         // If this is not set, 500 error occurs.
-        config.setGlobalZookeeperServers("dummy");
+        config.setConfigurationStoreServers("dummy");
+        config.setSuperUserRoles(Sets.newHashSet("pulsar.super_user"));
 
         if (methodName.equals("authenticatedSocketTest") || methodName.equals("statsTest")) {
             config.setAuthenticationProviders(Sets.newHashSet("org.apache.pulsar.websocket.proxy.MockAuthenticationProvider"));
diff --git a/pulsar-broker/src/test/resources/configurations/pulsar_broker_test.conf b/pulsar-broker/src/test/resources/configurations/pulsar_broker_test.conf
index 2918e459eb..8034185902 100644
--- a/pulsar-broker/src/test/resources/configurations/pulsar_broker_test.conf
+++ b/pulsar-broker/src/test/resources/configurations/pulsar_broker_test.conf
@@ -19,7 +19,7 @@
 
 applicationName="pulsar_broker"
 zookeeperServers="localhost"
-globalZookeeperServers="localhost"
+configurationStoreServers="localhost"
 brokerServicePort=6650
 brokerServicePortTls=6651
 webServicePort=8080
diff --git a/pulsar-client-cpp/test-conf/standalone-ssl.conf b/pulsar-client-cpp/test-conf/standalone-ssl.conf
index 44b730c351..bb097d67c5 100644
--- a/pulsar-client-cpp/test-conf/standalone-ssl.conf
+++ b/pulsar-client-cpp/test-conf/standalone-ssl.conf
@@ -22,9 +22,12 @@
 # Zookeeper quorum connection string
 zookeeperServers=
 
-# Global Zookeeper quorum connection string
+# Deprecated. Global zookeeper quorum connection string
 globalZookeeperServers=
 
+# Configuration Store connection string
+configurationStoreServers=
+
 brokerServicePort=9885
 brokerServicePortTls=9886
 
diff --git a/pulsar-client-cpp/tests/authentication.conf b/pulsar-client-cpp/tests/authentication.conf
index f7a53d622c..6db26daf28 100644
--- a/pulsar-client-cpp/tests/authentication.conf
+++ b/pulsar-client-cpp/tests/authentication.conf
@@ -22,9 +22,12 @@
 # Zookeeper quorum connection string
 zookeeperServers=
 
-# Global Zookeeper quorum connection string
+# Deprecated. Global Zookeeper quorum connection string
 globalZookeeperServers=
 
+# Configuration Store connection string
+configurationStoreServers=
+
 brokerServicePort=9885
 brokerServicePortTls=9886
 
diff --git a/pulsar-client-cpp/tests/standalone.conf b/pulsar-client-cpp/tests/standalone.conf
index 630de70d5c..2fb8c0b28f 100644
--- a/pulsar-client-cpp/tests/standalone.conf
+++ b/pulsar-client-cpp/tests/standalone.conf
@@ -22,9 +22,12 @@
 # Zookeeper quorum connection string
 zookeeperServers=
 
-# Global Zookeeper quorum connection string
+# Deprecated. Global Zookeeper quorum connection string
 globalZookeeperServers=
 
+# Configuration Store connection string
+configurationStoreServers=
+
 brokerServicePort=8885
 
 # Port to use to server HTTP request
@@ -60,13 +63,13 @@ brokerDeleteInactiveTopicsEnabled=true
 # How often to check for inactive topics
 brokerDeleteInactiveTopicsFrequencySeconds=60
 
-# How frequently to proactively check and purge expired messages 
+# How frequently to proactively check and purge expired messages
 messageExpiryCheckIntervalInMinutes=5
 
 # Enable check for minimum allowed client library version
 clientLibraryVersionCheckEnabled=false
 
-# Allow client libraries with no version information 
+# Allow client libraries with no version information
 clientLibraryVersionCheckAllowUnversioned=true
 
 # Path for the file used to determine the rotation status for the broker when responding
@@ -108,7 +111,7 @@ bookkeeperClientAuthenticationPlugin=
 bookkeeperClientAuthenticationParametersName=
 bookkeeperClientAuthenticationParameters=
 
-# Timeout for BK add / read operations 
+# Timeout for BK add / read operations
 bookkeeperClientTimeoutInSeconds=30
 
 # Speculative reads are initiated if a read request doesn't complete within a certain time
@@ -124,11 +127,11 @@ bookkeeperClientHealthCheckErrorThresholdPerInterval=5
 bookkeeperClientHealthCheckQuarantineTimeInSeconds=1800
 
 # Enable rack-aware bookie selection policy. BK will chose bookies from different racks when
-# forming a new bookie ensemble 
+# forming a new bookie ensemble
 bookkeeperClientRackawarePolicyEnabled=true
 
-# Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie 
-# outside the specified groups will not be used by the broker 
+# Enable bookie isolation by specifying a list of bookie groups to choose from. Any bookie
+# outside the specified groups will not be used by the broker
 bookkeeperClientIsolationGroups=
 
 ### --- Managed Ledger --- ###
@@ -144,7 +147,7 @@ managedLedgerDefaultAckQuorum=1
 
 # Amount of memory to use for caching data payload in managed ledger. This memory
 # is allocated from JVM direct memory and it's shared across all the topics
-# running  in the same broker 
+# running  in the same broker
 managedLedgerCacheSizeMB=1024
 
 # Threshold to which bring down the cache level when eviction is triggered
@@ -156,7 +159,7 @@ managedLedgerDefaultMarkDeleteRateLimit=0.1
 # Max number of entries to append to a ledger before triggering a rollover
 # A ledger rollover is triggered on these conditions
 #  * Either the max rollover time has been reached
-#  * or max entries have been written to the ledged and at least min-time 
+#  * or max entries have been written to the ledged and at least min-time
 #    has passed
 managedLedgerMaxEntriesPerLedger=50000
 
@@ -174,7 +177,7 @@ managedLedgerCursorRolloverTimeInSeconds=14400
 
 
 
-### --- Load balancer --- ### 
+### --- Load balancer --- ###
 
 # Enable load balancer
 loadBalancerEnabled=false
@@ -192,13 +195,13 @@ loadBalancerReportUpdateMaxIntervalMinutes=15
 loadBalancerHostUsageCheckIntervalMinutes=1
 
 # Load shedding interval. Broker periodically checks whether some traffic should be offload from
-# some over-loaded broker to other under-loaded brokers   
+# some over-loaded broker to other under-loaded brokers
 loadBalancerSheddingIntervalMinutes=30
 
-# Prevent the same topics to be shed and moved to other broker more that once within this timeframe 
+# Prevent the same topics to be shed and moved to other broker more that once within this timeframe
 loadBalancerSheddingGracePeriodMinutes=30
 
-# Usage threshold to determine a broker as under-loaded 
+# Usage threshold to determine a broker as under-loaded
 loadBalancerBrokerUnderloadedThresholdPercentage=1
 
 # Usage threshold to determine a broker as over-loaded
@@ -238,7 +241,7 @@ replicationMetricsEnabled=true
 
 # Max number of connections to open for each broker in a remote cluster
 # More connections host-to-host lead to better throughput over high-latency
-# links. 
+# links.
 replicationConnectionsPerBroker=16
 
 # Replicator producer queue size
diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java
index aa1068a45b..4a038a31db 100644
--- a/pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java
+++ b/pulsar-common/src/main/java/org/apache/pulsar/common/conf/InternalConfigurationData.java
@@ -24,17 +24,17 @@
 public class InternalConfigurationData {
 
     private String zookeeperServers;
-    private String globalZooKeeperServers;
+    private String configurationStoreServers;
     private String ledgersRootPath;
 
     public InternalConfigurationData() {
     }
 
     public InternalConfigurationData(String zookeeperServers,
-                                     String globalZooKeeperServers,
+                                     String configurationStoreServers,
                                      String ledgersRootPath) {
         this.zookeeperServers = zookeeperServers;
-        this.globalZooKeeperServers = globalZooKeeperServers;
+        this.configurationStoreServers = configurationStoreServers;
         this.ledgersRootPath = ledgersRootPath;
     }
 
@@ -42,8 +42,8 @@ public String getZookeeperServers() {
         return zookeeperServers;
     }
 
-    public String getGlobalZooKeeperServers() {
-        return globalZooKeeperServers;
+    public String getConfigurationStoreServers() {
+        return configurationStoreServers;
     }
 
     public String getLedgersRootPath() {
@@ -57,20 +57,20 @@ public boolean equals(Object obj) {
         }
         InternalConfigurationData other = (InternalConfigurationData) obj;
         return Objects.equals(zookeeperServers, other.zookeeperServers)
-            && Objects.equals(globalZooKeeperServers, other.globalZooKeeperServers)
+            && Objects.equals(configurationStoreServers, other.configurationStoreServers)
             && Objects.equals(ledgersRootPath, other.ledgersRootPath);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(zookeeperServers, globalZooKeeperServers, ledgersRootPath);
+        return Objects.hash(zookeeperServers, configurationStoreServers, ledgersRootPath);
     }
 
     @Override
     public String toString() {
         return MoreObjects.toStringHelper(this)
             .add("zookeeperServers", zookeeperServers)
-            .add("globalZooKeeperServers", globalZooKeeperServers)
+            .add("configurationStoreServers", configurationStoreServers)
             .add("ledgersRootPath", ledgersRootPath)
             .toString();
     }
diff --git a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java
index 60a72c1201..54463aa743 100644
--- a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java
+++ b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/BrokerDiscoveryProvider.java
@@ -72,7 +72,7 @@ public BrokerDiscoveryProvider(ServiceConfig config, ZooKeeperClientFactory zkCl
             localZkCache = new ZookeeperCacheLoader(zkClientFactory, config.getZookeeperServers(),
                     config.getZookeeperSessionTimeoutMs());
             globalZkCache = new GlobalZooKeeperCache(zkClientFactory, config.getZookeeperSessionTimeoutMs(),
-                    config.getGlobalZookeeperServers(), orderedExecutor, scheduledExecutorScheduler);
+                    config.getConfigurationStoreServers(), orderedExecutor, scheduledExecutorScheduler);
             globalZkCache.start();
         } catch (Exception e) {
             LOG.error("Failed to start Zookkeeper {}", e.getMessage(), e);
diff --git a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/server/DiscoveryServiceStarter.java b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/server/DiscoveryServiceStarter.java
index f36cceec50..35af859374 100644
--- a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/server/DiscoveryServiceStarter.java
+++ b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/server/DiscoveryServiceStarter.java
@@ -40,6 +40,11 @@
  */
 public class DiscoveryServiceStarter {
 
+    public static void checkConfig(ServiceConfig config) {
+        checkArgument(!isEmpty(config.getZookeeperServers()), "zookeeperServers must be provided");
+        checkArgument(!isEmpty(config.getConfigurationStoreServers()),  "configuration-store Servers must be provided");
+    }
+
     public static void init(String configFile) throws Exception {
         // setup handlers
         removeHandlersForRootLogger();
@@ -50,14 +55,13 @@ public static void init(String configFile) throws Exception {
 
         // load config file
         final ServiceConfig config = PulsarConfigurationLoader.create(configFile, ServiceConfig.class);
-        checkArgument(!isEmpty(config.getZookeeperServers()), "zookeeperServers must be provided");
-        checkArgument(!isEmpty(config.getGlobalZookeeperServers()), "global-zookeeperServers must be provided");
-        
+        checkConfig(config);
+
         // create Discovery service
         DiscoveryService discoveryService = new DiscoveryService(config);
         // create a web-service
         final ServerManager server = new ServerManager(config);
-        
+
         Runtime.getRuntime().addShutdownHook(new Thread() {
             @Override
             public void run() {
@@ -69,7 +73,7 @@ public void run() {
                 }
             }
         });
-        
+
         discoveryService.start();
         startWebService(server, config);
     }
diff --git a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/server/ServiceConfig.java b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/server/ServiceConfig.java
index c1d59ee4b5..c024c19881 100644
--- a/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/server/ServiceConfig.java
+++ b/pulsar-discovery-service/src/main/java/org/apache/pulsar/discovery/service/server/ServiceConfig.java
@@ -36,7 +36,10 @@
     // Local-Zookeeper quorum connection string
     private String zookeeperServers;
     // Global-Zookeeper quorum connection string
+    @Deprecated
     private String globalZookeeperServers;
+    // Configuration Store connection string
+    private String configurationStoreServers;
 
     // ZooKeeper session timeout
     private int zookeeperSessionTimeoutMs = 30_000;
@@ -91,7 +94,7 @@
     // Specify whether Client certificates are required for TLS
     // Reject the Connection if the Client Certificate is not trusted.
     private boolean tlsRequireTrustedClientCertOnConnect = false;
-    
+
     private Properties properties = new Properties();
 
     public String getZookeeperServers() {
@@ -102,14 +105,24 @@ public void setZookeeperServers(String zookeeperServers) {
         this.zookeeperServers = zookeeperServers;
     }
 
+    @Deprecated
     public String getGlobalZookeeperServers() {
         return globalZookeeperServers;
     }
 
+    @Deprecated
     public void setGlobalZookeeperServers(String globalZookeeperServers) {
         this.globalZookeeperServers = globalZookeeperServers;
     }
 
+    public String getConfigurationStoreServers() {
+        return null == configurationStoreServers ? getGlobalZookeeperServers() : configurationStoreServers;
+    }
+
+    public void setConfigurationStoreServers(String configurationStoreServers) {
+        this.configurationStoreServers = configurationStoreServers;
+    }
+
     public int getZookeeperSessionTimeoutMs() {
         return zookeeperSessionTimeoutMs;
     }
@@ -253,7 +266,7 @@ public Properties getProperties() {
     public void setProperties(Properties properties) {
         this.properties = properties;
     }
-    
+
     public Set<String> getTlsProtocols() {
         return tlsProtocols;
     }
@@ -269,7 +282,7 @@ public void setTlsProtocols(Set<String> tlsProtocols) {
     public void setTlsCiphers(Set<String> tlsCiphers) {
         this.tlsCiphers = tlsCiphers;
     }
-    
+
     public boolean getTlsRequireTrustedClientCertOnConnect() {
         return tlsRequireTrustedClientCertOnConnect;
     }
diff --git a/pulsar-discovery-service/src/test/java/org/apache/pulsar/discovery/service/server/DiscoveryServiceWebTest.java b/pulsar-discovery-service/src/test/java/org/apache/pulsar/discovery/service/server/DiscoveryServiceWebTest.java
index 48b69a1889..3902431f27 100644
--- a/pulsar-discovery-service/src/test/java/org/apache/pulsar/discovery/service/server/DiscoveryServiceWebTest.java
+++ b/pulsar-discovery-service/src/test/java/org/apache/pulsar/discovery/service/server/DiscoveryServiceWebTest.java
@@ -27,9 +27,8 @@
 import java.io.PrintWriter;
 
 import org.apache.pulsar.common.configuration.PulsarConfigurationLoader;
-import org.apache.pulsar.discovery.service.server.DiscoveryServiceStarter;
-import org.apache.pulsar.discovery.service.server.ServerManager;
-import org.apache.pulsar.discovery.service.server.ServiceConfig;
+import org.apache.pulsar.discovery.service.DiscoveryService;
+import org.mockito.Mockito;
 import org.testng.annotations.Test;
 
 /**
@@ -40,7 +39,7 @@
  */
 public class DiscoveryServiceWebTest {
 
-    
+
     @Test
     public void testWebDiscoveryServiceStarter() throws Exception {
 
@@ -51,7 +50,7 @@ public void testWebDiscoveryServiceStarter() throws Exception {
         }
         PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(testConfigFile)));
         printWriter.println("zookeeperServers=z1.pulsar.com,z2.pulsar.com,z3.pulsar.com");
-        printWriter.println("globalZookeeperServers=z1.pulsar.com,z2.pulsar.com,z3.pulsar.com");
+        printWriter.println("configurationStoreServers=z1.pulsar.com,z2.pulsar.com,z3.pulsar.com");
         printWriter.println("webServicePort=" + port);
         printWriter.close();
         testConfigFile.deleteOnExit();
@@ -63,4 +62,62 @@ public void testWebDiscoveryServiceStarter() throws Exception {
         testConfigFile.delete();
     }
 
+    /**
+     * Test Configuration BackwardCompat for the change from globalzookeeper to configurationStore
+     */
+    @Test
+    public void testConfigurationBackwardCompat() throws Exception {
+        DiscoveryService service = Mockito.mock(DiscoveryService.class);
+
+        int port = nextFreePort();
+        File testConfigFile = new File("tmp." + System.currentTimeMillis() + ".properties");
+        if (testConfigFile.exists()) {
+            testConfigFile.delete();
+        }
+        PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(testConfigFile)));
+        printWriter.println("zookeeperServers=z1.pulsar.com,z2.pulsar.com,z3.pulsar.com");
+        printWriter.println("globalZookeeperServers=z1.pulsar.com,z2.pulsar.com,z3.pulsar.com");
+        printWriter.println("webServicePort=" + port);
+        printWriter.close();
+        testConfigFile.deleteOnExit();
+
+        ServiceConfig config = PulsarConfigurationLoader.create(testConfigFile.getAbsolutePath(), ServiceConfig.class);
+        // have zookeeperServers and globalZookeeperServers, config is valid
+        // should not throw IllegalArgumentException.
+        DiscoveryServiceStarter.checkConfig(config);
+
+
+        if (testConfigFile.exists()) {
+            testConfigFile.delete();
+        }
+        PrintWriter printWriter2 = new PrintWriter(new OutputStreamWriter(new FileOutputStream(testConfigFile)));
+        printWriter2.println("zookeeperServers=z1.pulsar.com,z2.pulsar.com,z3.pulsar.com");
+        printWriter2.println("configurationStoreServers=z1.pulsar.com,z2.pulsar.com,z3.pulsar.com");
+        printWriter2.println("webServicePort=" + port);
+        printWriter2.close();
+        config = PulsarConfigurationLoader.create(testConfigFile.getAbsolutePath(), ServiceConfig.class);
+        // have zookeeperServers and configurationStoreServers, config is valid
+        // should not throw IllegalArgumentException.
+        DiscoveryServiceStarter.checkConfig(config);
+
+
+        if (testConfigFile.exists()) {
+            testConfigFile.delete();
+        }
+        PrintWriter printWriter3 = new PrintWriter(new OutputStreamWriter(new FileOutputStream(testConfigFile)));
+        printWriter3.println("zookeeperServers=z1.pulsar.com,z2.pulsar.com,z3.pulsar.com");
+        printWriter3.println("webServicePort=" + port);
+        printWriter3.close();
+        config = PulsarConfigurationLoader.create(testConfigFile.getAbsolutePath(), ServiceConfig.class);
+        // only have zookeeperServers
+        // should throw IllegalArgumentException.
+        try {
+            DiscoveryServiceStarter.checkConfig(config);
+        } catch (IllegalArgumentException e) {
+            // expected: configure error
+        }
+
+        testConfigFile.delete();
+    }
+
 }
diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java
index d03838151b..56e6cc560b 100644
--- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java
+++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/BrokerDiscoveryProvider.java
@@ -71,7 +71,7 @@ public BrokerDiscoveryProvider(ProxyConfiguration config, ZooKeeperClientFactory
             localZkCache = new ZookeeperCacheLoader(zkClientFactory, config.getZookeeperServers(),
                     config.getZookeeperSessionTimeoutMs());
             globalZkCache = new GlobalZooKeeperCache(zkClientFactory, config.getZookeeperSessionTimeoutMs(),
-                    config.getGlobalZookeeperServers(), orderedExecutor, scheduledExecutorScheduler);
+                    config.getConfigurationStoreServers(), orderedExecutor, scheduledExecutorScheduler);
             globalZkCache.start();
         } catch (Exception e) {
             LOG.error("Failed to start Zookkeeper {}", e.getMessage(), e);
diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java
index 43b8d56e87..dcd9580bda 100644
--- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java
+++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConfiguration.java
@@ -30,9 +30,13 @@
 
     // Local-Zookeeper quorum connection string
     private String zookeeperServers;
+    @Deprecated
     // Global-Zookeeper quorum connection string
     private String globalZookeeperServers;
 
+    // Configuration Store connection string
+    private String configurationStoreServers;
+
     // ZooKeeper session timeout
     private int zookeeperSessionTimeoutMs = 30_000;
 
@@ -49,7 +53,7 @@
     private int webServicePort = 8080;
     // Port to use to server HTTPS request
     private int webServicePortTls = 8443;
-    
+
     // Path for the file used to determine the rotation status for the broker
     // when responding to service discovery health checks
     private String statusFilePath;
@@ -142,14 +146,24 @@ public void setZookeeperServers(String zookeeperServers) {
         this.zookeeperServers = zookeeperServers;
     }
 
+    @Deprecated
     public String getGlobalZookeeperServers() {
         return globalZookeeperServers;
     }
 
+    @Deprecated
     public void setGlobalZookeeperServers(String globalZookeeperServers) {
         this.globalZookeeperServers = globalZookeeperServers;
     }
 
+    public String getConfigurationStoreServers() {
+        return null == configurationStoreServers ? getGlobalZookeeperServers() : configurationStoreServers;
+    }
+
+    public void setConfigurationStoreServers(String configurationStoreServers) {
+        this.configurationStoreServers = configurationStoreServers;
+    }
+
     public int getZookeeperSessionTimeoutMs() {
         return zookeeperSessionTimeoutMs;
     }
diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java
index e79807733d..48293beef7 100644
--- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java
+++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyService.java
@@ -119,7 +119,7 @@ public void start() throws Exception {
         ServiceConfiguration serviceConfiguration = PulsarConfigurationLoader.convertFrom(proxyConfig);
         authenticationService = new AuthenticationService(serviceConfiguration);
 
-        if (!isBlank(proxyConfig.getZookeeperServers()) && !isBlank(proxyConfig.getGlobalZookeeperServers())) {
+        if (!isBlank(proxyConfig.getZookeeperServers()) && !isBlank(proxyConfig.getConfigurationStoreServers())) {
             discoveryProvider = new BrokerDiscoveryProvider(this.proxyConfig, getZooKeeperClientFactory());
             this.configurationCacheService = new ConfigurationCacheService(discoveryProvider.globalZkCache);
             authorizationService = new AuthorizationService(serviceConfiguration, configurationCacheService);
@@ -214,4 +214,4 @@ public Semaphore getLookupRequestSemaphore() {
     }
 
     private static final Logger LOG = LoggerFactory.getLogger(ProxyService.class);
-}
\ No newline at end of file
+}
diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java
index 0738893dae..77fcd77048 100644
--- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java
+++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyServiceStarter.java
@@ -53,9 +53,14 @@
     @Parameter(names = { "-zk", "--zookeeper-servers" }, description = "Local zookeeper connection string")
     private String zookeeperServers = "";
 
+    @Deprecated
     @Parameter(names = { "-gzk", "--global-zookeeper-servers" }, description = "Global zookeeper connection string")
     private String globalZookeeperServers = "";
 
+    @Parameter(names = { "-cs", "--configuration-store-servers" },
+        description = "Configuration store connection string")
+    private String configurationStoreServers = "";
+
     @Parameter(names = { "-h", "--help" }, description = "Show this help message")
     private boolean help = false;
 
@@ -90,13 +95,17 @@ public ProxyServiceStarter(String[] args) throws Exception {
 
         if (!isBlank(globalZookeeperServers)) {
             // Use globalZookeeperServers from command line
-            config.setGlobalZookeeperServers(globalZookeeperServers);
+            config.setConfigurationStoreServers(globalZookeeperServers);
+        }
+        if (!isBlank(configurationStoreServers)) {
+            // Use configurationStoreServers from command line
+            config.setConfigurationStoreServers(configurationStoreServers);
         }
 
         if ((isBlank(config.getBrokerServiceURL()) && isBlank(config.getBrokerServiceURLTLS()))
                 || config.isAuthorizationEnabled()) {
             checkArgument(!isEmpty(config.getZookeeperServers()), "zookeeperServers must be provided");
-            checkArgument(!isEmpty(config.getGlobalZookeeperServers()), "globalZookeeperServers must be provided");
+            checkArgument(!isEmpty(config.getConfigurationStoreServers()), "configurationStoreServers must be provided");
         }
 
         java.security.Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java
index ca72616d43..fba6010785 100644
--- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java
+++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyAuthenticatedProducerConsumerTest.java
@@ -117,7 +117,7 @@ protected void setup() throws Exception {
         proxyConfig.setAuthenticationProviders(providers);
 
         proxyConfig.setZookeeperServers(DUMMY_VALUE);
-        proxyConfig.setGlobalZookeeperServers(DUMMY_VALUE);
+        proxyConfig.setConfigurationStoreServers(DUMMY_VALUE);
 
         proxyService = Mockito.spy(new ProxyService(proxyConfig));
         doReturn(mockZooKeeperClientFactory).when(proxyService).getZooKeeperClientFactory();
diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionThrottlingTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionThrottlingTest.java
index 1658e21677..91e3523c6a 100644
--- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionThrottlingTest.java
+++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionThrottlingTest.java
@@ -47,7 +47,7 @@ protected void setup() throws Exception {
 
         proxyConfig.setServicePort(PortManager.nextFreePort());
         proxyConfig.setZookeeperServers(DUMMY_VALUE);
-        proxyConfig.setGlobalZookeeperServers(DUMMY_VALUE);
+        proxyConfig.setConfigurationStoreServers(DUMMY_VALUE);
         proxyConfig.setMaxConcurrentLookupRequests(NUM_CONCURRENT_LOOKUP);
         proxyConfig.setMaxConcurrentInboundConnections(NUM_CONCURRENT_INBOUND_CONNECTION);
         proxyService = Mockito.spy(new ProxyService(proxyConfig));
diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyLookupThrottlingTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyLookupThrottlingTest.java
index 4411f80972..07eb1378a0 100644
--- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyLookupThrottlingTest.java
+++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyLookupThrottlingTest.java
@@ -46,7 +46,7 @@ protected void setup() throws Exception {
 
         proxyConfig.setServicePort(PortManager.nextFreePort());
         proxyConfig.setZookeeperServers(DUMMY_VALUE);
-        proxyConfig.setGlobalZookeeperServers(DUMMY_VALUE);
+        proxyConfig.setConfigurationStoreServers(DUMMY_VALUE);
         proxyConfig.setMaxConcurrentLookupRequests(NUM_CONCURRENT_LOOKUP);
         proxyConfig.setMaxConcurrentInboundConnections(NUM_CONCURRENT_INBOUND_CONNECTION);
         proxyService = Mockito.spy(new ProxyService(proxyConfig));
diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java
index 5c994b03b5..8647994c10 100644
--- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java
+++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTest.java
@@ -51,7 +51,7 @@ protected void setup() throws Exception {
 
         proxyConfig.setServicePort(PortManager.nextFreePort());
         proxyConfig.setZookeeperServers(DUMMY_VALUE);
-        proxyConfig.setGlobalZookeeperServers(DUMMY_VALUE);
+        proxyConfig.setConfigurationStoreServers(DUMMY_VALUE);
 
         proxyService = Mockito.spy(new ProxyService(proxyConfig));
         doReturn(mockZooKeeperClientFactory).when(proxyService).getZooKeeperClientFactory();
diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java
index 5243b9e7d2..a2332a8be0 100644
--- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java
+++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyTlsTest.java
@@ -60,7 +60,7 @@ protected void setup() throws Exception {
         proxyConfig.setTlsCertificateFilePath(TLS_PROXY_CERT_FILE_PATH);
         proxyConfig.setTlsKeyFilePath(TLS_PROXY_KEY_FILE_PATH);
         proxyConfig.setZookeeperServers(DUMMY_VALUE);
-        proxyConfig.setGlobalZookeeperServers(DUMMY_VALUE);
+        proxyConfig.setConfigurationStoreServers(DUMMY_VALUE);
 
         proxyService = Mockito.spy(new ProxyService(proxyConfig));
         doReturn(mockZooKeeperClientFactory).when(proxyService).getZooKeeperClientFactory();
diff --git a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java
index b917dc2447..6660cd8303 100644
--- a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java
+++ b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/WebSocketService.java
@@ -99,9 +99,9 @@ public WebSocketService(ClusterData localCluster, ServiceConfiguration config) {
     public void start() throws PulsarServerException, PulsarClientException, MalformedURLException, ServletException,
             DeploymentException {
 
-        if (isNotBlank(config.getGlobalZookeeperServers())) {
+        if (isNotBlank(config.getConfigurationStoreServers())) {
             this.globalZkCache = new GlobalZooKeeperCache(getZooKeeperClientFactory(),
-                    (int) config.getZooKeeperSessionTimeoutMillis(), config.getGlobalZookeeperServers(),
+                    (int) config.getZooKeeperSessionTimeoutMillis(), config.getConfigurationStoreServers(),
                     this.orderedExecutor, this.executor);
             try {
                 this.globalZkCache.start();
@@ -116,7 +116,7 @@ public void start() throws PulsarServerException, PulsarClientException, Malform
         if (config.isAuthorizationEnabled()) {
             if (configurationCacheService == null) {
                 throw new PulsarServerException(
-                        "Failed to initialize authorization manager due to empty GlobalZookeeperServers");
+                        "Failed to initialize authorization manager due to empty ConfigurationStoreServers");
             }
             authorizationService = new AuthorizationService(this.config, configurationCacheService);
         }
@@ -218,7 +218,8 @@ private static ClusterData createClusterData(WebSocketProxyConfiguration config)
 
     private ClusterData retrieveClusterData() throws PulsarServerException {
         if (configurationCacheService == null) {
-            throw new PulsarServerException("Failed to retrieve Cluster data due to empty GlobalZookeeperServers");
+            throw new PulsarServerException(
+                "Failed to retrieve Cluster data due to empty ConfigurationStoreServers");
         }
         try {
             String path = "/admin/clusters/" + config.getClusterName();
diff --git a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/WebSocketProxyConfiguration.java b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/WebSocketProxyConfiguration.java
index 0126d49c6b..b79072387d 100644
--- a/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/WebSocketProxyConfiguration.java
+++ b/pulsar-websocket/src/main/java/org/apache/pulsar/websocket/service/WebSocketProxyConfiguration.java
@@ -40,18 +40,20 @@
     @FieldContext(required = true)
     private String clusterName;
 
-    // Pulsar cluster url to connect to broker (optional if globalZookeeperServers present)
+    // Pulsar cluster url to connect to broker (optional if configurationStoreServers present)
     private String serviceUrl;
     private String serviceUrlTls;
     private String brokerServiceUrl;
     private String brokerServiceUrlTls;
-    
+
     // Path for the file used to determine the rotation status for the broker
     // when responding to service discovery health checks
     private String statusFilePath;
 
-    // Global Zookeeper quorum connection string
+    // Configuration Store connection string
+    @Deprecated
     private String globalZookeeperServers;
+    private String configurationStoreServers;
     // Zookeeper session timeout in milliseconds
     private long zooKeeperSessionTimeoutMillis = 30000;
 
@@ -159,14 +161,24 @@ public void setStatusFilePath(String statusFilePath) {
         this.statusFilePath = statusFilePath;
     }
 
+    @Deprecated
     public String getGlobalZookeeperServers() {
         return globalZookeeperServers;
     }
 
+    @Deprecated
     public void setGlobalZookeeperServers(String globalZookeeperServers) {
         this.globalZookeeperServers = globalZookeeperServers;
     }
 
+    public String getConfigurationStoreServers() {
+        return null == configurationStoreServers ? getGlobalZookeeperServers() : configurationStoreServers;
+    }
+
+    public void setConfigurationStoreServers(String configurationStoreServers) {
+        this.configurationStoreServers = configurationStoreServers;
+    }
+
     public long getZooKeeperSessionTimeoutMillis() {
         return zooKeeperSessionTimeoutMillis;
     }
diff --git a/pulsar-zookeeper/src/main/java/org/apache/pulsar/zookeeper/GlobalZooKeeperStarter.java b/pulsar-zookeeper/src/main/java/org/apache/pulsar/zookeeper/ConfigurationStoreStarter.java
similarity index 86%
rename from pulsar-zookeeper/src/main/java/org/apache/pulsar/zookeeper/GlobalZooKeeperStarter.java
rename to pulsar-zookeeper/src/main/java/org/apache/pulsar/zookeeper/ConfigurationStoreStarter.java
index d70885b7e6..6f488bb92e 100644
--- a/pulsar-zookeeper/src/main/java/org/apache/pulsar/zookeeper/GlobalZooKeeperStarter.java
+++ b/pulsar-zookeeper/src/main/java/org/apache/pulsar/zookeeper/ConfigurationStoreStarter.java
@@ -21,10 +21,10 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class GlobalZooKeeperStarter extends ZooKeeperStarter {
+public class ConfigurationStoreStarter extends ZooKeeperStarter {
     public static void main(String[] args) throws Exception {
         start(args, "8001");
     }
 
-    private static final Logger log = LoggerFactory.getLogger(GlobalZooKeeperStarter.class);
+    private static final Logger log = LoggerFactory.getLogger(ConfigurationStoreStarter.class);
 }
diff --git a/site/docs/latest/deployment/cluster.md b/site/docs/latest/deployment/cluster.md
index 0a23b0e3f0..773cfa28a6 100644
--- a/site/docs/latest/deployment/cluster.md
+++ b/site/docs/latest/deployment/cluster.md
@@ -142,7 +142,7 @@ You can initialize this metadata using the [`initialize-cluster-metadata`](../..
 $ bin/pulsar initialize-cluster-metadata \
   --cluster pulsar-cluster-1 \
   --zookeeper zk1.us-west.example.com:2181 \
-  --global-zookeeper zk1.us-west.example.com:2181 \
+  --configuration-store zk1.us-west.example.com:2181 \
   --web-service-url http://pulsar.us-west.example.com:8080 \
   --web-service-url-tls https://pulsar.us-west.example.com:8443 \
   --broker-service-url pulsar://pulsar.us-west.example.com:6650 \
@@ -155,7 +155,7 @@ Flag | Description
 :----|:-----------
 `--cluster` | A name for the cluster
 `--zookeeper` | A "local" ZooKeeper connection string for the cluster. This connection string only needs to include *one* machine in the ZooKeeper cluster.
-`--global-zookeeper` | The "global" ZooKeeper connection string for the entire instance. As with the `--zookeeper` flag, this connection string only needs to include *one* machine in the ZooKeeper cluster.
+`--configuration-store` | The configuration store (ZooKeeper) where the configuration policies for all tenants and namespaces across all clusters will be stored. As with the `--zookeeper` flag, this connection string only needs to include *one* machine in the ZooKeeper cluster.
 `--web-service-url` | The web service URL for the cluster, plus a port. This URL should be a standard DNS name. The default port is 8080 (we don't recommend using a different port).
 `--web-service-url-tls` | If you're using [TLS](../../../admin/Authz#tls-client-auth), you'll also need to specify a TLS web service URL for the cluster. The default port is 8443 (we don't recommend using a different port).
 `--broker-service-url` | A broker service URL enabling interaction with the {% popover brokers %} in the cluster. This URL should use the same DNS name as the web service URL but should use the `pulsar` scheme instead. The default port is 6650 (we don't recommend using a different port).
diff --git a/tests/docker-images/latest-version-image/conf/bookie.conf b/tests/docker-images/latest-version-image/conf/bookie.conf
index 53fd06ecdc..030d6adea4 100644
--- a/tests/docker-images/latest-version-image/conf/bookie.conf
+++ b/tests/docker-images/latest-version-image/conf/bookie.conf
@@ -22,5 +22,5 @@ autostart=false
 redirect_stderr=true
 stdout_logfile=/var/log/pulsar/bookie.log
 directory=/pulsar
+environment=PULSAR_MEM=-Xms128M
 command=/pulsar/bin/pulsar bookie
-
diff --git a/tests/docker-images/latest-version-image/conf/broker.conf b/tests/docker-images/latest-version-image/conf/broker.conf
index ca8843f03d..5492abf89c 100644
--- a/tests/docker-images/latest-version-image/conf/broker.conf
+++ b/tests/docker-images/latest-version-image/conf/broker.conf
@@ -22,5 +22,6 @@ autostart=false
 redirect_stderr=true
 stdout_logfile=/var/log/pulsar/broker.log
 directory=/pulsar
+environment=PULSAR_MEM=-Xms128M
 command=/pulsar/bin/pulsar broker
 
diff --git a/tests/docker-images/latest-version-image/conf/global-zk.conf b/tests/docker-images/latest-version-image/conf/global-zk.conf
index f589adecd3..5c6edaae70 100644
--- a/tests/docker-images/latest-version-image/conf/global-zk.conf
+++ b/tests/docker-images/latest-version-image/conf/global-zk.conf
@@ -22,5 +22,6 @@ autostart=false
 redirect_stderr=true
 stdout_logfile=/var/log/pulsar/global-zk.log
 directory=/pulsar
-command=/pulsar/bin/pulsar global-zookeeper
+environment=PULSAR_MEM=-Xms128M
+command=/pulsar/bin/pulsar configuration-store
 
diff --git a/tests/docker-images/latest-version-image/conf/local-zk.conf b/tests/docker-images/latest-version-image/conf/local-zk.conf
index f5daba03e3..2822cb1b8c 100644
--- a/tests/docker-images/latest-version-image/conf/local-zk.conf
+++ b/tests/docker-images/latest-version-image/conf/local-zk.conf
@@ -22,5 +22,6 @@ autostart=false
 redirect_stderr=true
 stdout_logfile=/var/log/pulsar/local-zk.log
 directory=/pulsar
+environment=PULSAR_MEM=-Xms128M
 command=/pulsar/bin/pulsar zookeeper
 
diff --git a/tests/docker-images/latest-version-image/conf/proxy.conf b/tests/docker-images/latest-version-image/conf/proxy.conf
index 7ab7e8fe90..359e65759e 100644
--- a/tests/docker-images/latest-version-image/conf/proxy.conf
+++ b/tests/docker-images/latest-version-image/conf/proxy.conf
@@ -21,6 +21,8 @@
 autostart=false
 redirect_stderr=true
 stdout_logfile=/var/log/pulsar/proxy.log
+stderr_logfile=/var/log/pulsar/proxy-stderr.log
 directory=/pulsar
+environment=PULSAR_MEM=-Xms128M
 command=/pulsar/bin/pulsar proxy
 
diff --git a/tests/docker-images/latest-version-image/scripts/init-cluster.sh b/tests/docker-images/latest-version-image/scripts/init-cluster.sh
index e4403b3af5..d70e257c8c 100755
--- a/tests/docker-images/latest-version-image/scripts/init-cluster.sh
+++ b/tests/docker-images/latest-version-image/scripts/init-cluster.sh
@@ -27,7 +27,7 @@ if [ $? != 0 ]; then
     echo Initializing cluster
     bin/apply-config-from-env.py conf/bookkeeper.conf &&
         bin/pulsar initialize-cluster-metadata --cluster $cluster --zookeeper $zkServers \
-                   --global-zookeeper $globalZkServers --web-service-url http://$pulsarNode:8080/ \
+                   --configuration-store $configurationStore --web-service-url http://$pulsarNode:8080/ \
                    --broker-service-url http://$pulsarNode:6650/ &&
         bin/watch-znode.py -z $zkServers -p $ZNODE -c
     echo Initialized
diff --git a/tests/integration-tests-base/pom.xml b/tests/integration-tests-base/pom.xml
index 6017744f6d..37b8f70f45 100644
--- a/tests/integration-tests-base/pom.xml
+++ b/tests/integration-tests-base/pom.xml
@@ -31,7 +31,6 @@
     <version>2.0.0-incubating-SNAPSHOT</version>
   </parent>
 
-  <groupId>org.apache.pulsar.tests</groupId>
   <artifactId>integration-tests-base</artifactId>
   <packaging>pom</packaging>
 
diff --git a/tests/integration-tests-topologies/src/main/resources/cube-definitions/single-cluster-3-bookie-2-broker-unstarted.yaml b/tests/integration-tests-topologies/src/main/resources/cube-definitions/single-cluster-3-bookie-2-broker-unstarted.yaml
index a77d34d4bf..d2c34cc845 100644
--- a/tests/integration-tests-topologies/src/main/resources/cube-definitions/single-cluster-3-bookie-2-broker-unstarted.yaml
+++ b/tests/integration-tests-topologies/src/main/resources/cube-definitions/single-cluster-3-bookie-2-broker-unstarted.yaml
@@ -37,17 +37,17 @@ zookeeper*:
         strategy: org.apache.pulsar.tests.PulsarLogsToTargetDirStopAction
   networkMode: pulsarnet*
 
-global-zookeeper*:
+configuration-store*:
   image: apachepulsar/pulsar-test-latest-version:latest
   await:
     strategy: org.apache.pulsar.tests.NoopAwaitStrategy
-  env: [ZOOKEEPER_SERVERS=zookeeper]
+  env: [ZOOKEEPER_SERVERS=configuration-store]
   labels:
     cluster: test
-    service: global-zookeeper
+    service: configuration-store
   entryPoint: [bin/run-global-zk.sh]
   aliases:
-    - global-zookeeper
+    - configuration-store
   beforeStop:
     - customBeforeStopAction:
         strategy: org.apache.pulsar.tests.PulsarLogsToTargetDirStopAction
@@ -60,7 +60,7 @@ init*:
   env:
     - cluster=test
     - zkServers=zookeeper
-    - globalZkServers=global-zookeeper:2184
+    - configurationStore=configuration-store:2184
     - pulsarNode=pulsar-broker1
   labels:
     cluster: test
@@ -127,7 +127,7 @@ pulsar-broker1*:
     - pulsar-broker1
   env:
     - zookeeperServers=zookeeper
-    - globalZookeeperServers=global-zookeeper:2184
+    - configurationStoreServers=configuration-store:2184
     - clusterName=test
     - NO_AUTOSTART=true
   labels:
@@ -147,7 +147,7 @@ pulsar-broker2*:
     - pulsar-broker2
   env:
     - zookeeperServers=zookeeper
-    - globalZookeeperServers=global-zookeeper:2184
+    - configurationStoreServers=configuration-store:2184
     - clusterName=test
     - NO_AUTOSTART=true
   labels:
@@ -167,7 +167,7 @@ pulsar-proxy*:
     - pulsar-broker2
   env:
     - zookeeperServers=zookeeper
-    - globalZookeeperServers=global-zookeeper:2184
+    - configurationStoreServers=configuration-store:2184
     - clusterName=test
     - NO_AUTOSTART=true
   labels:
diff --git a/tests/integration-tests-topologies/src/main/resources/cube-definitions/single-cluster-3-bookie-2-broker.yaml b/tests/integration-tests-topologies/src/main/resources/cube-definitions/single-cluster-3-bookie-2-broker.yaml
index dd12abd273..3695f2a2c9 100644
--- a/tests/integration-tests-topologies/src/main/resources/cube-definitions/single-cluster-3-bookie-2-broker.yaml
+++ b/tests/integration-tests-topologies/src/main/resources/cube-definitions/single-cluster-3-bookie-2-broker.yaml
@@ -37,17 +37,17 @@ zookeeper*:
         strategy: org.apache.pulsar.tests.PulsarLogsToTargetDirStopAction
   networkMode: pulsarnet*
 
-global-zookeeper*:
+configuration-store*:
   image: apachepulsar/pulsar-test-latest-version:latest
   await:
     strategy: org.apache.pulsar.tests.NoopAwaitStrategy
-  env: [ZOOKEEPER_SERVERS=zookeeper]
+  env: [ZOOKEEPER_SERVERS=configuration-store]
   labels:
     cluster: test
-    service: global-zookeeper
+    service: configuration-store
   entryPoint: [bin/run-global-zk.sh]
   aliases:
-    - global-zookeeper
+    - configuration-store
   beforeStop:
     - customBeforeStopAction:
         strategy: org.apache.pulsar.tests.PulsarLogsToTargetDirStopAction
@@ -60,7 +60,7 @@ init*:
   env:
     - cluster=test
     - zkServers=zookeeper
-    - globalZkServers=global-zookeeper:2184
+    - configurationStore=configuration-store:2184
     - pulsarNode=pulsar-broker1
   labels:
     cluster: test
@@ -127,7 +127,7 @@ pulsar-broker1*:
     - pulsar-broker1
   env:
     - zookeeperServers=zookeeper
-    - globalZookeeperServers=global-zookeeper:2184
+    - configurationStoreServers=configuration-store:2184
     - clusterName=test
   labels:
     cluster: test
@@ -146,7 +146,7 @@ pulsar-broker2*:
     - pulsar-broker2
   env:
     - zookeeperServers=zookeeper
-    - globalZookeeperServers=global-zookeeper:2184
+    - configurationStoreServers=configuration-store:2184
     - clusterName=test
   labels:
     cluster: test
@@ -165,7 +165,7 @@ pulsar-proxy*:
     - pulsar-broker2
   env:
     - zookeeperServers=zookeeper
-    - globalZookeeperServers=global-zookeeper:2184
+    - configurationStoreServers=configuration-store:2184
     - clusterName=test
   labels:
     cluster: test
diff --git a/tests/integration-tests-utils/src/main/java/org/apache/pulsar/tests/DockerUtils.java b/tests/integration-tests-utils/src/main/java/org/apache/pulsar/tests/DockerUtils.java
index fb69dc7a6e..b815b51171 100644
--- a/tests/integration-tests-utils/src/main/java/org/apache/pulsar/tests/DockerUtils.java
+++ b/tests/integration-tests-utils/src/main/java/org/apache/pulsar/tests/DockerUtils.java
@@ -183,6 +183,7 @@ public void onComplete() {
         }
         int retCode = resp.getExitCode();
         if (retCode != 0) {
+            LOG.error("DOCKER.exec({}:{}): failed with {} : {}", containerId, cmdString, retCode, output);
             throw new RuntimeException(
                     String.format("cmd(%s) failed on %s with exitcode %d",
                                   cmdString, containerId, retCode));
diff --git a/tests/integration-tests-utils/src/main/java/org/apache/pulsar/tests/PulsarClusterUtils.java b/tests/integration-tests-utils/src/main/java/org/apache/pulsar/tests/PulsarClusterUtils.java
index ff82b8d454..984dadc1d9 100644
--- a/tests/integration-tests-utils/src/main/java/org/apache/pulsar/tests/PulsarClusterUtils.java
+++ b/tests/integration-tests-utils/src/main/java/org/apache/pulsar/tests/PulsarClusterUtils.java
@@ -41,6 +41,9 @@
     private static final Logger LOG = LoggerFactory.getLogger(PulsarClusterUtils.class);
     static final short BROKER_PORT = 8080;
 
+    public static final String PULSAR_ADMIN = "/pulsar/bin/pulsar-admin";
+    public static final String PULSAR = "/pulsar/bin/pulsar";
+
     public static String zookeeperConnectString(DockerClient docker, String cluster) {
         return DockerUtils.cubeIdsWithLabels(docker, ImmutableMap.of("service", "zookeeper", "cluster", cluster))
             .stream().map((id) -> DockerUtils.getContainerIP(docker, id)).collect(Collectors.joining(":"));
@@ -166,6 +169,7 @@ public static boolean waitBrokerUp(DockerClient docker, String containerId,
                     return true;
                 } catch (Exception e) {
                     // couldn't connect, try again after sleep
+                    LOG.info("Failed to connect {} @ {}", ip, BROKER_PORT, e);
                 }
                 try {
                     Thread.sleep(pollMillis);
diff --git a/tests/integration/compaction/src/test/java/org/apache/pulsar/tests/integration/TestCompaction.java b/tests/integration/compaction/src/test/java/org/apache/pulsar/tests/integration/TestCompaction.java
index bd849133f0..5570f05b4f 100644
--- a/tests/integration/compaction/src/test/java/org/apache/pulsar/tests/integration/TestCompaction.java
+++ b/tests/integration/compaction/src/test/java/org/apache/pulsar/tests/integration/TestCompaction.java
@@ -51,14 +51,14 @@ public void waitServicesUp() throws Exception {
     @Test
     public void testPublishCompactAndConsumeCLI() throws Exception {
         PulsarClusterUtils.runOnAnyBroker(docker, clusterName,
-                                          "/pulsar/bin/pulsar-admin", "tenants",
+                                          PulsarClusterUtils.PULSAR_ADMIN, "tenants",
                                           "create", "compaction-test-cli", "--allowed-clusters", clusterName,
                                           "--admin-roles", "admin");
         PulsarClusterUtils.runOnAnyBroker(docker, clusterName,
-                "/pulsar/bin/pulsar-admin", "namespaces",
+                PulsarClusterUtils.PULSAR_ADMIN, "namespaces",
                 "create", "compaction-test-cli/ns1");
         PulsarClusterUtils.runOnAnyBroker(docker, clusterName,
-                "/pulsar/bin/pulsar-admin", "namespaces",
+                PulsarClusterUtils.PULSAR_ADMIN, "namespaces",
                 "set-clusters", "--clusters", "test", "compaction-test-cli/ns1");
 
         String brokerIp = DockerUtils.getContainerIP(
@@ -86,7 +86,7 @@ public void testPublishCompactAndConsumeCLI() throws Exception {
             }
 
             PulsarClusterUtils.runOnAnyBroker(docker, clusterName,
-                                              "/pulsar/bin/pulsar", "compact-topic",
+                                              PulsarClusterUtils.PULSAR, "compact-topic",
                                               "-t", topic);
 
             try (Consumer<byte[]> consumer = client.newConsumer().topic(topic)
@@ -101,14 +101,14 @@ public void testPublishCompactAndConsumeCLI() throws Exception {
     @Test
     public void testPublishCompactAndConsumeRest() throws Exception {
         PulsarClusterUtils.runOnAnyBroker(docker, clusterName,
-                                          "/pulsar/bin/pulsar-admin", "tenants",
+                                          PulsarClusterUtils.PULSAR_ADMIN, "tenants",
                                           "create", "compaction-test-rest", "--allowed-clusters", clusterName,
                                           "--admin-roles", "admin");
         PulsarClusterUtils.runOnAnyBroker(docker, clusterName,
-                "/pulsar/bin/pulsar-admin", "namespaces",
+                PulsarClusterUtils.PULSAR_ADMIN, "namespaces",
                 "create", "compaction-test-rest/ns1");
         PulsarClusterUtils.runOnAnyBroker(docker, clusterName,
-                "/pulsar/bin/pulsar-admin", "namespaces",
+                PulsarClusterUtils.PULSAR_ADMIN, "namespaces",
                 "set-clusters", "--clusters", "test", "compaction-test-rest/ns1");
 
         String brokerIp = DockerUtils.getContainerIP(
@@ -135,7 +135,7 @@ public void testPublishCompactAndConsumeRest() throws Exception {
                 Assert.assertEquals(m.getData(), "content1".getBytes());
             }
             PulsarClusterUtils.runOnAnyBroker(docker, clusterName,
-                    "/pulsar/bin/pulsar-admin", "persistent", "compact", topic);
+                    PulsarClusterUtils.PULSAR_ADMIN, "persistent", "compact", topic);
 
             PulsarClusterUtils.runOnAnyBroker(docker, clusterName,
                                               "/pulsar/bin/pulsar-admin", "persistent", "compaction-status",
diff --git a/tests/integration/smoke/src/test/resources/arquillian.xml b/tests/integration/smoke/src/test/resources/arquillian.xml
index ced9de13b6..73a590813f 100644
--- a/tests/integration/smoke/src/test/resources/arquillian.xml
+++ b/tests/integration/smoke/src/test/resources/arquillian.xml
@@ -25,6 +25,7 @@
                                 http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
 
   <extension qualifier="docker">
+    <property name="serverUri">unix:///var/run/docker.sock</property>
     <property name="definitionFormat">CUBE</property>
     <property name="dockerContainersResource">cube-definitions/single-cluster-3-bookie-2-broker-unstarted.yaml</property>
   </extension>


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

Mime
View raw message