單機模式
按照我下面寫的, 各位讀者, 就可以輕松完成安裝, 哈哈。
對于zookeeper 單節點的安裝
1、 修改作業系統的/etc/hosts 檔案中添加:(這步驟可以跳過, 直接使用IP即可)
vi /etc/hosts
# zookeeper servers
192.168.1.104 zk-register-service
2、下載下傳 zookeeper-3.4.10:
http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
3、将下載下傳好的檔案拷貝到usr/local/application 解壓 zookeeper 安裝包:
$ cp ./zookeeper-3.4.10.tar.gz /usr/local/application/
$ tar -zxvf zookeeper-3.4.10.tar.gz
4、在解壓完成的ZK目錄下面建立以下目錄:
$ cd ./zookeeper-3.4.10
$ mkdir data
$ mkdir logs
5、 将 zookeeper-3.4.10 的conf 目錄下的 zoo_sample.cfg 檔案拷貝一份,命名為為zoo.cfg
$ cp zoo_sample.cfg zoo.cfg
6、 修改 zoo.cfg 配置檔案:
$ vi 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=/usr/local/application/zookeeper-3.4.10/data
dataLogDir=/usr/local/application/zookeeper-3.4.10/logs
# the port at which the clients will connect
clientPort=2181
#2888,3888 are election port
server.1=zk-register-service:2888:3888
(注意 : 等同于: server.1=192.168.1.104:2888:3888)
關鍵解釋 :
其中:
2888 端口号是 zookeeper 服務之間通信的端口。
3888 是 zookeeper 與其他應用程式通信的端口。
zk-register-service是在 hosts 中已映射了 IP 的主機名。
initLimit:這個配置項是用來配置 Zookeeper 接受用戶端(這裡所說的用戶端不
是使用者連接配接 Zookeeper 伺服器的用戶端,而是 Zookeeper 伺服器叢集中連接配接到
Leader 的 Follower 伺服器)初始化連接配接時最長能忍受多少個心跳時間間隔數。
當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Zookeeper 伺服器還沒
有收到用戶端的傳回資訊,那麼表明這個用戶端連接配接失敗。總的時間長度就是
52000=10 秒。
syncLimit:這個配置項辨別 Leader 與 Follower 之間發送消息,請求和應答時
間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 22000=4秒。
server.A=B:C:D:其中A 是一個數字,表示這個是第幾号伺服器;
① B 是這個伺服器的 IP 位址或/etc/hosts 檔案中映射了 IP 的主機名;
② C 表示的是這個伺服器與叢集中的 Leader 伺服器交換資訊的端口;
③ D 表示的是萬一叢集中的 Leader 伺服器挂了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時伺服器互相通信的端口。如果是僞叢集的配置方式,由于 B 都是一樣,是以不同的 Zookeeper 執行個體通信端口号不能一樣,是以要給它們配置設定不同的端口号。
7、 在 dataDir=/usr/local/application/zookeeper-3.4.10/data 下建立 myid 檔案
編輯 myid 檔案,并在對應的 IP 的機器上輸入對應的編号。如在 zookeeper 上, myid
檔案内容就是 1。 如果隻在單點上進行安裝配置, 那麼隻有一個 server.1。
$ vi myid
1
8、 進入目前 使用者目錄下修改vi .bash_profile, 增加 zookeeper 配置:(這步可以跳過直接到zk 目錄下操作即可)
# zookeeper env
export ZOOKEEPER_HOME=/usr/local/application/zookeeper-3.4.10
export PATH=$ZOOKEEPER_HOME/bin:$PATH
使配置檔案生效
$ source /home/zzf/.bash_profile
9、 在防火牆中打開要用到的端口 2181、 2888、 3888
切換到 root 使用者權限,執行以下指令:
chkconfig iptables on
service iptables start
9.1 重新開機後生效
開啟: chkconfig iptables on
關閉: chkconfig iptables off
9.2 即時生效,重新開機後失效
開啟: service iptables start
關閉: service iptables stop
編輯/etc/sysconfig/iptables
vi /etc/sysconfig/iptables
增加以下 3 行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
9.3 重新開機防火牆:
service iptables restart
檢視防火牆端口狀态:
service iptables status
ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2181
ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2888
ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3888
REJECT all – 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
10、 啟動并測試 zookeeper
(1) 使用./zookeeper-3.410/bin 目錄中執行:
$ zkServer.sh start
下面的2、3、4、5 是檢查zk 是否啟動成功
(2) 輸入 jps 指令檢視程序:
$ jps
1456 QuorumPeerMain
1475 Jps
其中,QuorumPeerMain是zookeeper程序,啟動正
(3) 檢視狀态:
$ zkServer.sh status

說明已經啟動成功
(4) 檢視 zookeeper 服務輸出資訊:
由于服務資訊輸出檔案在/usr/local/application/zookeeper3.410/bin/zookeeper.out
$ tail -500f zookeeper.out
(5) 檢檢視看是否啟動成功
如果還沒有安裝telnet 的先進行安裝
指令: yum install telnet
在使用: telnet 192.168.1.101 2181
出現這個情況, 說明也是啟動成功
(6) 使用用戶端連結到伺服器上
./zkCli.sh -timeout 5000 -server 192.168.1.104:2181
11、 停止 zookeeper 程序:
zkServer.sh stop