Comments (11)
Hi, I just ran into this very same problem while trying to setup Apache NiFi in cluster mode and would like to share my experience.
What I learned:
For me it seems this issue only exists if using hostnames instead of IP addresses for connecting to your nodes. Zookeeper seems to bind to the external network interface only by default (didn't check this actually) and when using IP addresses, a locally connecting ZK also always goes through the external interface. But when using hostnames, the name resolution comes into play. My hosts where configured (/etc/hosts
) to resolve their own hostnames to 127.0.1.1
(the loopback interface). When ZK is only bound to the external interface, this of course doesn't work. Using 0.0.0.0
just tells Zookeeper to bind the local instance to all interfaces, so it doesn't matter if accessed externally or through loopback.
What I did:
Change the /etc/hosts
of my hosts to resolve their own hostnames to their own external IP. I.e. change 127.0.1.1 <hostname>
to <external IP> <hostname>
. Voilà, it works.
from zookeeper-docker.
Sorry, error typing.
If edit "server.x=0.0.0.0:2888:3888 other servers...", it works fine.
Perhaps because of listening on swarm VIP?
from zookeeper-docker.
Yes.
version: '3.2'
services:
zoo1:
image: zookeeper
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
volumes:
- /zookeeper/data:/data
- /zookeeper/datalog:/datalog
deploy:
replicas: 1
placement:
constraints:
- node.hostname == node1
zoo2:
image: zookeeper
ports:
- "2182:2181"
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zoo3:2888:3888
volumes:
- /zookeeper/data:/data
- /zookeeper/datalog:/datalog
deploy:
replicas: 1
placement:
constraints:
- node.hostname == node2
zoo3:
image: zookeeper
ports:
- "2183:2181"
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=0.0.0.0:2888:3888
volumes:
- /zookeeper/data:/data
- /zookeeper/datalog:/datalog
deploy:
replicas: 1
placement:
constraints:
- node.hostname == node3
networks:
default:
external:
name: myoverlay
from zookeeper-docker.
It was tested using the example docker-compose.yml
.
In fact same thing happens in logs while staring the clustier using docker-compose
.
$ docker-compose -f docker-compose-zookeeper.yml up
Creating misc_zoo3_1
Creating misc_zoo2_1
Creating misc_zoo1_1
Attaching to misc_zoo1_1, misc_zoo3_1, misc_zoo2_1
zoo1_1 | ZooKeeper JMX enabled by default
zoo3_1 | ZooKeeper JMX enabled by default
zoo1_1 | Using config: /conf/zoo.cfg
zoo3_1 | Using config: /conf/zoo.cfg
zoo2_1 | ZooKeeper JMX enabled by default
zoo2_1 | Using config: /conf/zoo.cfg
zoo3_1 | 2017-05-28 13:22:12,689 [myid:] - INFO [main:QuorumPeerConfig@134] - Reading configuration from: /conf/zoo.cfg
zoo1_1 | 2017-05-28 13:22:12,689 [myid:] - INFO [main:QuorumPeerConfig@134] - Reading configuration from: /conf/zoo.cfg
zoo3_1 | 2017-05-28 13:22:12,715 [myid:] - INFO [main:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo3 to address: zoo3/172.18.0.4
zoo3_1 | 2017-05-28 13:22:12,716 [myid:] - INFO [main:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo2 to address: zoo2/172.18.0.3
zoo3_1 | 2017-05-28 13:22:12,717 [myid:] - INFO [main:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo1 to address: zoo1/172.18.0.2
zoo3_1 | 2017-05-28 13:22:12,718 [myid:] - INFO [main:QuorumPeerConfig@396] - Defaulting to majority quorums
zoo1_1 | 2017-05-28 13:22:12,720 [myid:] - INFO [main:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo3 to address: zoo3/172.18.0.4
zoo1_1 | 2017-05-28 13:22:12,721 [myid:] - INFO [main:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo2 to address: zoo2/172.18.0.3
zoo1_1 | 2017-05-28 13:22:12,724 [myid:] - INFO [main:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo1 to address: zoo1/172.18.0.2
zoo3_1 | 2017-05-28 13:22:12,724 [myid:3] - INFO [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3
zoo1_1 | 2017-05-28 13:22:12,725 [myid:] - INFO [main:QuorumPeerConfig@396] - Defaulting to majority quorums
zoo3_1 | 2017-05-28 13:22:12,724 [myid:3] - INFO [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 0
zoo3_1 | 2017-05-28 13:22:12,725 [myid:3] - INFO [main:DatadirCleanupManager@101] - Purge task is not scheduled.
zoo1_1 | 2017-05-28 13:22:12,732 [myid:1] - INFO [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3
zoo1_1 | 2017-05-28 13:22:12,732 [myid:1] - INFO [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 0
zoo1_1 | 2017-05-28 13:22:12,738 [myid:1] - INFO [main:DatadirCleanupManager@101] - Purge task is not scheduled.
zoo3_1 | 2017-05-28 13:22:12,756 [myid:3] - INFO [main:QuorumPeerMain@127] - Starting quorum peer
zoo1_1 | 2017-05-28 13:22:12,758 [myid:1] - INFO [main:QuorumPeerMain@127] - Starting quorum peer
zoo3_1 | 2017-05-28 13:22:12,794 [myid:3] - INFO [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181
zoo1_1 | 2017-05-28 13:22:12,797 [myid:1] - INFO [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181
zoo3_1 | 2017-05-28 13:22:12,842 [myid:3] - INFO [main:QuorumPeer@1134] - minSessionTimeout set to -1
zoo1_1 | 2017-05-28 13:22:12,842 [myid:1] - INFO [main:QuorumPeer@1134] - minSessionTimeout set to -1
zoo3_1 | 2017-05-28 13:22:12,842 [myid:3] - INFO [main:QuorumPeer@1145] - maxSessionTimeout set to -1
zoo3_1 | 2017-05-28 13:22:12,845 [myid:3] - INFO [main:QuorumPeer@1419] - QuorumPeer communication is not secured!
zoo3_1 | 2017-05-28 13:22:12,845 [myid:3] - INFO [main:QuorumPeer@1448] - quorum.cnxn.threads.size set to 20
zoo1_1 | 2017-05-28 13:22:12,842 [myid:1] - INFO [main:QuorumPeer@1145] - maxSessionTimeout set to -1
zoo1_1 | 2017-05-28 13:22:12,849 [myid:1] - INFO [main:QuorumPeer@1419] - QuorumPeer communication is not secured!
zoo1_1 | 2017-05-28 13:22:12,850 [myid:1] - INFO [main:QuorumPeer@1448] - quorum.cnxn.threads.size set to 20
zoo1_1 | 2017-05-28 13:22:12,857 [myid:1] - INFO [main:QuorumPeer@624] - currentEpoch not found! Creating with a reasonable default of 0. This should only happen when you are upgrading your installation
zoo3_1 | 2017-05-28 13:22:12,857 [myid:3] - INFO [main:QuorumPeer@624] - currentEpoch not found! Creating with a reasonable default of 0. This should only happen when you are upgrading your installation
zoo3_1 | 2017-05-28 13:22:12,891 [myid:3] - INFO [main:QuorumPeer@639] - acceptedEpoch not found! Creating with a reasonable default of 0. This should only happen when you are upgrading your installation
zoo1_1 | 2017-05-28 13:22:12,916 [myid:1] - INFO [main:QuorumPeer@639] - acceptedEpoch not found! Creating with a reasonable default of 0. This should only happen when you are upgrading your installation
zoo3_1 | 2017-05-28 13:22:12,976 [myid:3] - INFO [ListenerThread:QuorumCnxManager$Listener@739] - My election bind port: zoo3/172.18.0.4:3888
zoo1_1 | 2017-05-28 13:22:12,981 [myid:1] - INFO [ListenerThread:QuorumCnxManager$Listener@739] - My election bind port: zoo1/172.18.0.2:3888
zoo3_1 | 2017-05-28 13:22:13,007 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:QuorumPeer@865] - LOOKING
zoo3_1 | 2017-05-28 13:22:13,013 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@818] - New election. My id = 3, proposed zxid=0x0
zoo1_1 | 2017-05-28 13:22:13,026 [myid:1] - INFO [zoo1/172.18.0.2:3888:QuorumCnxManager$Listener@746] - Received connection request /172.18.0.4:46640
zoo1_1 | 2017-05-28 13:22:13,046 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumPeer@865] - LOOKING
zoo1_1 | 2017-05-28 13:22:13,050 [myid:1] - INFO [WorkerReceiver[myid=1]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 3 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo1_1 | 2017-05-28 13:22:13,051 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@818] - New election. My id = 1, proposed zxid=0x0
zoo1_1 | 2017-05-28 13:22:13,053 [myid:1] - INFO [WorkerReceiver[myid=1]:FastLeaderElection@600] - Notification: 1 (message format version), 1 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 1 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo3_1 | 2017-05-28 13:22:13,044 [myid:3] - WARN [WorkerSender[myid=3]:QuorumCnxManager@588] - Cannot open channel to 2 at election address zoo2/172.18.0.3:3888
zoo3_1 | java.net.ConnectException: Connection refused (Connection refused)
zoo3_1 | at java.net.PlainSocketImpl.socketConnect(Native Method)
zoo3_1 | at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
zoo3_1 | at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
zoo3_1 | at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
zoo3_1 | at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
zoo3_1 | at java.net.Socket.connect(Socket.java:589)
zoo3_1 | at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:562)
zoo3_1 | at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:538)
zoo3_1 | at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:452)
zoo3_1 | at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:433)
zoo3_1 | at java.lang.Thread.run(Thread.java:745)
zoo3_1 | 2017-05-28 13:22:13,055 [myid:3] - INFO [WorkerSender[myid=3]:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo2 to address: zoo2/172.18.0.3
zoo3_1 | 2017-05-28 13:22:13,058 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 3 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo1_1 | 2017-05-28 13:22:13,063 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@588] - Cannot open channel to 2 at election address zoo2/172.18.0.3:3888
zoo1_1 | java.net.ConnectException: Connection refused (Connection refused)
zoo1_1 | at java.net.PlainSocketImpl.socketConnect(Native Method)
zoo1_1 | at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
zoo1_1 | at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
zoo1_1 | at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
zoo1_1 | at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
zoo1_1 | at java.net.Socket.connect(Socket.java:589)
zoo1_1 | at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:562)
zoo1_1 | at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:538)
zoo1_1 | at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:452)
zoo1_1 | at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:433)
zoo1_1 | at java.lang.Thread.run(Thread.java:745)
zoo1_1 | 2017-05-28 13:22:13,067 [myid:1] - INFO [WorkerSender[myid=1]:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo2 to address: zoo2/172.18.0.3
zoo1_1 | 2017-05-28 13:22:13,067 [myid:1] - INFO [WorkerReceiver[myid=1]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 1 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo1_1 | 2017-05-28 13:22:13,068 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@588] - Cannot open channel to 2 at election address zoo2/172.18.0.3:3888
zoo1_1 | java.net.ConnectException: Connection refused (Connection refused)
zoo1_1 | at java.net.PlainSocketImpl.socketConnect(Native Method)
zoo1_1 | at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
zoo1_1 | at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
zoo1_1 | at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
zoo1_1 | at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
zoo1_1 | at java.net.Socket.connect(Socket.java:589)
zoo1_1 | at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:562)
zoo1_1 | at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:538)
zoo1_1 | at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:452)
zoo1_1 | at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:433)
zoo1_1 | at java.lang.Thread.run(Thread.java:745)
zoo1_1 | 2017-05-28 13:22:13,068 [myid:1] - INFO [WorkerSender[myid=1]:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo2 to address: zoo2/172.18.0.3
zoo3_1 | 2017-05-28 13:22:13,069 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection@600] - Notification: 1 (message format version), 1 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 1 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo3_1 | 2017-05-28 13:22:13,072 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 1 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo2_1 | 2017-05-28 13:22:13,196 [myid:] - INFO [main:QuorumPeerConfig@134] - Reading configuration from: /conf/zoo.cfg
zoo2_1 | 2017-05-28 13:22:13,213 [myid:] - INFO [main:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo3 to address: zoo3/172.18.0.4
zoo2_1 | 2017-05-28 13:22:13,214 [myid:] - INFO [main:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo2 to address: zoo2/172.18.0.3
zoo2_1 | 2017-05-28 13:22:13,215 [myid:] - INFO [main:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo1 to address: zoo1/172.18.0.2
zoo2_1 | 2017-05-28 13:22:13,216 [myid:] - INFO [main:QuorumPeerConfig@396] - Defaulting to majority quorums
zoo2_1 | 2017-05-28 13:22:13,220 [myid:2] - INFO [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3
zoo2_1 | 2017-05-28 13:22:13,220 [myid:2] - INFO [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 0
zoo2_1 | 2017-05-28 13:22:13,220 [myid:2] - INFO [main:DatadirCleanupManager@101] - Purge task is not scheduled.
zoo2_1 | 2017-05-28 13:22:13,233 [myid:2] - INFO [main:QuorumPeerMain@127] - Starting quorum peer
zoo2_1 | 2017-05-28 13:22:13,249 [myid:2] - INFO [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181
zoo1_1 | 2017-05-28 13:22:13,270 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumPeer@935] - FOLLOWING
zoo3_1 | 2017-05-28 13:22:13,273 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:QuorumPeer@947] - LEADING
zoo3_1 | 2017-05-28 13:22:13,278 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Leader@62] - TCP NoDelay set to: true
zoo2_1 | 2017-05-28 13:22:13,278 [myid:2] - INFO [main:QuorumPeer@1134] - minSessionTimeout set to -1
zoo2_1 | 2017-05-28 13:22:13,279 [myid:2] - INFO [main:QuorumPeer@1145] - maxSessionTimeout set to -1
zoo2_1 | 2017-05-28 13:22:13,279 [myid:2] - INFO [main:QuorumPeer@1419] - QuorumPeer communication is not secured!
zoo2_1 | 2017-05-28 13:22:13,279 [myid:2] - INFO [main:QuorumPeer@1448] - quorum.cnxn.threads.size set to 20
zoo1_1 | 2017-05-28 13:22:13,284 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Learner@86] - TCP NoDelay set to: true
zoo2_1 | 2017-05-28 13:22:13,285 [myid:2] - INFO [main:QuorumPeer@624] - currentEpoch not found! Creating with a reasonable default of 0. This should only happen when you are upgrading your installation
zoo3_1 | 2017-05-28 13:22:13,321 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
zoo3_1 | 2017-05-28 13:22:13,321 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:host.name=5169b6ae4569
zoo2_1 | 2017-05-28 13:22:13,320 [myid:2] - INFO [main:QuorumPeer@639] - acceptedEpoch not found! Creating with a reasonable default of 0. This should only happen when you are upgrading your installation
zoo3_1 | 2017-05-28 13:22:13,321 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.version=1.8.0_121
zoo3_1 | 2017-05-28 13:22:13,322 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.vendor=Oracle Corporation
zoo3_1 | 2017-05-28 13:22:13,323 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.home=/usr/lib/jvm/java-1.8-openjdk/jre
zoo3_1 | 2017-05-28 13:22:13,323 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.class.path=/zookeeper-3.4.10/bin/../build/classes:/zookeeper-3.4.10/bin/../build/lib/*.jar:/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/conf:
zoo3_1 | 2017-05-28 13:22:13,324 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.library.path=/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.8-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
zoo3_1 | 2017-05-28 13:22:13,324 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.io.tmpdir=/tmp
zoo3_1 | 2017-05-28 13:22:13,324 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.compiler=<NA>
zoo3_1 | 2017-05-28 13:22:13,325 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:os.name=Linux
zoo3_1 | 2017-05-28 13:22:13,325 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:os.arch=amd64
zoo3_1 | 2017-05-28 13:22:13,326 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:os.version=4.9.27-moby
zoo3_1 | 2017-05-28 13:22:13,326 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:user.name=zookeeper
zoo3_1 | 2017-05-28 13:22:13,327 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:user.home=/home/zookeeper
zoo3_1 | 2017-05-28 13:22:13,327 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:user.dir=/zookeeper-3.4.10
zoo1_1 | 2017-05-28 13:22:13,329 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
zoo1_1 | 2017-05-28 13:22:13,329 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:host.name=39b2036886bc
zoo1_1 | 2017-05-28 13:22:13,329 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.version=1.8.0_121
zoo1_1 | 2017-05-28 13:22:13,329 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.vendor=Oracle Corporation
zoo1_1 | 2017-05-28 13:22:13,330 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.home=/usr/lib/jvm/java-1.8-openjdk/jre
zoo1_1 | 2017-05-28 13:22:13,330 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.class.path=/zookeeper-3.4.10/bin/../build/classes:/zookeeper-3.4.10/bin/../build/lib/*.jar:/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/conf:
zoo1_1 | 2017-05-28 13:22:13,330 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.library.path=/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.8-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
zoo1_1 | 2017-05-28 13:22:13,331 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.io.tmpdir=/tmp
zoo1_1 | 2017-05-28 13:22:13,331 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.compiler=<NA>
zoo1_1 | 2017-05-28 13:22:13,332 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:os.name=Linux
zoo1_1 | 2017-05-28 13:22:13,332 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:os.arch=amd64
zoo1_1 | 2017-05-28 13:22:13,332 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:os.version=4.9.27-moby
zoo1_1 | 2017-05-28 13:22:13,333 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:user.name=zookeeper
zoo1_1 | 2017-05-28 13:22:13,333 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:user.home=/home/zookeeper
zoo1_1 | 2017-05-28 13:22:13,333 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:user.dir=/zookeeper-3.4.10
zoo3_1 | 2017-05-28 13:22:13,336 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:ZooKeeperServer@173] - Created server with tickTime 2000 minSessionTimeout 4000 maxSessionTimeout 40000 datadir /datalog/version-2 snapdir /data/version-2
zoo1_1 | 2017-05-28 13:22:13,338 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:ZooKeeperServer@173] - Created server with tickTime 2000 minSessionTimeout 4000 maxSessionTimeout 40000 datadir /datalog/version-2 snapdir /data/version-2
zoo1_1 | 2017-05-28 13:22:13,352 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Follower@64] - FOLLOWING - LEADER ELECTION TOOK - 301
zoo3_1 | 2017-05-28 13:22:13,355 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Leader@371] - LEADING - LEADER ELECTION TOOK - 342
zoo1_1 | 2017-05-28 13:22:13,357 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo3 to address: zoo3/172.18.0.4
zoo2_1 | 2017-05-28 13:22:13,360 [myid:2] - INFO [ListenerThread:QuorumCnxManager$Listener@739] - My election bind port: zoo2/172.18.0.3:3888
zoo3_1 | 2017-05-28 13:22:13,383 [myid:3] - INFO [LearnerHandler-/172.18.0.2:49628:LearnerHandler@346] - Follower sid: 1 : info : org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer@13f8a8b3
zoo2_1 | 2017-05-28 13:22:13,385 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:QuorumPeer@865] - LOOKING
zoo2_1 | 2017-05-28 13:22:13,386 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:FastLeaderElection@818] - New election. My id = 2, proposed zxid=0x0
zoo1_1 | 2017-05-28 13:22:13,394 [myid:1] - INFO [zoo1/172.18.0.2:3888:QuorumCnxManager$Listener@746] - Received connection request /172.18.0.3:53380
zoo1_1 | 2017-05-28 13:22:13,400 [myid:1] - INFO [WorkerReceiver[myid=1]:FastLeaderElection@600] - Notification: 1 (message format version), 2 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x0 (n.peerEpoch) FOLLOWING (my state)
zoo2_1 | 2017-05-28 13:22:13,403 [myid:2] - INFO [WorkerSender[myid=2]:QuorumCnxManager@337] - Have smaller server identifier, so dropping the connection: (3, 2)
zoo3_1 | 2017-05-28 13:22:13,403 [myid:3] - INFO [zoo3/172.18.0.4:3888:QuorumCnxManager$Listener@746] - Received connection request /172.18.0.3:47282
zoo2_1 | 2017-05-28 13:22:13,405 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 1 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo2_1 | 2017-05-28 13:22:13,406 [myid:2] - INFO [zoo2/172.18.0.3:3888:QuorumCnxManager$Listener@746] - Received connection request /172.18.0.4:58050
zoo3_1 | 2017-05-28 13:22:13,410 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection@600] - Notification: 1 (message format version), 2 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x0 (n.peerEpoch) LEADING (my state)
zoo3_1 | 2017-05-28 13:22:13,411 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x0 (n.peerEpoch) LEADING (my state)
zoo1_1 | 2017-05-28 13:22:13,411 [myid:1] - INFO [WorkerReceiver[myid=1]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x0 (n.peerEpoch) FOLLOWING (my state)
zoo2_1 | 2017-05-28 13:22:13,406 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), FOLLOWING (n.state), 1 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo2_1 | 2017-05-28 13:22:13,416 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection@600] - Notification: 1 (message format version), 2 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo2_1 | 2017-05-28 13:22:13,417 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 2 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo2_1 | 2017-05-28 13:22:13,417 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LOOKING (n.state), 3 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo2_1 | 2017-05-28 13:22:13,418 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), FOLLOWING (n.state), 1 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo2_1 | 2017-05-28 13:22:13,419 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LEADING (n.state), 3 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo2_1 | 2017-05-28 13:22:13,420 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection@600] - Notification: 1 (message format version), 3 (n.leader), 0x0 (n.zxid), 0x1 (n.round), LEADING (n.state), 3 (n.sid), 0x0 (n.peerEpoch) LOOKING (my state)
zoo3_1 | 2017-05-28 13:22:13,438 [myid:3] - INFO [LearnerHandler-/172.18.0.2:49628:LearnerHandler@401] - Synchronizing with Follower sid: 1 maxCommittedLog=0x0 minCommittedLog=0x0 peerLastZxid=0x0
zoo3_1 | 2017-05-28 13:22:13,438 [myid:3] - INFO [LearnerHandler-/172.18.0.2:49628:LearnerHandler@410] - leader and follower are in sync, zxid=0x0
zoo3_1 | 2017-05-28 13:22:13,438 [myid:3] - INFO [LearnerHandler-/172.18.0.2:49628:LearnerHandler@475] - Sending DIFF
zoo1_1 | 2017-05-28 13:22:13,440 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:Learner@332] - Getting a diff from the leader 0x0
zoo3_1 | 2017-05-28 13:22:13,494 [myid:3] - INFO [LearnerHandler-/172.18.0.2:49628:LearnerHandler@535] - Received NEWLEADER-ACK message from 1
zoo3_1 | 2017-05-28 13:22:13,494 [myid:3] - INFO [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:Leader@961] - Have quorum of supporters, sids: [ 1,3 ]; starting up and setting last processed zxid: 0x100000000
zoo2_1 | 2017-05-28 13:22:13,621 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:QuorumPeer@935] - FOLLOWING
zoo2_1 | 2017-05-28 13:22:13,626 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Learner@86] - TCP NoDelay set to: true
zoo2_1 | 2017-05-28 13:22:13,632 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
zoo2_1 | 2017-05-28 13:22:13,632 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:host.name=c434f7b10ea1
zoo2_1 | 2017-05-28 13:22:13,632 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.version=1.8.0_121
zoo2_1 | 2017-05-28 13:22:13,633 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.vendor=Oracle Corporation
zoo2_1 | 2017-05-28 13:22:13,633 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.home=/usr/lib/jvm/java-1.8-openjdk/jre
zoo2_1 | 2017-05-28 13:22:13,633 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.class.path=/zookeeper-3.4.10/bin/../build/classes:/zookeeper-3.4.10/bin/../build/lib/*.jar:/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/conf:
zoo2_1 | 2017-05-28 13:22:13,634 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.library.path=/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.8-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
zoo2_1 | 2017-05-28 13:22:13,634 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.io.tmpdir=/tmp
zoo2_1 | 2017-05-28 13:22:13,634 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:java.compiler=<NA>
zoo2_1 | 2017-05-28 13:22:13,635 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:os.name=Linux
zoo2_1 | 2017-05-28 13:22:13,635 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:os.arch=amd64
zoo2_1 | 2017-05-28 13:22:13,635 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:os.version=4.9.27-moby
zoo2_1 | 2017-05-28 13:22:13,636 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:user.name=zookeeper
zoo2_1 | 2017-05-28 13:22:13,636 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:user.home=/home/zookeeper
zoo2_1 | 2017-05-28 13:22:13,636 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Environment@100] - Server environment:user.dir=/zookeeper-3.4.10
zoo2_1 | 2017-05-28 13:22:13,639 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:ZooKeeperServer@173] - Created server with tickTime 2000 minSessionTimeout 4000 maxSessionTimeout 40000 datadir /datalog/version-2 snapdir /data/version-2
zoo2_1 | 2017-05-28 13:22:13,640 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Follower@64] - FOLLOWING - LEADER ELECTION TOOK - 254
zoo2_1 | 2017-05-28 13:22:13,642 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:QuorumPeer$QuorumServer@167] - Resolved hostname: zoo3 to address: zoo3/172.18.0.4
zoo3_1 | 2017-05-28 13:22:13,647 [myid:3] - INFO [LearnerHandler-/172.18.0.3:60050:LearnerHandler@346] - Follower sid: 2 : info : org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer@5195881e
zoo3_1 | 2017-05-28 13:22:13,678 [myid:3] - INFO [LearnerHandler-/172.18.0.3:60050:LearnerHandler@401] - Synchronizing with Follower sid: 2 maxCommittedLog=0x0 minCommittedLog=0x0 peerLastZxid=0x0
zoo3_1 | 2017-05-28 13:22:13,678 [myid:3] - INFO [LearnerHandler-/172.18.0.3:60050:LearnerHandler@475] - Sending SNAP
zoo3_1 | 2017-05-28 13:22:13,678 [myid:3] - INFO [LearnerHandler-/172.18.0.3:60050:LearnerHandler@499] - Sending snapshot last zxid of peer is 0x0 zxid of leader is 0x100000000sent zxid of db as 0x100000000
zoo2_1 | 2017-05-28 13:22:13,679 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:Learner@336] - Getting a snapshot from leader
zoo2_1 | 2017-05-28 13:22:13,685 [myid:2] - INFO [QuorumPeer[myid=2]/0:0:0:0:0:0:0:0:2181:FileTxnSnapLog@248] - Snapshotting: 0x100000000 to /data/version-2/snapshot.100000000
zoo3_1 | 2017-05-28 13:22:13,715 [myid:3] - INFO [LearnerHandler-/172.18.0.3:60050:LearnerHandler@535] - Received NEWLEADER-ACK message from 2
But it retries and then cluster works fine.
@bluepuma77
How exactly are you strating your containers? Is this happens in paraller?
Are you sure the hosts can talk to each other using required ports (2181, 2888, 3888
)?
from zookeeper-docker.
+1
from zookeeper-docker.
Was there any resolution to this? I'm having the same issue starting up using docker swarm (docker stack deploy actually).
from zookeeper-docker.
I'm having the same issue starting up using docker swarm too. It trys and always trys.
If edit "server.x=zoox:2888:3888 other servers...", it works fine.
Perhaps because of listening on warm VIP?
from zookeeper-docker.
@realcbb do you have a sample docker-compose.yml file you could share? That change didn't seem to help me but i certainly could have some other mistake
from zookeeper-docker.
@bluepuma77 Why close this issure?
@31z4 please have a look at this. I don't know whether my solution is correct or not.
from zookeeper-docker.
Thanks @realcbb, I misread your original answer and using "0.0.0.0" for the server hostname does indeed work. I'm going to try to dive in and try to understand why it works.
from zookeeper-docker.
@warplabsio Did you figure out why it works with 0.0.0.0
?
from zookeeper-docker.
Related Issues (20)
- Zookeeper Vulnerability Analysis HOT 1
- Upgrade to JRE 17, pin Ubuntu release HOT 1
- Update jackson-databind to resolve high security vulnerabilities (2.13.1 to 2.13.4.1) HOT 1
- override parent docker image from alpine to ubi8
- Please Publish 3.8.1 HOT 1
- Add s390x to docker official image HOT 1
- with replicas 3, it wont work HOT 1
- Add ppc64le to docker official image HOT 2
- Upgrade to 3.9.0 HOT 1
- Failed to pull image "zookeeper:3.9.0": rpc error: code = NotFound desc = failed to pull and unpack image "docker.io/library/zookeeper:3.9.0": no match for platform in manifest: not found HOT 3
- zookeeper docker 3.9.0 HOT 1
- JSON logging HOT 2
- Zookeeper 3.7.2, 3.8.3 and 3.9.1 tags needed ASAP HOT 2
- Zookeeper switched from log4j to Logback in v3.8.2 HOT 3
- New tag suggestion: stable
- How do I run zookeeper3.7.2 like the official documentation
- Re-releasing Docker images with the same number causes issues HOT 2
- JVM crashes with out of memory HOT 2
- 3.8.4 and 3.9.2 released, will we release new docker tags? HOT 1
- Incorrect default uid/gid HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zookeeper-docker.