共计 3178 个字符,预计需要花费 8 分钟才能阅读完成。
单机启动
下载
https://zookeeper.apache.org/…
解压下载下来的压缩包
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz
批改配置文件
cd conf/
mv zoo_sample.cfg zoo.cfg
这里单机启动咱们就应用默认的配置文件,改个名即可
配置中的
dataDir
和clientPort
能够依据本人的需要改,dataDir
默认是在/tmp
门路下的,个别是要批改的,这里演示就不做批改了,clentPort
能够依据本人的须要批改,默认是 2181 端口
启动 zk
./bin/zkServer.sh start
测试客户端连贯 zk
./bin/zkCli.sh -server 127.0.0.1:2181
输出 help 能够查看 zkCli 的命令,这里应用几条命令测试一下
[zk: 127.0.0.1:2181(CONNECTED) 2] ls /
[zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 15] create /test sample
Created /test
[zk: 127.0.0.1:2181(CONNECTED) 16] get /test
sample
[zk: 127.0.0.1:2181(CONNECTED) 17] set /test bar
[zk: 127.0.0.1:2181(CONNECTED) 20] get /test
bar
[zk: 127.0.0.1:2181(CONNECTED) 21] delete /test
[zk: 127.0.0.1:2181(CONNECTED) 23] ls /
[zookeeper]
集群搭建
筹备工作
- 3 个节点,这里应用了 3 个虚拟机节点,我这里别离筹备了
192.168.199.238
192.168.199.239
192.168.199.240
3 个节点 - 将 zk 传到每个节点上
- 凋谢服务器的
2888
3888
端口
解压压缩包
tar -zxvf apache-zookeeper-3.6.1-bin.tar.gz
3 个节点都执行一遍
批改配置文件
到轻易一个节点上批改,之后 scp 到其余几点即可。我这里到 238 节点上改。
vim conf/zoo.cfg
下面框起来的两处配置项要留神
-
dataDir
这里在下面单机启动时没有批改,这里咱们批改一下,能够依据本人的习惯设置,不在 tmp 下就行,这里设置了/data/zookeeper
-
server.x
这里是设置 zk 每个几点的 host 和 凋谢通信的端口,格局为server.x=host:port1:port2
,为什么须要两个端口呢,这里援用官网的解释:(简而言之,就是其中一个端口负责失常通信,另一个端口要去选举 leader)Finally, note the two port numbers after each server name: ” 2888″ and “3888”. Peers use the former port to connect to other peers. Such a connection is necessary so that peers can communicate, for example, to agree upon the order of updates. More specifically, a ZooKeeper server uses this port to connect followers to the leader. When a new leader arises, a follower opens a TCP connection to the leader using this port. Because the default leader election also uses TCP, we currently require another port for leader election. This is the second port in the server entry.
配置文件改好后,咱们还须要新建 myid
文件示意这个节点是 server.x
的哪个:到咱们下面配置的 dataDir
目录下 (/data/zookeper
) , 新建一个 myid
的 文件,写入 server.x
的 x
:
cd /data/zookeeper
echo 1 > myid
另外两个节点也执行雷同的操作,写入对应的 x
:
// 192.168.199.239
cd /data/zookeeper
echo 2 > myid
// 192.168.199.240
cd /data/zookeeper
echo 3 > myid
启动 zk
每个节点都执行启动命令:
./bin/zkServer.sh start
应用 jps
查看过程:
[root@localhost apache-zookeeper-3.6.1-bin]# jps
29372 Jps
29245 QuorumPeerMain
QuorumPeerMain 就是 zk
的过程了
3 个节点都起来后,咱们查看一下集群状态,验证是否胜利启动了:
238:
[root@localhost apache-zookeeper-3.6.1-bin]# ./bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/servers/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
239:
[root@localhost apache-zookeeper-3.6.1-bin]# ./bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/servers/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
240:
[root@localhost apache-zookeeper-3.6.1-bin]# ./bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/servers/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
能够看到,当初 240 节点是 leader
,其余两个节点是 follower
, 集群曾经启动胜利了。
测试客户端连贯 zk
咱们应用 zkCli
连到 240 (主节点) 验证是否能够失常应用
./zkCli.sh -server 192.168.199.240:2181
[zk: 192.168.199.240:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: 192.168.199.240:2181(CONNECTED) 1] create /foo bar
Created /foo
[zk: 192.168.199.240:2181(CONNECTED) 2] ls /
[foo, zookeeper]
[zk: 192.168.199.240:2181(CONNECTED) 3] get /foo
bar
总结
ZooKeeper
作为一个根底的分布式协调服务,在很多中央都有应用 , 如 dubbo
kafka
solr
等。
总的来说,整个搭建过程还是很简略的。对 zk 的学习还须要更多的实际到我的项目中,加深对其的了解和应用。
参考:
ZooKeeper Getting Started Guide