<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 鏡像下載 hub.docker.com 上有不少 ZK 鏡像, 不過為了穩定起見, 我們就使用官方的 ZK 鏡像吧. 首先執行如下命令: ``` docker pull zookeeper ``` ## ZK 鏡像的基本使用 ### 啟動 ZK 鏡像 ``` \>>> docker run --name my\_zookeeper -d zookeeper:latest ``` 這個命令會在后臺運行一個 zookeeper 容器, 名字是?**my\_zookeeper**, 并且它默認會導出 2181 端口. 接著我們使用: ``` >>> docker logs -f my_zookeeper ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg ... 2016-09-14 06:40:03,445 [myid:] - INFO [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181 ``` ### 使用 ZK 命令行客戶端連接 ZK 因為剛才我們啟動的那個 ZK 容器并沒有綁定宿主機的端口, 因此我們不能直接訪問它. 但是我們可以通過 Docker 的 link 機制來對這個 ZK 容器進行訪問. 執行如下命令: ``` docker run -it --rm --link my_zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper ``` 如果對 Docker 有過了解的話, 那么對上面的命令一定不會陌生了. 這個命令的含義是: 1. 啟動一個 zookeeper 鏡像, 并運行這個鏡像內的 zkCli.sh 命令, 命令參數是 "-server zookeeper" 2. 將我們先前啟動的名為 my\_zookeeper 的容器連接(link) 到我們新建的這個容器上, 并將其主機名命名為?**zookeeper** 當我們執行了這個命令后, 就可以像正常使用 ZK 命令行客戶端一樣操作 ZK 服務了. ## ZK 集群的搭建 因為一個一個地啟動 ZK 太麻煩了, 所以為了方便起見, 我直接使用 docker-compose 來啟動 ZK 集群. 首先創建一個名為?**docker-compose.yml**?的文件, 其內容如下: ``` version: '2' services: zoo1: image: zookeeper restart: always container_name: zoo1 ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 zoo2: image: zookeeper restart: always container_name: zoo2 ports: - "2182:2181" environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 zoo3: image: zookeeper restart: always container_name: zoo3 ports: - "2183:2181" environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 ``` 這個配置文件會告訴 Docker 分別運行三個 zookeeper 鏡像, 并分別將本地的 2181, 2182, 2183 端口綁定到對應的容器的2181端口上. **ZOO\_MY\_ID**?和?**ZOO\_SERVERS**?是搭建 ZK 集群需要設置的兩個環境變量, 其中?**ZOO\_MY\_ID**?表示 ZK 服務的 id, 它是1-255 之間的整數, 必須在集群中唯一.?**ZOO\_SERVERS**?是ZK 集群的主機列表. 接著我們在 docker-compose.yml 當前目錄下運行: ``` COMPOSE_PROJECT_NAME=zk_test docker-compose up -d ``` 即可啟動 ZK 集群了. 執行上述命令成功后, 接著在另一個終端中運行?**docker-compose ps**?命令可以查看啟動的 ZK 容器: ``` >>> COMPOSE_PROJECT_NAME=zk_test docker-compose ps Name Command State Ports ---------------------------------------------------------------------- zoo1 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2181->2181/tcp zoo2 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2182->2181/tcp zoo3 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2183->2181/tcp ``` > 注意, 我們在 "docker-compose up" 和 "docker-compose ps" 前都添加了?**COMPOSE\_PROJECT\_NAME=zk\_test**?這個環境變量, 這是為我們的 compose 工程起一個名字, 以免與其他的 compose 混淆. ### 使用 Docker 命令行客戶端連接 ZK 集群 通過?docker-compose ps?命令, 我們知道啟動的 ZK 集群的三個主機名分別是 zoo1, zoo2, zoo3, 因此我們分別 link 它們即可: 先查看 再設置 ``` [root@VM_0_11_centos zk-compose]# docker network ls NETWORK ID NAME DRIVER SCOPE 4f162702f131 bridge bridge local 7f2388c9dc9c host host local b0c21365ce2d none null local bb201a34d460 zk_test_default bridge local ``` #### 使用 Docker 命令行客戶端連接 ZK 集群 ``` docker run -it --rm \ --link zoo1:zk1 \ --link zoo2:zk2 \ --link zoo3:zk3 \ --net zk_test_default \ zookeeper zkCli.sh -server zk1:2181,zk2:2181,zk3:2181 ``` 注: --net zk_test_default \ 設置docker網絡 ``` [zk: zk1:2181,zk2:2181,zk3:2181(CONNECTED) 0] ls2 /registry/HelloService [address-0000000001] cZxid = 0x200000003 ctime = Wed Apr 24 10:29:36 GMT 2019 mZxid = 0x200000003 mtime = Wed Apr 24 10:29:36 GMT 2019 pZxid = 0x200000007 cversion = 3 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 1 ``` Zookeeper命令:https://www.cnblogs.com/leesf456/p/6022357.html ### 通過本地主機連接 ZK 集群 因為我們分別將 zoo1, zoo2, zoo3 的 2181 端口映射到了 本地主機的2181, 2182, 2183 端口上, 因此我們使用如下命令即可連接 ZK 集群了: ``` zkCli.sh?-server?localhost:2181,localhost:2182,localhost:2183 ``` ### 查看集群 我們可以通過 nc 命令連接到指定的 ZK 服務器, 然后發送 stat 可以查看 ZK 服務的狀態, 例如: ``` >>> echo stat | nc 127.0.0.1 2181 Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT Clients: /172.18.0.1:49810[0](queued=0,recved=1,sent=0) Latency min/avg/max: 5/39/74 Received: 4 Sent: 3 Connections: 1 Outstanding: 0 Zxid: 0x200000002 Mode: follower Node count: 4 >>> echo stat | nc 127.0.0.1 2182 Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT Clients: /172.18.0.1:50870[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/0 Received: 2 Sent: 1 Connections: 1 Outstanding: 0 Zxid: 0x200000002 Mode: follower Node count: 4 >>> echo stat | nc 127.0.0.1 2183 Zookeeper version: 3.4.9-1757313, built on 08/23/2016 06:50 GMT Clients: /172.18.0.1:51820[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/0 Received: 2 Sent: 1 Connections: 1 Outstanding: 0 Zxid: 0x200000002 Mode: leader Node count: 4 ``` 通過上面的輸出, 我們可以看到, zoo1, zoo2 都是 follower, 而 zoo3 是 leader, 因此證明了我們的 ZK 集群確實是搭建起來了. 問題總結: #### 1. ``` [root@VM_0_11_centos zk-compose]# COMPOSE_PROJECT_NAME=zk_test docker-compose up Creating network "zk_test_default" with the default driver ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-02cb2c357692 -j RETURN: iptables: No chain/target/match by that name. (exit status 1)) ``` 解決: 原因是關閉防火墻之后docker需要重啟,執行以下命令重啟docker即可: service docker restart #### 2 nc命令不起作用 解決: yum -y install nc
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看