Zookeeper安裝和使用,Centos7安裝Zookeeper,Centos安裝配置和Zookeeper安裝配置


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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM