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/