Zookeeper安装和使用,Centos7安装Zookeeper,Centos安装配置和Zookeeper安装配置
================================
©Copyright 蕃薯耀 2020-10-20
https://www.cnblogs.com/fanshuyao/
一、使用VMware Workstation Pro安装CentOS-7-x86_64-Minimal-1708.iso
过程略。
二、修改IP地址,默认是没有局域网地址的
进入ip地址配置文件目录:
cd /etc/sysconfig/network-scripts/
编辑配置文件:
vi ifcfg-ens33
全部路径:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
只要修改这个,重启网络服务后,就能获取到地址(这个比较好,设置静态地址,有时候会出现不能上网的情况)
ONBOOT=yes
设置静态地址:
…… BOOTPROTO=static …… …… ONBOOT=yes IPADDR=192.168.132.13 GATEWAY=192.168.132.1 NETMASK=255.255.255.0
修改完配置文件,重启网络:
systemctl restart network
三、安装Jdk和zookeeper
上传jdk和zookeeper
修改权限:
chmod 777 jdk-8u202-linux-x64.tar.gz apache-zookeeper-3.6.2-bin.tar.gz
1、解压jdk、zookeeper:
tar -zxvf jdk-8u202-linux-x64.tar.gz
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
2、修改文件夹名称(改短一点)
mv jdk1.8.0_202 /java/jdk1.8
mv apache-zookeeper-3.6.2-bin /java/zookeeper3.6.2
3、jdk配置:
vi /etc/profile
在文件的最后加下下面的配置:
JAVA_HOME=/java/jdk1.8 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME PATH CLASSPATH
ZK_HOME=/java/zookeeper3.6.2
PATH=$PATH:$ZK_HOME/bin
export ZK_HOME PATH
重新加载配置文件:
source /etc/profile
查看版本:
java -version
4、修改zookeeper配置
修改配置的文件名(直接复制一份),默认文件名不生效:
cp /java/zookeeper3.6.2/conf/zoo_sample.cfg /java/zookeeper3.6.2/conf/zoo.cfg
增加zookeeper配置文件夹的目录:
mkdir /java/zookeeper3.6.2/zkdata
修改配置文件:
vi /java/zookeeper3.6.2/conf/zoo.cfg
修改dataDir的目录为:/java/zookeeper3.6.2/zkdata
dataDir=/java/zookeeper3.6.2/zkdata
修改日志目录(可不修改,默认和zkdata同一个目录):
先在Linux创建目录:
mkdir /java/zookeeper3.6.2/zkdata/logs
在zoo.cfg配置: dataLogDir=/java/zookeeper3.6.2/zkdata/logs
修改配置文件(/java/zookeeper3.6.2/conf/zoo.cfg),配置集群(注意IP地址是否正确,不要直接复制):
server.1=192.168.132.11:2888:3888 server.2=192.168.132.12:2888:3888 server.3=192.168.132.13:2888:3888
其中数字1/2/3分别对应myid的文件内容,看下面:
创建myid文件:
echo 1 > /java/zookeeper3.6.2/zkdata/myid echo 2 > /java/zookeeper3.6.2/zkdata/myid echo 3 > /java/zookeeper3.6.2/zkdata/myid
查看文件有没有创建成功:
cat /java/zookeeper3.6.2/zkdata/myid
四、开放Centos系统端口,不然集群不能通讯,启动失败。注意:需要firewall-cmd --reload才能生效:
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --zone=public --add-port=8001/tcp --permanent
firewall-cmd --zone=public --add-port=8002/tcp --permanent
firewall-cmd --zone=public --add-port=8003/tcp --permanent
firewall-cmd --zone=public --add-port=8004/tcp --permanent
让端口生效:
firewall-cmd --reload
查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
查看某个端口是否开放:
firewall-cmd --query-port=2181/tcp
移除指定端口:
firewall-cmd --zone=public --remove-port=5672/tcp --permanent #关闭5672端口
或者
firewall-cmd --permanent --remove-port=123/tcp
查看监听的端口
netstat -lnpt
检查端口被哪个进程占用
netstat -lnpt |grep 5672
如果很多端口要设置,想关掉防火墙,看下面:
查看防火墙状态: firewall-cmd --state 关闭防火墙 systemctl stop firewalld.service 禁止防火墙开机启动 systemctl disable firewalld.service
五、Zookeeper单机配置
单机(不配置server.1)可以直接启动:
六、启动Zookeeper
进入bin目录:
cd /java/zookeeper3.6.2/bin/
启动服务:
./zkServer.sh start
或者使用全路径:
/java/zookeeper3.6.2/bin/zkServer.sh start
查看状态
./zkServer.sh status
或者使用全路径:
/java/zookeeper3.6.2/bin/zkServer.sh status
停止服务:
./zkServer.sh stop
或者
/java/zookeeper3.6.2/bin/zkServer.sh stop
启动客户端(默认启动的是本机):
./zkCli.sh
或者
/java/zookeeper3.6.2/bin/zkCli.sh
带端口启动:
./zkCli.sh -server 192.168.220.131:2181
Zookeeper Client启动后,查看根:
ls /
七、Zookeeper Client常用命令
1、创建节点:
create /aa a
其中/aa表示aa节点,并设置该节点的值为a。后面一定要用值,不然会创建失败。
默认创建的是持久的节点。
2、获取节点的值
get /aa
3、更新节点的值
set /aa aaaaa
4、删除节点
delete /aa
5、递归删除节点,包括下面的所有子节点
rmr /aa
6、创建临时的节点
create -e /bb bb
临时节点,关闭或者退出Zookeeper client时,就会消除数据,下次再进来就没有。
7、列表节点下面的子节点
ls /aa
8、退出Client
quit
Centos系统其它命令:
删除目录及下面所有的文件:
rm -rf version-2
八、Zookeeper IP地址配置错误导致的错
2021-01-04 11:31:19,911 [myid:1] - INFO [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):FastLeaderElection@979] - Notification time out: 1600
2021-01-04 11:31:20,500 [myid:1] - ERROR [ListenerHandler-/192.168.132.11:3888:QuorumCnxManager$Listener$ListenerHandler@1093] - Exception while listening
java.net.BindException: 无法指定被请求的地址 (Bind failed)
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
at java.net.ServerSocket.bind(ServerSocket.java:375)
at java.net.ServerSocket.bind(ServerSocket.java:329)
at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener$ListenerHandler.createNewServerSocket(QuorumCnxManager.java:1134)
at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener$ListenerHandler.acceptConnections(QuorumCnxManager.java:1064)
at org.apache.zookeeper.server.quorum.QuorumCnxManager$Listener$ListenerHandler.run(QuorumCnxManager.java:1033)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
2021-01-04 11:31:21,502 [myid:1] - ERROR [ListenerHandler-/192.168.132.11:3888:QuorumCnxManager$Listener$ListenerHandler@1112] - Leaving listener thread for address 192.168.132.11:3888 after 3 errors. Use zookeeper.electionPortBindRetry property to increase retry count.
2021-01-04 11:31:21,502 [myid:1] - INFO [QuorumPeerListener:QuorumCnxManager$Listener@979] - Leaving listener
2021-01-04 11:31:21,503 [myid:1] - ERROR [QuorumPeerListener:QuorumCnxManager$Listener@981] - As I'm leaving the listener thread, I won't be able to participate in leader election any longer: 192.168.132.11:3888
2021-01-04 11:31:21,504 [myid:1] - ERROR [QuorumPeerListener:ServiceUtils@42] - Exiting JVM with code 14
IP地址配置错误,导致无法连接 错误的IP地址: server.1=192.168.132.11:2888:3888 server.2=192.168.132.12:2888:3888 server.3=192.168.132.13:2888:3888 正确的IP地址: server.1=192.168.170.11:2888:3888 server.2=192.168.170.12:2888:3888 server.3=192.168.170.13:2888:3888
九、Zookeeper设置开机启动(需要指定JAVA_HOME,不然启动失败)
1、创建Zookeeper开机启动脚本文件:
vi /etc/init.d/zookeeper
Zookeeper开机启动脚本文件内容(JAVA_HOME的路径要修改,zookeeper的bin要修改):
#!/bin/bash #chkconfig:2345 20 90 #description:zookeeper #processname:zookeeper export JAVA_HOME=/java/jdk1.8 case $1 in start) su root /java/zookeeper3.6.2/bin/zkServer.sh start;; stop) su root /java/zookeeper3.6.2/binzkServer.sh stop;; status) su root /java/zookeeper3.6.2/bin/zkServer.sh status;; restart) su root /java/zookeeper3.6.2/bin/zkServer.sh restart;; *) echo "require start|stop|status|restart" ;; esac
2、给脚本添加执行权限
chmod +x /etc/init.d/zookeeper
3、将zookeeper添加到开机启动
chkconfig --add zookeeper
4、查看开机自启的服务中是否已经有我们的zookeeper
chkconfig --list zookeeper
[root@host-11 ~]# chkconfig --list zookeeper
结果:
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
zookeeper 0:关 1:关 2:开 3:开 4:开 5:开 6:关
5、测试开机启动是否成功,重启服务器
reboot -f
6、查看zookeeper的状态:
service zookeeper status
启动:service zookeeper start
关闭:service zookeeper stop
查看状态:service zookeeper status
或者查看进程
ps -ef | grep zookeeper
十、注意事项:
1、提示unable access datadir时,删除/java/zookeeper3.6.2/zkdata的version-2目录:rm -rf version-2
2、
-----------centos7没有iptables------------
service iptables status
service iptables stop
chkconfig iptables off
-----------------------------------------------
================================
©Copyright 蕃薯耀 2020-10-20
https://www.cnblogs.com/fanshuyao/