ZooKeeper叢集部署 JDK的安裝配置(Windows、Linux)
Zookeeper的介紹
- ZooKeeper主要服務於分散式系統,可以用ZooKeeper來做:統一配置管理、統一命名服務、分散式鎖、叢集管理。
- 使用分散式系統就無法避免對節點管理的問題(需要實時感知節點的狀態、對節點進行統一管理等等),而由於這些問題處理起來可能相對麻煩和提高了系統的複雜性,ZooKeeper作為一個能夠通用解決這些問題的中介軟體就應運而生了。
zookeeper的選舉策略也是需要半數以上的節點同意才能當選leader,如果是偶數節點可能導致票數相同的情況,所以Zookeeper做叢集最好部署3,5,7個節點。
Zookeeper包下載地址:http://zookeeper.apache.org/releases.html#download
服務規劃
Zookeeper部署
1.關閉防火牆和SELinux(所有裝置)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
vi /etc/selinux/config
SELINUX=enforcing改為SELINUX=disabled
2.安裝JDK
zookeeper是由java開發,所以需要有JDK 1.6以上的執行環境支援,JDK的部署可參考JDK的安裝配置(Windows、Linux)
3.配置IP地址和主機名之間的對映(所有裝置)
vim /etc/hosts
192.168.36.152 node1 192.168.36.153 node2 192.168.36.154 node3
4.配置主機名(所有裝置)
vim /etc/sysconfig/network
network=主機名
需重啟裝置使配置生效:init 6
5.安裝Zookeeper(192.168.36.152)
先在一臺裝置上部署
解壓安裝包
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz -C /usr/local/
修改Zookeeper配置檔案
cd /usr/local/apache-zookeeper-3.8.0-bin/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
#資料檔案目錄 dataDir=/usr/local/apache-zookeeper-3.8.0-bin/data #Zookeeper客戶端連線埠 clientPort=2181 #叢集服務地址,2888為zookeeper叢集內通訊埠,Leader監聽此埠 server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888 #保留3個快照 autopurge.snapRetainCount=3 #1小時清理一下日誌 autopurge.purgeInterval=1
mkdir /usr/local/apache-zookeeper-3.8.0-bin/data
將Zookeeper拷貝至其他節點
scp -r /usr/local/apache-zookeeper-3.8.0-bin/ root@node2:/usr/local/
scp -r /usr/local/apache-zookeeper-3.8.0-bin/ root@node3:/usr/local/
6.配置Zookeeper的id(所有裝置)
cd /usr/local/apache-zookeeper-3.8.0-bin/data
vi myid
#myid對應zoo.cfg配置檔案裡相應的server號,node1也就會是1,node2是2,node3則是3 1
7.啟動Zookeeper(所有裝置)
cd /usr/local/apache-zookeeper-3.8.0-bin/bin
./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
三臺zookeeper啟動後再檢視zookeeper狀態,可以看到我是node2被選舉為了leader
[root@node2 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
[root@node1 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/apache-zookeeper-3.8.0-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
jps命令檢視,看到QuorumPeerMain即可,QuorumPeerMain是zookeeper叢集的啟動類,用來載入配置啟動QuorumPeer執行緒的
10451 QuorumPeerMain
10622 Jps