Zookeeper 有两种运行模式:单机模式和集群模式。下面分别介绍:单机模式、集群模式以及伪集群模式这三种部署方式。java
export ZOOKEEPER_HOME=/Users/fandennis/Documents/Land/codes/zk/zookeeper346 export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
1.配置:主机名称到IP地址映射配置(/etc/hosts)git
192.168.0.179 slave-01 192.168.0.178 slave-02 192.168.0.177 slave-03
2.修改ZooKeeper配置文件apache
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/lib/zookeeper/ clientPort=2181 server.1=slave-01:2888:3888 server.2=slave-02:2888:3888 server.3=slave-03:2888:3888
由于各集群的配置同样,能够采用 git 管理配置文件.api
参数说明:服务器
clientPort: the port at which the clients will connect server.id = host:port1:port2 id: Server ID. 用来标识该机器在集群中的机器序号. 该 id 配置在 dataDir 目录下的 myid 文件中. id 范围:1~255 host:这个服务器的 ip 地址 port1: 这个服务器与集群中的 Leader 服务器交换信息的端口 port2: 执行选举时服务器相互通讯的端口
3.远程复制分发安装文件以及配置文件session
先在 slave-01 配置完成 zookeeper,而后将配置好的安装文件远程拷贝到集群中的各个节点对应目录socket
cd /home/land/installation/ scp -r zookeeper-3.3.4/ land@slave-02: /home/land/installation/ scp -r zookeeper-3.3.4/ land@slave-03: /home/land/installation/
4.设置myidui
land@slave-01:echo "1" > /var/lib/zookeeper/myid land@slave-02:echo "2" > /var/lib/zookeeper/myid land@slave-03:echo "3" > /var/lib/zookeeper/myid
5.启动 Zookeeper 集群的每一个结点netty
land@slave-01:~/installation/zookeeper-3.3.4$ bin/zkServer.sh start land@slave-02:~/installation/zookeeper-3.3.4$ bin/zkServer.sh start land@slave-03:~/installation/zookeeper-3.3.4$ bin/zkServer.sh start
一般以下:code
➜ zookeeper346 zkServer.sh start zk1.cfg JMX enabled by default Using config: /Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../conf/zk1.cfg Starting zookeeper ... STARTED
6.验证服务器
服务端验证
➜ conf zkServer.sh status zk1.cfg JMX enabled by default Using config: /Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../conf/zk1.cfg Mode: follower ➜ conf zkServer.sh status zk2.cfg JMX enabled by default Using config: /Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../conf/zk2.cfg Mode: leader ➜ conf zkServer.sh status zk3.cfg JMX enabled by default Using config: /Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../conf/zk3.cfg Mode: follower
客户端验证
➜ conf zkCli.sh -server 127.0.0.1:2181 Connecting to 127.0.0.1:2181 2016-09-19 09:53:30,439 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT 2016-09-19 09:53:30,446 [myid:] - INFO [main:Environment@100] - Client environment:host.name=172.22.32.80 2016-09-19 09:53:30,447 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_92 2016-09-19 09:53:30,449 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation 2016-09-19 09:53:30,449 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre 2016-09-19 09:53:30,449 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../build/classes:/Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../build/lib/*.jar:/Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../lib/slf4j-log4j12-1.6.1.jar:/Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../lib/slf4j-api-1.6.1.jar:/Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../lib/netty-3.7.0.Final.jar:/Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../lib/log4j-1.2.16.jar:/Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../lib/jline-0.9.94.jar:/Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../zookeeper-3.4.6.jar:/Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../src/java/lib/*.jar:/Users/fandennis/Documents/Land/codes/zk/zookeeper346/bin/../conf: 2016-09-19 09:53:30,449 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/Users/fandennis/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. 2016-09-19 09:53:30,449 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/var/folders/3z/wwbzv0_961b112x2nxff6_c00000gn/T/ 2016-09-19 09:53:30,449 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA> 2016-09-19 09:53:30,449 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Mac OS X 2016-09-19 09:53:30,449 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=x86_64 2016-09-19 09:53:30,450 [myid:] - INFO [main:Environment@100] - Client environment:os.version=10.10.3 2016-09-19 09:53:30,450 [myid:] - INFO [main:Environment@100] - Client environment:user.name=fandennis 2016-09-19 09:53:30,450 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/Users/fandennis 2016-09-19 09:53:30,450 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/Users/fandennis/Documents/Land/codes/zk/zookeeper346/conf 2016-09-19 09:53:30,451 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@69663380 Welcome to ZooKeeper! 2016-09-19 09:53:30,485 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@975] - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) JLine support is enabled 2016-09-19 09:53:30,593 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@852] - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session 2016-09-19 09:53:30,604 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x157402315f40001, negotiated timeout = 30000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: 127.0.0.1:2181(CONNECTED) 0]
配置文件
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/lib/zookeeper/ clientPort=2181
无需配置:server.id=host:port:port
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/lib/zookeeper/zkn clientPort=2181 server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 server.3=127.0.0.1:2890:3890
和集群方式区别不大,无非在一台机器采用多个端口号来模拟。同时dataDir须要配置多个文件夹。
能够看到:Zookeeper 物理文件目录,以下图所示。
. ├── zk1 │ ├── myid │ ├── version-2 │ │ ├── acceptedEpoch │ │ ├── currentEpoch │ │ └── snapshot.0 │ └── zookeeper_server.pid ├── zk2 │ ├── myid │ ├── version-2 │ │ ├── acceptedEpoch │ │ └── currentEpoch │ └── zookeeper_server.pid └── zk3 ├── myid ├── version-2 │ ├── acceptedEpoch │ ├── currentEpoch │ └── snapshot.0 └── zookeeper_server.pid