我这里只有六台集群:
192.168.79.131 cluster-3
192.168.79.130 cluster-1
192.168.79.133 cluster-2
192.168.79.134 cluster-4
192.168.79.135 cluster-5
192.168.79.136 cluster-6
一、zookeeper下载
这里从官网下载zookeeper-3.4.12.tar.gz
二、安装zookeeper
(1)上传zookeeper-3.4.12.tar.gz到虚拟机下的新建文件夹soft下
(2)解压zookeeper-3.4.12.tar.gz,命令:tar -zxvf zookeeper-3.4.12.tar.gz /C /usr/local/
三、配置zookeeper
(1)cd /usr/local/zookeeper-3.4.12/conf/
修改zoo_sample.cfg 为zoo.cfg,命令:mv zoo_sample.cfg zoo.cfg
添加配置:(在zookeeper-3.4.12下新建目录data)
vi zoo.cfg(有更多集群,只需要在后面添加server即可)
dataDir=/usr/local/zookeeper-3.4.12/data
server.1=cluster-1:2888:3888
server.2=cluster-3:2888:3888
server.3=cluster-2:2888:3888
server.4=cluster-4:2888:3888
server.5=cluster-5:2888:3888
server.6=cluster-6:2888:3888
保存
(2)cd /usr/local/zookeeper-3.4.12/data 创建一个myid文件,里面内容是server.N中的N(server.2里面内容为2)
命令:echo 1 > myid
(3)将配置好的zookeeper拷贝到其它的节点
cd /usr/local
scp -r zookeeper-3.4.12/ cluster-3:/usr/local/
(4)在其它的节点上修改myid的内容即可,myid里面内容是server.N中的N(server.2里面内容为2)
四、启动集群
分别启动zookeeper,
cd /usr/local/zookeeper-3.4.12/bin目录下,
启动命令:./zkServer.sh start
[root@cluster-3 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
可通过jps命令查看进程,多了一个进程
[root@cluster-3 bin]# jps
8947 QuorumPeerMain
9428 Jps
[root@cluster-3 bin]#
注意:若启动不了,可能会是防火墙的原因,需要把防火墙关闭,
centos7关闭防火墙的命令为:
systemctl stop firewalld
查看防火墙状态命令:
systemctl status firewalld
也可能是myid没有配置好的原因,需要进入zookeeper的data目录下,把myid设置为zoo.cfg中server所对应的id,利用命令:
echo x > myid
x是server.后面的数字
可以查看myid的值,命令为:
cat myid
五、启动集群后可以查看状态leader还是follower,命令:./zkServer.sh status
[root@cluster-3 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader
[root@cluster-3 bin]#
[root@cluster-1 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
[root@cluster-1 bin]#
六、启动客户端
命令:./zkCli.sh
[root@cluster-3 bin]# ./zkCli.sh
Connecting to localhost:2181
2019-01-24 14:06:45,105 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.12-e5259e437540f349646870ea94dc2658c4e44b3b, built on 03/27/2018 03:55 GMT
2019-01-24 14:06:45,107 [myid:] - INFO [main:Environment@100] - Client environment:host.name=cluster-3
2019-01-24 14:06:45,107 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_191
2019-01-24 14:06:45,108 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2019-01-24 14:06:45,108 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/local/jdk/jre
2019-01-24 14:06:45,108 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/usr/local/zookeeper-3.4.12/bin/../build/classes:/usr/local/zookeeper-3.4.12/bin/../build/lib/*.jar:/usr/local/zookeeper-3.4.12/bin/../lib/slf4j-log4j12-1.7.25.jar:/usr/local/zookeeper-3.4.12/bin/../lib/slf4j-api-1.7.25.jar:/usr/local/zookeeper-3.4.12/bin/../lib/netty-3.10.6.Final.jar:/usr/local/zookeeper-3.4.12/bin/../lib/log4j-1.2.17.jar:/usr/local/zookeeper-3.4.12/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper-3.4.12/bin/../lib/audience-annotations-0.5.0.jar:/usr/local/zookeeper-3.4.12/bin/../zookeeper-3.4.12.jar:/usr/local/zookeeper-3.4.12/bin/../src/java/lib/*.jar:/usr/local/zookeeper-3.4.12/bin/../conf:.:/usr/local/jdk/jre/lib/rt.jar:/usr/local/jdk/lib/dt.jar:/usr/local/jdk/lib/tools.jar
2019-01-24 14:06:45,108 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2019-01-24 14:06:45,108 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2019-01-24 14:06:45,108 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
2019-01-24 14:06:45,108 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
2019-01-24 14:06:45,108 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
2019-01-24 14:06:45,108 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-957.1.3.el7.x86_64
2019-01-24 14:06:45,108 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
2019-01-24 14:06:45,109 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
2019-01-24 14:06:45,109 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/usr/local/zookeeper-3.4.12/bin
2019-01-24 14:06:45,109 [myid:] - INFO [main:ZooKeeper@441] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@4b85612c
2019-01-24 14:06:45,134 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1028] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2019-01-24 14:06:45,215 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@878] - Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
2019-01-24 14:06:45,245 [myid:] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1302] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x200002d4bd60000, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
看看有哪些命令:help一下
[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
查看跟节点下目录:
[zk: localhost:2181(CONNECTED) 2] ls /
[zookeeper]
添加子节点和数据:
[zk: localhost:2181(CONNECTED) 4] create /wk110 1000
Created /wk110
[zk: localhost:2181(CONNECTED) 5] ls /
[wk110, zookeeper]
查看子节点数据:
[zk: localhost:2181(CONNECTED) 6] get /wk110
1000 //这是设置的数据,以下全是自动生成的信息
cZxid = 0x100000003
ctime = Thu Jan 24 14:11:39 CST 2019
mZxid = 0x100000003
mtime = Thu Jan 24 14:11:39 CST 2019
pZxid = 0x100000003
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0