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

浙公网安备 33010602011771号