天天看點

zk 安裝多種模式(單機, 僞叢集,叢集) 之一

單機模式

按照我下面寫的, 各位讀者, 就可以輕松完成安裝, 哈哈。

對于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

zk 安裝多種模式(單機, 僞叢集,叢集) 之一

說明已經啟動成功

(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

zk 安裝多種模式(單機, 僞叢集,叢集) 之一

出現這個情況, 說明也是啟動成功

(6) 使用用戶端連結到伺服器上

./zkCli.sh -timeout 5000 -server 192.168.1.104:2181

zk 安裝多種模式(單機, 僞叢集,叢集) 之一

11、 停止 zookeeper 程序:

zkServer.sh stop