{"id":3580,"date":"2018-06-14T08:19:35","date_gmt":"2018-06-14T00:19:35","guid":{"rendered":"http:\/\/switch.linesno.com\/?p=3580"},"modified":"2018-06-14T08:19:35","modified_gmt":"2018-06-14T00:19:35","slug":"%e4%bd%bf%e7%94%a8-docker%e6%90%ad%e5%bb%ba-zookeeper-%e9%9b%86%e7%be%a4","status":"publish","type":"post","link":"http:\/\/switch.linesno.com\/?p=3580","title":{"rendered":"\u4f7f\u7528 Docker\u642d\u5efa ZooKeeper \u96c6\u7fa4"},"content":{"rendered":"<h2 id=\"articleHeader1\">\u955c\u50cf\u4e0b\u8f7d<\/h2>\n<p>hub.docker.com \u4e0a\u6709\u4e0d\u5c11 ZK \u955c\u50cf, \u4e0d\u8fc7\u4e3a\u4e86\u7a33\u5b9a\u8d77\u89c1, \u6211\u4eec\u5c31\u4f7f\u7528\u5b98\u65b9\u7684 ZK \u955c\u50cf\u5427.<br \/>\n\u9996\u5148\u6267\u884c\u5982\u4e0b\u547d\u4ee4:<\/p>\n<pre class=\"hljs ebnf\"><code><span class=\"hljs-attribute\">docker pull zookeeper<\/span><\/code><\/pre>\n<p>\u5f53\u51fa\u73b0\u5982\u4e0b\u7ed3\u679c\u65f6, \u8868\u793a\u955c\u50cf\u5df2\u7ecf\u4e0b\u8f7d\u5b8c\u6210\u4e86:<\/p>\n<pre class=\"hljs groovy\"><code>&gt;&gt;&gt; docker pull zookeeper\r\nUsing <span class=\"hljs-keyword\">default<\/span> <span class=\"hljs-string\">tag:<\/span> latest\r\n<span class=\"hljs-string\">latest:<\/span> Pulling from library\/zookeeper\r\n<span class=\"hljs-symbol\">\r\ne110a4a17941:<\/span> Pull complete\r\n<span class=\"hljs-string\">a696cba1f6e8:<\/span> Pull complete\r\n<span class=\"hljs-string\">bc427bd93e95:<\/span> Pull complete\r\n<span class=\"hljs-string\">c72391ae24f6:<\/span> Pull complete\r\n<span class=\"hljs-number\">40<\/span><span class=\"hljs-string\">ab409b6b34:<\/span> Pull complete\r\n<span class=\"hljs-string\">d4bb8183b85d:<\/span> Pull complete\r\n<span class=\"hljs-number\">0600755<\/span><span class=\"hljs-string\">f1470:<\/span> Pull complete\r\n<span class=\"hljs-string\">Digest:<\/span> <span class=\"hljs-string\">sha256:<\/span><span class=\"hljs-number\">12458234<\/span>bb9f01336df718b7470cabaf5c357052cbcb91f8e80be07635994464\r\n<span class=\"hljs-string\">Status:<\/span> Downloaded newer image <span class=\"hljs-keyword\">for<\/span> <span class=\"hljs-string\">zookeeper:<\/span>latest<\/code><\/pre>\n<h2 id=\"articleHeader2\"><a name=\"t1\"><\/a>ZK \u955c\u50cf\u7684\u57fa\u672c\u4f7f\u7528<\/h2>\n<h3 id=\"articleHeader3\"><a name=\"t2\"><\/a>\u542f\u52a8 ZK \u955c\u50cf<\/h3>\n<pre class=\"hljs dockerfile\"><code>&gt;&gt;&gt; docker\u00a0<span class=\"hljs-keyword\">run<\/span><span class=\"bash\">\u00a0--name my_zookeeper\u00a0<span class=\"hljs-_\">-d<\/span>\u00a0zookeeper:latest<\/span><\/code><\/pre>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u4f1a\u5728\u540e\u53f0\u8fd0\u884c\u4e00\u4e2a zookeeper \u5bb9\u5668, \u540d\u5b57\u662f\u00a0my_zookeeper, \u5e76\u4e14\u5b83\u9ed8\u8ba4\u4f1a\u5bfc\u51fa 2181 \u7aef\u53e3.<br \/>\n\u63a5\u7740\u6211\u4eec\u4f7f\u7528:<\/p>\n<pre class=\"hljs bash\"><code>docker logs\u00a0<span class=\"hljs-_\">-f<\/span>\u00a0my_zookeeper<\/code><\/pre>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u67e5\u770b ZK \u7684\u8fd0\u884c\u60c5\u51b5, \u8f93\u51fa\u7c7b\u4f3c\u5982\u4e0b\u5185\u5bb9\u65f6, \u8868\u793a ZK \u5df2\u7ecf\u6210\u529f\u542f\u52a8\u4e86:<\/p>\n<pre class=\"hljs groovy\"><code>&gt;&gt;&gt; docker logs -f my_zookeeper\r\nZooKeeper JMX enabled by <span class=\"hljs-keyword\">default<\/span>\r\nUsing <span class=\"hljs-string\">config:<\/span> <span class=\"hljs-regexp\">\/conf\/<\/span>zoo.cfg\r\n...\r\n<span class=\"hljs-number\">2016<\/span><span class=\"hljs-number\">-09<\/span><span class=\"hljs-number\">-14<\/span> <span class=\"hljs-number\">06<\/span>:<span class=\"hljs-number\">40<\/span>:<span class=\"hljs-number\">03<\/span>,<span class=\"hljs-number\">445<\/span> [<span class=\"hljs-string\">myid:<\/span>] - INFO  [<span class=\"hljs-string\">main:<\/span>NIOServerCnxnFactory@<span class=\"hljs-number\">89<\/span>] - binding to port <span class=\"hljs-number\">0.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.0<\/span>\/<span class=\"hljs-number\">0.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.0<\/span>:<span class=\"hljs-number\">2181<\/span><\/code><\/pre>\n<h3 id=\"articleHeader4\"><a name=\"t3\"><\/a>\u4f7f\u7528 ZK \u547d\u4ee4\u884c\u5ba2\u6237\u7aef\u8fde\u63a5 ZK<\/h3>\n<p>\u56e0\u4e3a\u521a\u624d\u6211\u4eec\u542f\u52a8\u7684\u90a3\u4e2a ZK \u5bb9\u5668\u5e76\u6ca1\u6709\u7ed1\u5b9a\u5bbf\u4e3b\u673a\u7684\u7aef\u53e3, \u56e0\u6b64\u6211\u4eec\u4e0d\u80fd\u76f4\u63a5\u8bbf\u95ee\u5b83. \u4f46\u662f\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7 Docker \u7684 link \u673a\u5236\u6765\u5bf9\u8fd9\u4e2a ZK \u5bb9\u5668\u8fdb\u884c\u8bbf\u95ee. \u6267\u884c\u5982\u4e0b\u547d\u4ee4:<\/p>\n<pre class=\"hljs applescript\"><code>docker\u00a0<span class=\"hljs-built_in\">run<\/span>\u00a0-<span class=\"hljs-keyword\">it<\/span>\u00a0<span class=\"hljs-comment\">--rm --link my_zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper<\/span><\/code><\/pre>\n<p>\u5982\u679c\u5bf9 Docker \u6709\u8fc7\u4e86\u89e3\u7684\u8bdd, \u90a3\u4e48\u5bf9\u4e0a\u9762\u7684\u547d\u4ee4\u4e00\u5b9a\u4e0d\u4f1a\u964c\u751f\u4e86.<br \/>\n\u8fd9\u4e2a\u547d\u4ee4\u7684\u542b\u4e49\u662f:<\/p>\n<ol>\n<li>\u542f\u52a8\u4e00\u4e2a zookeeper \u955c\u50cf, \u5e76\u8fd0\u884c\u8fd9\u4e2a\u955c\u50cf\u5185\u7684 zkCli.sh \u547d\u4ee4, \u547d\u4ee4\u53c2\u6570\u662f &#8220;-server zookeeper&#8221;<\/li>\n<li>\u5c06\u6211\u4eec\u5148\u524d\u542f\u52a8\u7684\u540d\u4e3a my_zookeeper \u7684\u5bb9\u5668\u8fde\u63a5(link) \u5230\u6211\u4eec\u65b0\u5efa\u7684\u8fd9\u4e2a\u5bb9\u5668\u4e0a, \u5e76\u5c06\u5176\u4e3b\u673a\u540d\u547d\u540d\u4e3a\u00a0zookeeper<\/li>\n<\/ol>\n<p>\u5f53\u6211\u4eec\u6267\u884c\u4e86\u8fd9\u4e2a\u547d\u4ee4\u540e, \u5c31\u53ef\u4ee5\u50cf\u6b63\u5e38\u4f7f\u7528 ZK \u547d\u4ee4\u884c\u5ba2\u6237\u7aef\u4e00\u6837\u64cd\u4f5c ZK \u670d\u52a1\u4e86.<\/p>\n<h2 id=\"articleHeader5\"><a name=\"t4\"><\/a>ZK \u96c6\u7fa4\u7684\u642d\u5efa<\/h2>\n<p>\u56e0\u4e3a\u4e00\u4e2a\u4e00\u4e2a\u5730\u542f\u52a8 ZK \u592a\u9ebb\u70e6\u4e86, \u6240\u4ee5\u4e3a\u4e86\u65b9\u4fbf\u8d77\u89c1, \u6211\u76f4\u63a5\u4f7f\u7528 docker-compose \u6765\u542f\u52a8 ZK \u96c6\u7fa4.<br \/>\n\u9996\u5148\u521b\u5efa\u4e00\u4e2a\u540d\u4e3a\u00a0docker-compose.yml\u00a0\u7684\u6587\u4ef6, \u5176\u5185\u5bb9\u5982\u4e0b:<\/p>\n<pre class=\"hljs dts\"><code><span class=\"hljs-symbol\">version:<\/span> <span class=\"hljs-string\">'2'<\/span>\r\n<span class=\"hljs-symbol\">services:<\/span>\r\n<span class=\"hljs-symbol\">    zoo1:<\/span>\r\n<span class=\"hljs-symbol\">        image:<\/span> zookeeper\r\n<span class=\"hljs-symbol\">        restart:<\/span> always\r\n<span class=\"hljs-symbol\">        container_name:<\/span> zoo1\r\n<span class=\"hljs-symbol\">        ports:<\/span>\r\n            - <span class=\"hljs-string\">\"2181:2181\"<\/span>\r\n<span class=\"hljs-symbol\">        environment:<\/span>\r\n<span class=\"hljs-symbol\">            ZOO_MY_ID:<\/span> <span class=\"hljs-number\">1<\/span>\r\n<span class=\"hljs-symbol\">            ZOO_SERVERS:<\/span> server<span class=\"hljs-number\">.1<\/span>=zoo1:<span class=\"hljs-number\">2888<\/span>:<span class=\"hljs-number\">3888<\/span> server<span class=\"hljs-number\">.2<\/span>=zoo2:<span class=\"hljs-number\">2888<\/span>:<span class=\"hljs-number\">3888<\/span> server<span class=\"hljs-number\">.3<\/span>=zoo3:<span class=\"hljs-number\">2888<\/span>:<span class=\"hljs-number\">3888<\/span>\r\n<span class=\"hljs-symbol\">\r\n    zoo2:<\/span>\r\n<span class=\"hljs-symbol\">        image:<\/span> zookeeper\r\n<span class=\"hljs-symbol\">        restart:<\/span> always\r\n<span class=\"hljs-symbol\">        container_name:<\/span> zoo2\r\n<span class=\"hljs-symbol\">        ports:<\/span>\r\n            - <span class=\"hljs-string\">\"2182:2181\"<\/span>\r\n<span class=\"hljs-symbol\">        environment:<\/span>\r\n<span class=\"hljs-symbol\">            ZOO_MY_ID:<\/span> <span class=\"hljs-number\">2<\/span>\r\n<span class=\"hljs-symbol\">            ZOO_SERVERS:<\/span> server<span class=\"hljs-number\">.1<\/span>=zoo1:<span class=\"hljs-number\">2888<\/span>:<span class=\"hljs-number\">3888<\/span> server<span class=\"hljs-number\">.2<\/span>=zoo2:<span class=\"hljs-number\">2888<\/span>:<span class=\"hljs-number\">3888<\/span> server<span class=\"hljs-number\">.3<\/span>=zoo3:<span class=\"hljs-number\">2888<\/span>:<span class=\"hljs-number\">3888<\/span>\r\n<span class=\"hljs-symbol\">\r\n    zoo3:<\/span>\r\n<span class=\"hljs-symbol\">        image:<\/span> zookeeper<\/code><\/pre>\n<pre class=\"hljs dts\"><code><span class=\"hljs-symbol\">        restart:<\/span> always\r\n<span class=\"hljs-symbol\">        container_name:<\/span> zoo3\r\n<span class=\"hljs-symbol\">        ports:<\/span>\r\n            - <span class=\"hljs-string\">\"2183:2181\"<\/span>\r\n<span class=\"hljs-symbol\">        environment:<\/span>\r\n<span class=\"hljs-symbol\">            ZOO_MY_ID:<\/span> <span class=\"hljs-number\">3<\/span>\r\n<span class=\"hljs-symbol\">            ZOO_SERVERS:<\/span> server<span class=\"hljs-number\">.1<\/span>=zoo1:<span class=\"hljs-number\">2888<\/span>:<span class=\"hljs-number\">3888<\/span> server<span class=\"hljs-number\">.2<\/span>=zoo2:<span class=\"hljs-number\">2888<\/span>:<span class=\"hljs-number\">3888<\/span> server<span class=\"hljs-number\">.3<\/span>=zoo3:<span class=\"hljs-number\">2888<\/span>:<span class=\"hljs-number\">3888<\/span><\/code><\/pre>\n<p>\u8fd9\u4e2a\u914d\u7f6e\u6587\u4ef6\u4f1a\u544a\u8bc9 Docker \u5206\u522b\u8fd0\u884c\u4e09\u4e2a zookeeper \u955c\u50cf, \u5e76\u5206\u522b\u5c06\u672c\u5730\u7684 2181, 2182, 2183 \u7aef\u53e3\u7ed1\u5b9a\u5230\u5bf9\u5e94\u7684\u5bb9\u5668\u76842181\u7aef\u53e3\u4e0a.<br \/>\nZOO_MY_ID\u00a0\u548c\u00a0ZOO_SERVERS\u00a0\u662f\u642d\u5efa ZK \u96c6\u7fa4\u9700\u8981\u8bbe\u7f6e\u7684\u4e24\u4e2a\u73af\u5883\u53d8\u91cf, \u5176\u4e2d\u00a0ZOO_MY_ID\u00a0\u8868\u793a ZK \u670d\u52a1\u7684 id, \u5b83\u662f1-255 \u4e4b\u95f4\u7684\u6574\u6570, \u5fc5\u987b\u5728\u96c6\u7fa4\u4e2d\u552f\u4e00.\u00a0ZOO_SERVERS\u00a0\u662fZK \u96c6\u7fa4\u7684\u4e3b\u673a\u5217\u8868.<\/p>\n<p>\u63a5\u7740\u6211\u4eec\u5728 docker-compose.yml \u5f53\u524d\u76ee\u5f55\u4e0b\u8fd0\u884c:<\/p>\n<pre class=\"hljs ini\"><code><span class=\"hljs-attr\">COMPOSE_PROJECT_NAME<\/span>=zk_test docker-compose up<\/code><\/pre>\n<p>\u5373\u53ef\u542f\u52a8 ZK \u96c6\u7fa4\u4e86.<br \/>\n\u6267\u884c\u4e0a\u8ff0\u547d\u4ee4\u6210\u529f\u540e, \u63a5\u7740\u5728\u53e6\u4e00\u4e2a\u7ec8\u7aef\u4e2d\u8fd0\u884c\u00a0docker-compose ps\u00a0\u547d\u4ee4\u53ef\u4ee5\u67e5\u770b\u542f\u52a8\u7684 ZK \u5bb9\u5668:<\/p>\n<pre class=\"hljs x86asm\"><code>&gt;&gt;&gt; COMPOSE_PROJECT_NAME=zk_test docker-compose ps\r\nName              Command               State           Ports\r\n----------------------------------------------------------------------\r\nzoo1   \/docker-entrypoint.sh zkSe ...   <span class=\"hljs-meta\">Up<\/span>      <span class=\"hljs-number\">0.0<\/span><span class=\"hljs-meta\">.0<\/span><span class=\"hljs-meta\">.0<\/span>:<span class=\"hljs-number\">2181<\/span>-&gt;<span class=\"hljs-number\">2181<\/span>\/tcp\r\nzoo2   \/docker-entrypoint.sh zkSe ...   <span class=\"hljs-meta\">Up<\/span>      <span class=\"hljs-number\">0.0<\/span><span class=\"hljs-meta\">.0<\/span><span class=\"hljs-meta\">.0<\/span>:<span class=\"hljs-number\">2182<\/span>-&gt;<span class=\"hljs-number\">2181<\/span>\/tcp\r\nzoo3   \/docker-entrypoint.sh zkSe ...   <span class=\"hljs-meta\">Up<\/span>      <span class=\"hljs-number\">0.0<\/span><span class=\"hljs-meta\">.0<\/span><span class=\"hljs-meta\">.0<\/span>:<span class=\"hljs-number\">2183<\/span>-&gt;<span class=\"hljs-number\">2181<\/span>\/tcp<\/code><\/pre>\n<blockquote><p>\u6ce8\u610f, \u6211\u4eec\u5728 &#8220;docker-compose up&#8221; \u548c &#8220;docker-compose ps&#8221; \u524d\u90fd\u6dfb\u52a0\u4e86\u00a0COMPOSE_PROJECT_NAME=zk_test\u00a0\u8fd9\u4e2a\u73af\u5883\u53d8\u91cf, \u8fd9\u662f\u4e3a\u6211\u4eec\u7684 compose \u5de5\u7a0b\u8d77\u4e00\u4e2a\u540d\u5b57, \u4ee5\u514d\u4e0e\u5176\u4ed6\u7684 compose \u6df7\u6dc6.<\/p><\/blockquote>\n<h3 id=\"articleHeader6\"><a name=\"t5\"><\/a>\u4f7f\u7528 Docker \u547d\u4ee4\u884c\u5ba2\u6237\u7aef\u8fde\u63a5 ZK \u96c6\u7fa4<\/h3>\n<p>\u901a\u8fc7\u00a0docker-compose ps\u00a0\u547d\u4ee4, \u6211\u4eec\u77e5\u9053\u542f\u52a8\u7684 ZK \u96c6\u7fa4\u7684\u4e09\u4e2a\u4e3b\u673a\u540d\u5206\u522b\u662f zoo1, zoo2, zoo3, \u56e0\u6b64\u6211\u4eec\u5206\u522b link \u5b83\u4eec\u5373\u53ef:<\/p>\n<pre class=\"hljs haml\"><code>docker run -it --rm \\\r\n        -<span class=\"ruby\">-link <span class=\"hljs-symbol\">zoo1:<\/span>zk1 \\\r\n<\/span>        -<span class=\"ruby\">-link <span class=\"hljs-symbol\">zoo2:<\/span>zk2 \\\r\n<\/span>        -<span class=\"ruby\">-link <span class=\"hljs-symbol\">zoo3:<\/span>zk3 \\\r\n<\/span>        -<span class=\"ruby\">-net zktest_default \\\r\n<\/span>        zookeeper zkCli.sh -server zk1:2181,zk2:2181,zk3:2181<\/code><\/pre>\n<h3 id=\"articleHeader7\"><a name=\"t6\"><\/a>\u901a\u8fc7\u672c\u5730\u4e3b\u673a\u8fde\u63a5 ZK \u96c6\u7fa4<\/h3>\n<p>\u56e0\u4e3a\u6211\u4eec\u5206\u522b\u5c06 zoo1, zoo2, zoo3 \u7684 2181 \u7aef\u53e3\u6620\u5c04\u5230\u4e86 \u672c\u5730\u4e3b\u673a\u76842181, 2182, 2183 \u7aef\u53e3\u4e0a, \u56e0\u6b64\u6211\u4eec\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u5373\u53ef\u8fde\u63a5 ZK \u96c6\u7fa4\u4e86:<\/p>\n<pre class=\"hljs css\"><code><span class=\"hljs-selector-tag\">zkCli<\/span><span class=\"hljs-selector-class\">.sh<\/span>\u00a0<span class=\"hljs-selector-tag\">-server<\/span>\u00a0<span class=\"hljs-selector-tag\">localhost<\/span><span class=\"hljs-selector-pseudo\">:2181<\/span>,<span class=\"hljs-selector-tag\">localhost<\/span><span class=\"hljs-selector-pseudo\">:2182<\/span>,<span class=\"hljs-selector-tag\">localhost<\/span><span class=\"hljs-selector-pseudo\">:2183<\/span><\/code><\/pre>\n<h3 id=\"articleHeader8\"><a name=\"t7\"><\/a>\u67e5\u770b\u96c6\u7fa4<\/h3>\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7 nc \u547d\u4ee4\u8fde\u63a5\u5230\u6307\u5b9a\u7684 ZK \u670d\u52a1\u5668, \u7136\u540e\u53d1\u9001 stat \u53ef\u4ee5\u67e5\u770b ZK \u670d\u52a1\u7684\u72b6\u6001, \u4f8b\u5982:<\/p>\n<pre class=\"hljs groovy\"><code>&gt;&gt;&gt; echo stat | nc <span class=\"hljs-number\">127.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span> <span class=\"hljs-number\">2181<\/span>\r\nZookeeper <span class=\"hljs-string\">version:<\/span> <span class=\"hljs-number\">3.4<\/span><span class=\"hljs-number\">.9<\/span><span class=\"hljs-number\">-1757313<\/span>, built on <span class=\"hljs-number\">08<\/span><span class=\"hljs-regexp\">\/23\/<\/span><span class=\"hljs-number\">2016<\/span> <span class=\"hljs-number\">06<\/span>:<span class=\"hljs-number\">50<\/span> GMT\r\n<span class=\"hljs-string\">Clients:<\/span>\r\n \/<span class=\"hljs-number\">172.18<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span>:<span class=\"hljs-number\">49810<\/span>[<span class=\"hljs-number\">0<\/span>](queued=<span class=\"hljs-number\">0<\/span>,recved=<span class=\"hljs-number\">1<\/span>,sent=<span class=\"hljs-number\">0<\/span>)\r\n\r\nLatency min<span class=\"hljs-regexp\">\/avg\/<\/span><span class=\"hljs-string\">max:<\/span> <span class=\"hljs-number\">5<\/span><span class=\"hljs-regexp\">\/39\/<\/span><span class=\"hljs-number\">74<\/span>\r\n<span class=\"hljs-string\">Received:<\/span> <span class=\"hljs-number\">4<\/span>\r\n<span class=\"hljs-string\">Sent:<\/span> <span class=\"hljs-number\">3<\/span>\r\n<span class=\"hljs-string\">Connections:<\/span> <span class=\"hljs-number\">1<\/span>\r\n<span class=\"hljs-string\">Outstanding:<\/span> <span class=\"hljs-number\">0<\/span>\r\n<span class=\"hljs-string\">Zxid:<\/span> <span class=\"hljs-number\">0x200000002<\/span>\r\n<span class=\"hljs-string\">Mode:<\/span> follower\r\nNode <span class=\"hljs-string\">count:<\/span> <span class=\"hljs-number\">4<\/span><\/code><\/pre>\n<pre class=\"hljs groovy\"><code>&gt;&gt;&gt; echo stat | nc <span class=\"hljs-number\">127.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span> <span class=\"hljs-number\">2182<\/span>\r\nZookeeper <span class=\"hljs-string\">version:<\/span> <span class=\"hljs-number\">3.4<\/span><span class=\"hljs-number\">.9<\/span><span class=\"hljs-number\">-1757313<\/span>, built on <span class=\"hljs-number\">08<\/span><span class=\"hljs-regexp\">\/23\/<\/span><span class=\"hljs-number\">2016<\/span> <span class=\"hljs-number\">06<\/span>:<span class=\"hljs-number\">50<\/span> GMT\r\n<span class=\"hljs-string\">Clients:<\/span>\r\n \/<span class=\"hljs-number\">172.18<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span>:<span class=\"hljs-number\">50870<\/span>[<span class=\"hljs-number\">0<\/span>](queued=<span class=\"hljs-number\">0<\/span>,recved=<span class=\"hljs-number\">1<\/span>,sent=<span class=\"hljs-number\">0<\/span>)\r\n\r\nLatency min<span class=\"hljs-regexp\">\/avg\/<\/span><span class=\"hljs-string\">max:<\/span> <span class=\"hljs-number\">0<\/span><span class=\"hljs-regexp\">\/0\/<\/span><span class=\"hljs-number\">0<\/span>\r\n<span class=\"hljs-string\">Received:<\/span> <span class=\"hljs-number\">2<\/span>\r\n<span class=\"hljs-string\">Sent:<\/span> <span class=\"hljs-number\">1<\/span>\r\n<span class=\"hljs-string\">Connections:<\/span> <span class=\"hljs-number\">1<\/span>\r\n<span class=\"hljs-string\">Outstanding:<\/span> <span class=\"hljs-number\">0<\/span>\r\n<span class=\"hljs-string\">Zxid:<\/span> <span class=\"hljs-number\">0x200000002<\/span>\r\n<span class=\"hljs-string\">Mode:<\/span> follower\r\nNode <span class=\"hljs-string\">count:<\/span> <span class=\"hljs-number\">4<\/span><\/code><\/pre>\n<pre class=\"hljs groovy\"><code>&gt;&gt;&gt; echo stat | nc <span class=\"hljs-number\">127.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span> <span class=\"hljs-number\">2183<\/span>\r\nZookeeper <span class=\"hljs-string\">version:<\/span> <span class=\"hljs-number\">3.4<\/span><span class=\"hljs-number\">.9<\/span><span class=\"hljs-number\">-1757313<\/span>, built on <span class=\"hljs-number\">08<\/span><span class=\"hljs-regexp\">\/23\/<\/span><span class=\"hljs-number\">2016<\/span> <span class=\"hljs-number\">06<\/span>:<span class=\"hljs-number\">50<\/span> GMT\r\n<span class=\"hljs-string\">Clients:<\/span>\r\n \/<span class=\"hljs-number\">172.18<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span>:<span class=\"hljs-number\">51820<\/span>[<span class=\"hljs-number\">0<\/span>](queued=<span class=\"hljs-number\">0<\/span>,recved=<span class=\"hljs-number\">1<\/span>,sent=<span class=\"hljs-number\">0<\/span>)\r\n\r\nLatency min<span class=\"hljs-regexp\">\/avg\/<\/span><span class=\"hljs-string\">max:<\/span> <span class=\"hljs-number\">0<\/span><span class=\"hljs-regexp\">\/0\/<\/span><span class=\"hljs-number\">0<\/span>\r\n<span class=\"hljs-string\">Received:<\/span> <span class=\"hljs-number\">2<\/span>\r\n<span class=\"hljs-string\">Sent:<\/span> <span class=\"hljs-number\">1<\/span>\r\n<span class=\"hljs-string\">Connections:<\/span> <span class=\"hljs-number\">1<\/span>\r\n<span class=\"hljs-string\">Outstanding:<\/span> <span class=\"hljs-number\">0<\/span>\r\n<span class=\"hljs-string\">Zxid:<\/span> <span class=\"hljs-number\">0x200000002<\/span>\r\n<span class=\"hljs-string\">Mode:<\/span> leader\r\nNode <span class=\"hljs-string\">count:<\/span> <span class=\"hljs-number\">4<\/span><\/code><\/pre>\n<p>\u901a\u8fc7\u4e0a\u9762\u7684\u8f93\u51fa, \u6211\u4eec\u53ef\u4ee5\u770b\u5230, zoo1, zoo2 \u90fd\u662f follower, \u800c zoo3 \u662f leader, \u56e0\u6b64\u8bc1\u660e\u4e86\u6211\u4eec\u7684 ZK \u96c6\u7fa4\u786e\u5b9e\u662f\u642d\u5efa\u8d77\u6765\u4e86.<\/p>\n<p>\u56e0\u4e3adocker-compose.yml\u7684\u683c\u5f0f\u6bd4\u8f83\u86cb\u75bc\uff0c\u5982\u679c\u4f60\u6309\u7167\u4e0a\u8ff0\u6587\u4ef6\u624b\u5199\u8d77\u4e0d\u6765\uff0c\u62a5\u9519.yml\u6587\u4ef6\u62a5\u9519\u3002\u90a3\u5c31\u590d\u5236\u7c98\u8d34\u7136\u540e\u542f\u52a8\u3002\u4eb2\u81ea\u8bd5\u7528\uff0c\u7edd\u5bf9\u53ef\u884c\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u955c\u50cf\u4e0b\u8f7d hub.docker.com \u4e0a\u6709\u4e0d\u5c11 ZK \u955c\u50cf, \u4e0d\u8fc7\u4e3a\u4e86\u7a33\u5b9a\u8d77\u89c1, \u6211\u4eec\u5c31\u4f7f\u7528\u5b98\u65b9\u7684 ZK \u955c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[86],"tags":[],"class_list":["post-3580","post","type-post","status-publish","format-standard","hentry","category-service"],"_links":{"self":[{"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/posts\/3580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3580"}],"version-history":[{"count":1,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/posts\/3580\/revisions"}],"predecessor-version":[{"id":3581,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=\/wp\/v2\/posts\/3580\/revisions\/3581"}],"wp:attachment":[{"href":"http:\/\/switch.linesno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3580"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/switch.linesno.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}