上一篇說了,一個Zookeeper集群一般認為至少需要3個節點,所以我們這里安裝需要准備三台虛擬機:
# 192.168.209.133 test1 # 192.168.209.134 test2 # 192.168.209.135 test3
當然,我們也可以先安裝一台,然后克隆出多台,再進行配置也可以。
然后我們需要先下載Zookeeper,進入官網,我這里選擇了Apache ZooKeeper 3.4.14的版本,因為Zookeeper是采用java寫的,因此我們我們還需要准備jdk:
Zookeeper官網下載:http://zookeeper.apache.org/releases.html
JDK下載:https://www.oracle.com/java/technologies/
百度雲下載:https://pan.baidu.com/s/13dPvlNhaLocDxCr84-Y0rw (提取碼: 9ir4)
另外說明一下,博主使用的Linux版本是Ubuntu16.04的server版
安裝JDK
下載好包之后,我們可以先部署jdk,這個網上有很多教程,這里就不細述了
# 解壓 sudo tar -zxvf jdk-8u202-linux-x64.tar.gz # 移動到指定目錄,我這里移動到/opt目錄 sudo mv jdk1.8.0_202 /opt/ # 在/usr/local/bin下創建java的軟連接 sudo ln -s /opt/jdk1.8.0_202/bin/java /usr/local/bin/java
# 檢驗java是否部署完成
java -version
安裝Zookeeper
接下來是安裝Zookeeper,這里我們使用的是Zookeeper編譯好了的包,因此我們只需要直接部署就可以了
# 下載好之后,進去Zookeeper包所在目錄進行解壓 sudo tar -zxvf zookeeper-3.4.14.tar.gz
# 解壓之后的文件放在當前目錄的zookeeper-3.4.14目錄中,我們可以將它們移動到我們自己的某個目錄,比如這里我將它放到/opt目錄下
sudo mv zookeeper-3.4.14 /opt/
之后就是配置了。我們進入Zookeeper的根目錄,里面的conf目錄下有一個zoo_sample.cfg文件,這個是Zookeeper配置文件的樣板,我們將它復制一份並重命名為zoo.cfg
我們查看zoo.cfg文件,內容如下:
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/tmp/zookeeper # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1
這些事Zookeeper的默認配置,包括心跳、端口等等,如果你不確定他們的作用,可以不用改它們,用默認的就行了,但是這里我們為了方便,修改dataDir配置,同時新增dataLogDir配置:
# 日志文件所在目錄 dataLogDir=/opt/zookeeper-3.4.14/logs # 數據文件保存目錄 dataDir=/opt/zookeeper-3.4.14/data
現在我們只需要配置集群節點就行了,這個配置比較特殊,它是采用特定格式描述的:
server.n=ip:A:B
# n是節點編號,一般從1開始
# ip是集群中節點所在服務器IP地址
# A是LF通信端口,表示該服務器與集群中的leader交換的信息的端口,默認是2888
# B是選舉端口,表示選舉新leader時服務器間相互通信的端口(當leader掛掉時,其余服務器會相互通信,選擇出新的leader),默認是3888
因為我們為集群准備了3台虛擬機,因此我們的配置應該是這樣的:
server.1=192.168.209.133:2888:3888 server.2=192.168.209.134:2888:3888 server.3=192.168.209.135:2888:3888
將它加到zoo.conf中結果如下:
上面說了server.n是配置集群的服務節點,接下來就是配置當前服務器時那個節點,進入我們上面配置的那個dataDir目錄,里面有一個myid文件(如果沒有的話就自己創建),打開后輸入1,並保存,這里的1表示的就是server.n中的n,告訴Zookeeper當前服務器所屬的節點編號
然后可以啟動Zookeeper了,啟動Zookeeper是通過Zookeeper根目錄下的bin目錄下的zkServer.sh文件來啟動的,我們可以先查看它有哪些命令:
./bin/zkServer.sh --help
# 啟動,默認是后台啟動,當前shell不會被阻塞 zkServer.sh start # 啟動,會導致shell被阻塞 zkServer.sh start-foreground # 停止 zkServer.sh stop # 重啟 zkServer.sh restart # 查看當前節點狀態 zkServer.sh status # upgrade是升級,print-cmd是打印命令,這兩個用的少
我們現在啟動Zookeeper並查看狀態:
提示我們Zookeeper已啟動,但是根據zoo.conf中的配置,Zookeeper還不能提供相關的服務,這個是因為我們才安裝部署完成了一台,另外兩台沒有部署,而我們配置了3個節點,就相當於兩個節點故障,從而Zookeeper就不會提供相關服務了。
接着我們安裝上面的步驟部署另外兩台,並將另外兩台啟動后,在查看狀態:
節點1(192.168.209.133 test1)
節點2(192.168.209.134 test2)
節點3(192.168.209.135 test3)
從上面輸出的結果可以看到,第二個節點已經被選舉為Leader,其他兩個則是Follower
Zookeeper安裝好之后,建議將它加到開機啟動項中,或者使用守護進程工具(如supervisor)進行管理。
ZooInspector連接Zookeeper
Zookeeper安裝好了,我們可以嘗試連接試試,這里使用的是ZooInspector工具,它是使用java開發出來的,因此也需要安裝jdk,因為我們是在windows上運行ZooInspector,因此需要安裝windows版的jkd,不能使用上面linux版的jdk:
百度雲下載:https://pan.baidu.com/s/1TCwep5Y7xnZffsT8WLjJUw (提取碼: ixex)
當前,如果你電腦里已經安裝好jdk了,這個jdk就沒必要了。jdk和ZooInspector下載好之后,解壓到某個目錄,我這里將它們都解壓到D盤
我們可以將jdk配置到環境變量中,如果不配置也是可以的,ZooInspector解壓出來的build目錄下有個zookeeper-dev-ZooInspector.jar文件,我們打開cmd,進入到zookeeper-dev-ZooInspector.jar文件所在目錄,輸入
# 這個jdk地址根據自己的目錄輸入就可以了
D:\jdk1.8.0_25\bin\java.exe -jar zookeeper-dev-ZooInspector.jar
然后就打開了ZooInspector的窗口,點擊左上角的開始圖標:
其中,Connect String是Zookeeper的集群節點地址,采用ip:端口的方式,這個端口就是在zoo.conf中配置的clientPort參數,另外這里可以連接一個節點,也可以連接多個節點,如果是多個節點,則每個節點之前使用逗號(,)分隔,我們這里是直接連接了三個節點。
點擊OK之后,稍等片刻,顯示: