A. 12步教你安裝JDK和zookeeper
安裝zookeeper首先要安裝JDK,linux有自帶的OPENJDK,要卸載然後重新安裝。
1. java -version 查看JDK版本
2. rpm -qa | grep java 查找有哪些java相關的包
3. rpm -e --nodeps tzdata-java-2015e-1.e16.noarch 卸載,--nodeps 就是no depends的意思,忽略相關依賴強制卸載
4. mkdir /export/server 創建zookeeper和 JDK安裝的目錄
5.
mv jdk1.8.0_65.tar.gz /export/server 把jdk安裝包移動到/export/server文件夾
cd /export/server 進入該文件夾, ls查看可以看到安裝包
tar -zxvf jdk1.8.0_65.tar.gz 把JDK上傳到linux系統中,然後執行tar解壓操作
6. vi /etc/profile 編輯/etc目錄下的profile文件,也就是配置環境變數的配置文件。
7. 打開文件後,按大寫的G直接跳到文件的最後一行,然後按 i 進入編輯文件狀態,在末尾添加這三行配置信息
export JAVA_HOME=/export/server/jdk.1.8.0_65 配置一個JAVA_HOME的變數,值是jdk安裝的目錄,這個JAVA_HOME在下面兩行會用到
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
編輯完畢,按ESC退出文件編輯狀態,然後輸入 指令 :wq (冒號+wq) 回車退出並保存該文件。
8. source /etc/profile 刷新profile文件到系統內存。
9. 在任意目錄下 輸入 java -v 查看JDK版本
以上JDK安裝完畢,接下來安裝zookeeper。
10. 和上傳JDK一樣,把zookeeper-3.4.10.tar.gz文件放到/export/server目錄下,並進行解壓。(忘記了就去看第5步)
tar -zxvf zookeeper-3.4.10.tar.gz
解壓之後要進行相關的配置(軟體安裝無非就是解壓+配置)
這里主要有兩個重要要改的地方:1.zookeeper服務啟動後數據文件保存在哪裡? 2. zookeeper通常是會集群化,也就是啟動好幾台zookeeper同時提供服務的,因此在每台zookeeper服務的配置文件裡面都要配置上其它zookeeper服務的ip和埠。 第二點不懂的話直接看配置文件就好了。
11. 首先實現第一點,創建zookeeper數據保存目錄
mkdir /export/data/zkdata 創建zkdata文件夾,用於存在zookeeper數據.(這條如果報錯了,說明你應該先執行mkdir /export/data/創建data目錄)
12. 接下來進行配置
cd zookeeper/conf/ 配置文件放在該目錄下,ll可以查看有哪些文件,如圖
其中有個zoo_sample.cfg 文件,這個文件是自帶的一個模板,就是告訴你配置文件要照著這個樣子去抄。。。
然後有個重要的東西就是:zookeeper啟動的時候,默認是會讀取該文件路徑下配置文件zoo.cfg的,但是這里默認是i沒有這個文件的。所以我們直接復制一個zoo_sample.cfg 重命名為zoo.cfg就OK了。但是要進去做自己的相關配置改動。 復制文件命令是:
cp zoo_sample.cfg zoo.cfg
13. vi zoo.cfg 開始編輯配置文件了,打開可以看見一堆你可能看不懂的東西,但是不重要因為大多數都是注釋掉的東西。新手就別管那麼多了。
這里我們主要要修改的是兩個東西,哪兩個? 前面黑體字有說過了:數據存放目錄,集群中各個zookeeper服務的ip port。
同樣的,按 i 進入編輯模式,找到dataDir=/tmp。。。這一行。 這一行就是設置數據存放的目錄。 把它改成我們自己新建的目錄:
dataDir=/export/data/zkdata/ 這樣第一點就配置完了。
實際上到這里一台zookeeper服務已經安裝完畢了,但是說過了,zookeeper是集群,所以得多搞幾個伺服器。我這里用了三台虛擬機,復制三台。ip分別是192.168.209.128 / 192.168.209.129 / 192.168.209.130,這三台同樣的安裝JDK 和zookeeper。 重復前面的操作就行,也可以直接復制虛擬機。
同樣的在zoo.cfg裡面,大寫的G到最後一行。在末尾加上這三行配置:
server.1=192.168.209.128:2888:3888 #三台服務對應server 1 2 3 ,對應三個ip。 後面兩個埠分別是 心跳埠2888 和選舉埠。
server.2=192.168.209.129:2888:3888
server.3=192.168.209.130:2888:3888
然後保存退出就OK了。
13. 最後一步: 就是給三台zookeeper服務設置id。在哪裡設置呢?
就是在zookeeper保存文件的目錄下創建一個/export/data/zkdata/myid 文件。 文件名不能亂寫,就得是是這個,選舉的時候很關鍵的。
我們有三台zookeeper server,每台的myid文件數字 不一樣,你得進入三台伺服器分別編輯這個文件。
第一台伺服器,vi myid 編輯該文件,寫入一個數字 1
第二台伺服器,vi myid 編輯該文件,寫入一個數字 2
第三台伺服器,vi myid 編輯該文件,寫入一個數字 3
14. 最後你啟動一下zookeeper試試安裝成功了沒 。
/export/server/zookeeper/bin/zkServer.sh start 啟動zookeeper的指令。可以看到日誌列印出來的是默認Using zoo.cfg這個配置文件。三台服務你都要啟動,zookeeper會根據你配置的三個ip port去發送心跳,自動建立集群。 並且根據myid去選舉哪個server是leader,哪個是follower。
【這里呢就安裝完畢了! 動手操作也就14步是不是很簡單。但是搞清楚原理才是最主要的。】
B. 如何使用Zookeeper集群Tomcat
(1)解壓為zookeepertar -xf -C /home/myuser/zookeeper/
復制zookeeper文件夾3份,分別重名名為zookeeperA,zookeeperB,zookeeperC。 並且創建數據快照以及日誌存放文件夾,命名為zooA,zooB,zooC。 (2)編輯對應的zookeeper配置文件,復制zookeeperconf下zoo_sample.cfg為zoo.cfgcd /home/myuser/zookeeperA/conf
cp zoo_sample.cfg zoo.cfg
(3)修改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=/home/myuser/zooA/data
# the port at which the clients will connect
clientPort=2181
# ZooKeeper server and its port no. # ZooKeeper ensemble should know about every other machine in the ensemble # specify server id by creating 'myid' file in the dataDir # use hostname instead of IP address for convenient maintenance
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2988:3988
server.3=127.0.0.1:2088:3088
#
# Be sure to read the maintenance section of the
# administrator guide before turning>tickTime:心跳時間,為了確保連接存在的,以毫秒為單位,最小超時時間為兩個心跳時間
initLimit:多少個心跳時間內,允許其他server連接並初始化數據,如果ZooKeeper管理的數據較大,則應相應增大這個值
clientPort:服務的監聽埠
dataDir:用於存放內存資料庫快照的文件夾,同時用於集群的myid文件也存在這個文件夾里(注意:一個配置文件只能包含一個dataDir字樣,即使它被注釋掉了。)
dataLogDir:用於單獨設置transaction log的目錄,transaction log分離可以避免和普通log還有快照的競爭
syncLimit:多少個tickTime內,允許follower同步,如果follower落後太多,則會被丟棄。
(4)創建myid文件
cd /home/myuser/zooA/data
sudo sh -c 'echo "1" >> myid'
其他文件夾類似創建myid文件,zookeeperB為2,zookeeperC為3
(5)啟動zookeeper
cd /home/myuser/zookeeperA/bin
sudo sh zkServer.sh start
查看zookeeper狀態[root@weibo bin]# sh zkServer.sh status
JMX enabled by default
Using config: /home/weibo/zookeeperA/bin/../conf/zoo.cfg
Mode: follower
啟動OK,依次啟動另外兩台zookeeper,啟動第一台zookeeper後,你可以觀察bin下的zookeeper.out可以看到報錯,connection
refused,沒有關系,zookeeper需要等待其他另個節點的加入,全部啟動之後就正常了。
(6)客戶端連接zookeeper
[root@weibo bin]# sh zkCli.sh
Connecting to localhost:2181
2013-05-10 15:00:25,363 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.5-1392090, built>configs:保存上傳的配置文件信息
clusterstate.json:集群狀態json
aliases:別名json
live_node:當solr伺服器啟動的時候,會注冊到這里
overseer:保存shard信息
overseer_elect:節點選舉
collections:所有的collection