zookeeper单机/集群搭建

2019-11-22  本文已影响0人  Hmcf
下载zookeeper
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.6/apache-zookeeper-3.5.6-bin.tar.gz

注意: 最新版本3.5.5开始,带有bin名称的包才是我们想要的下载可以直接使用的里面有编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包无法直接使用。

[root@localhost logs]# cat zookeeper-root-server-localhost.localdomain.out
错误: 找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain



继续......

解压配置
tar -xvf apache-zookeeper-3.5.6-bin.tar.gz -C /usr/local/
mv apache-zookeeper-3.5.6-bin/ zookeeper

然后需要将配置文件zoo_sample.cfg copy 成 zoo.cfg

cp  conf/zoo_sample.cfg  conf/zoo.cfg

(最起码的单机部署需要改配置文件名)
否则有如下错误:

[root@localhost zookeeper]# bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
grep: /usr/local/zookeeper/bin/../conf/zoo.cfg: 没有那个文件或目录
grep: /usr/local/zookeeper/bin/../conf/zoo.cfg: 没有那个文件或目录
mkdir: 无法创建目录"": 没有那个文件或目录
Starting zookeeper ... FAILED TO START

如果是单机部署,那么在不动其它配置的情况下,现在可以启动服务了

[root@localhost zookeeper]# bin/zkServer.sh start
然后可以验证
[root@localhost zookeeper]# jps
36056 QuorumPeerMain
36088 Jps
[root@localhost zookeeper]# netstat -nlp|grep 2181
tcp6 0 0 :::2181 :::* LISTEN 36056/java

至此服务已经启动了。

鸡儿分割-------------------------------------------------------

集群部署
首先准备多台机器(可虚机可docker,--也可单机多实例//仅测试),比如三台。
IP:192.168.64.11、192.168.64.12、192.168.64.13
分别按照上述步骤安装好zookeeper,(可安装一台,然后scp拷贝)。

关键在于配置文件zoo.cfg。
如:// 仅显示关键参数

[root@localhost zookeeper]# cat conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181

server.0=192.168.64.11:2888:3888
server.1=192.168.64.12:2888:3888
server.2=192.168.64.13:2888:3888

** 参数注解 **

===============================================

===============================================
然后在对应的dataDir目录下创建myid文件,并写入对应的server.后面的数值

touch /tmp/zookeeper/myid && echo 0>/tmp/zookeeper/myid
[root@localhost zookeeper]# cat conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181

server.0=192.168.64.11:2888:3888
server.1=192.168.64.12:2888:3888
server.2=192.168.64.13:2888:3888

然后在对应的dataDir目录下创建myid文件,并写入对应的server.后面的数值

touch /tmp/zookeeper/myid && echo 1>/tmp/zookeeper/myid
[root@localhost zookeeper]# cat conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181

server.0=192.168.64.11:2888:3888
server.1=192.168.64.12:2888:3888
server.2=192.168.64.13:2888:3888

然后在对应的dataDir目录下创建myid文件,并写入对应的server.后面的数值

touch /tmp/zookeeper/myid && echo 2>/tmp/zookeeper/myid

最后分别启动三台机器的zookeeper,启动命令如上单机模式启动命令。

最后查看zookeeper的状态,验证集群是否配置成功。

[root@localhost zookeeper]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
[root@localhost zookeeper]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader
[root@localhost zookeeper]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

可以发现,三台机器中192.168.64.12 被选为了leader,192.168.64.11、192.168.64.13成为了follower。
集群配置完成。

=====================kafka黄金分割========================

如果集群部署, 假如在同一台机器上模拟(生产毫无意义),那么需要拷备zookeeper到不同的目录,如

[root@localhost ~]# mkdir -p zp/zk-master zp/zk-slave1 zp/zk-slave2
[root@localhost ~]# cp -rf zookeeper/* zp/zk-master 
[root@localhost ~]# cp -rf zookeeper/* zp/zk-slave1 
[root@localhost ~]# cp -rf zookeeper/* zp/zk-slave2

然后将三个zoo.cfg编辑如下:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper/zk-master
clientPort=2181
dataLogDir=/tmp/zookeeper/zk-master/datalog
 
server.0=ip:2888:3888
server.1=ip:2889:3889
server.2=ip:2890:3890

注:将master、slave1、slave2对应的zoo.cfg中clientPort分别修改为2181、2182、2183,dataDir、dataLogDir分别创建好并且修改好。

如果是多台机器的话只需要更改对应的IP就好了。

然后再对应的dataDir目录下创建myid文件如下(注意0/1/2要对应上面的server.0/1/2)。

当然,顺带要检查一下防火墙。

至此,集群配置完成。

批量重启zookeeper脚本

zk_home=/zp
for application_name in ls $zk_home
do
/home/zookeeper/zookeeper/${application_name}/bin/zkServer.sh restart
done

上一篇 下一篇

猜你喜欢

热点阅读