Zookeeper集群搭建

1.介绍

学习大约花了3天吧,从2019年3月17到到20号。

中间被不少步骤卡到了,后面在错误处理中会大致介绍到。

当然主要原因就是混杂不堪的博客,基本上都是复制粘贴,太过分了,尝试了都是失败,幸好今天晚上发现了一个大佬的,我特别喜欢的就是他那种可以看zookeeper启动的输出,其他的博客,只能说不说也罢。本博客大致就写下我处理的过程,避免小伙伴们疯狂踩坑。

2.搭建步骤

2.1环境

centos 6.0 24位   jdk8.0    zookeeper3.4.13    如果用户不是root,且操作的时候没有权限 ,可以使用指令     su

2.2安装jdk

我的是在安装centos的时候选择软件的时候安装了,如果没有的话,可以参考百度经验的操作,我尝试过,是没问题的

https://jingyan.baidu.com/album/7908e85cc58008af481ad2a9.html?picindex=7

2.3下载zookeeper镜像

wget https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz -P /usr/local/src/

2.4解压数据到/opt目录下

tar zxvf /usr/local/src/zookeeper-3.4.13.tar.gz -C /opt

2.5修改opt下文件名称

mv /opt/zookeeper-3.4.13 /opt/zookeeper

2.6增加当前配置zoo.cfg

cp /opt/zookeeper/conf/zoo_sample.cfg  /opt/zookeeper/conf/zoo.cfg

2.7把zookeeper加到环境变量中

echo -e "# append zk_env\nexport PATH=$PATH:/opt/zookeeper/bin" >> /etc/profile

2.8修改zoo.cfg的内容

查看本机ip :https://www.cnblogs.com/xingyunblog/articles/8926317.html

vi /opt/zookeeper/conf/zoo.cfg
然后点击 ‘i’ 进入编辑状态
编辑完成后点击 esc 然后输入 ‘:wq’ 来退出
内容替换为如下

tickTime=2000
initLimit=10
syncLimit=5
dataLogDir=/opt/zookeeper/logs
dataDir=/opt/zookeeper/data
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1= 192.168.1.148:2888:3888
server.2= 192.168.1.149:2888:3888
server.3= 192.168.1.150:2888:3888

如果当前服务器是serve.1  那么当前服务器中 server.1= 0.0.0.0:2888:3888

2.9增加目录

mkdir -p /opt/zookeeper/{logs,data}

2.10修改服务器zookeeper id

首先增加myid文件

vi /opt/zookeeper/data/myid

然后根据是哪个服务器修改内容为自己对应的

echo "2" > /opt/zookeeper/data/myid


2.11启动服务器

/opt/zookeeper/bin/zkServer.sh start

2.12查看服务器状态

 /opt/zookeeper/bin/zkServer.sh status

2.13停止服务器

/opt/zookeeper/bin/zkServer.sh stop

3.错误处理

调试方法

/opt/zookeeper/bin/zkServer.sh start-foreground,使用这个命令启动zookeeper可以查看错误信息

3.1错误1:

JMX enabled by defaultUsing config: /root/apps/zookeeper-3.4.5/bin/../conf/zoo.cfg./zkServer.sh:行131: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.75.x86_64/bin/java: 没有那个文件或目录或JMX enabled by defaultUsing config: /root/apps/zookeeper-3.4.5/bin/../conf/zoo.cfg./zkServer.sh: 第 131 行:exec: java: 未找到
如果出现的错误信息如上,那么就是jdk没有安装好,需要配置一下jdk

3.2错误2:

java.net.BindException:地址已在使用

出现这个问题有可能是端口被占用,把之前启动过的zkServer.sh关掉(./zkServer.sh stop)或者换一个端口号试试。

可以用这个命令netstat -lntup 查看所有端口号使用情况
杀进程 kill -9 进程号

3.3错误3:

java.net.ConnectException: 拒绝连接

在/etc/hosts中添加这一行:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
查询主机名称 : hostname
修改hosts文件: vi /etc/hosts

3.4错误4:

java.net.NoRouteToHostException: 没有到主机的路由

这个问题一般是防火墙的问题,起初以为我的防火墙是关了的,使用iptables查看也确实是关了的。但是注意,centOS7 的默认防火墙不是iptables!不是iptables!不是iptables!
centOS7的防火墙是firewall,所以要关闭的是firewall,不是iptables。
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
使用这两个命令可以关闭并禁用firewall

3.5错误5:

Interrupted while waiting for message on queue
java.lang.InterruptedException
要解决上述的错误可以试试改一改zoo.cfg的配置文件,将本机的ip改为0.0.0.0,不要写本机的ip地址

 

参考博客
https://www.cnblogs.com/linuxprobe/p/5851699.html
https://blog.csdn.net/weiyongle1996/article/details/73733228

 

posted @ 2019-03-20 20:59  夜宵95  阅读(377)  评论(0)    收藏  举报