1、 ?修改操作系統的/etc/hosts 文件中添加: ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
2、 下載zookeeper
? ? ? ?
3、 解壓zookeeper 安裝包: ?
? ? ?$ tar -zxvf zookeeper-3.4.6.tar.gz ?
? ? ? ?
4、 在/home/zengmg/zookeeper-3.4.6 目錄下創建以下目錄: ?
? ? ?$ cd /home/zengmg/zookeeper-3.4.6 ?
? ? ?$ mkdir data ?
? ? ?$ mkdir logs ?
? ? ? ?
5、 將 zookeeper-3.4.6/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=/home/zengmg/zookeeper-3.4.6/data ?
? ? dataLogDir=/home/zengmg/zookeeper-3.4.6/logs ?
? ? # the port at which the clients will connect ?
? ? clientPort=2181 ?
? ? #2888,3888 are election port ?
? ?server.1=edu-provider-01:2888:3888 ?
其中, ?
? ? 2888 端口號是zookeeper 服務之間通信的端口。 ?
? ? 3888 是zookeeper 與其他應用程序通信的端口。 ?
? ? edu-provider-01 是在hosts 中已映射了IP 的主機名。 ?
? ? initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這里所說的客戶端不?
? ? 是用戶連接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集群中連接到 ?
? ? Leader 的 Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。?
? ? 當已經超過 10 個心跳的時間(也就是 tickTime)長度后 Zookeeper 服務器還沒?
? ? 有收到客戶端的返回信息,那么表明這個客戶端連接失敗。總的時間長度就是 ?
? ? 5*2000=10 秒。 ?
? ? syncLimit:這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時?
? ? 間長度,最長不能超過多少個 tickTime 的時間長度,總的時間長度就是 2*2000=4 ?
? ? 秒。 ?
? ? server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號服務器;B 是這個服務?
? ? 器的IP 地址或/etc/hosts 文件中映射了IP 的主機名;C 表示的是這個服務器與?
? ? 集群中的 Leader 服務器交換信息的端口;D 表示的是萬一集群中的 Leader 服務?
? ? 器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是?
? ? 用來執行選舉時服務器相互通信的端口。如果是偽集群的配置方式,由于 B 都是?
? ? 一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同?
? ? 的端口號。 ?
??
7、 在dataDir=/home/zengmg/zookeeper-3.4.6/data 下創建myid 文件 ?
? ? 編輯myid 文件,并在對應的IP 的機器上輸入對應的編號。如在zookeeper 上,myid?
? ? 文件內容就是1。如果只在單點上進行安裝配置,那么只有一個server.1。 ?
? ? $ vi myid ?
? ? 1 ?
8、設置環境變量
9、 在防火墻中打開要用到的端口2181、2888、3888 ?
不管防火墻是關閉還是開著,都添加。假設現在關閉,以后開啟了也不影響。
增加以下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 ?
? ? (如果防火墻開著)重啟防火墻: ?
? ? # service iptables restart ?
10、啟動并測試zookeeper (要用zengmg 用戶啟動,不要用root): ?
? ? ? (1) 使用zengmg 用戶到/zookeeper-3.4.6安裝目錄/bin 目錄中執行: ?
? ? ? ? ? ?$ zkServer.sh start ?
? ? ? ? ? ??
? ? ? (2) 輸入jps 命令查看進程: ?
? ? ? ? ? $ jps ?
? ? ? ? ? ?1456 QuorumPeerMain ?
? ? ? ? ? ?1475 Jps ?
? ? ? ? ? ??
? ? ? ? ? ?其中,QuorumPeerMain 是zookeeper 進程,啟動正常 ?
?(3) 查看狀態: ?
? ? ? ? ?$ zkServer.sh status ?
? ? ? ??? ? ? ? ? ?
? ? ?(4) 查看zookeeper 服務輸出信息: ?
? ? ? ? ?由于服務信息輸出文件在/zookeeper-3.4.6安裝目錄/bin/zookeeper.out ?
? ? ? ? ?$ tail -500f zookeeper.out ?
? ? ??
11、停止zookeeper 進程: ?
? ? $ zkServer.sh stop ?
? ? ??
12、配置zookeeper 開機使用zengmg 用戶啟動: ?? ? 編輯/etc/rc.local 文件,加入: ?
1、jdk環境
2、
? ? ?su - zengmg -c 'zookeeper-3.4.6安裝目錄/bin/zkServer.sh start' ?
su - zengmg -c command -c是command的縮寫
如果是root用戶,則:
?編輯/etc/rc.local 文件,加入: ?
1、jdk環境
2、
? ? ?zookeeper-3.4.6安裝目錄/bin/zkServer.sh start
[root@zengmg ~]# vi /etc/rc.local
#! /bin/bash
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.touch /var/lock/subsys/localexport JAVA_HOME=/usr/local/jdk/usr/local/zookeeper/bin/zkServer.sh start >> zook.log~
參見
zookeeper開機啟動