Centos下安裝Zookeeper

下載Zookeeper

從官網(wǎng)或者鏡像下載對應(yīng)的發(fā)行包:

http://www.apache.org/dyn/closer.cgi/zookeeper/

我這里直接使用wget命令下載3.4.8版本:

wget http://mirror.tcpdiag.net/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz

解壓Zookeeper

下載后的發(fā)行包是tar.gz格式的zookeeper-3.4.8.tar.gz
使用tar命令解壓:

tar zxvf zookeeper-3.4.8.tar.gz

配置Zookeeper

zookeeper支持兩種運行模式:獨立模式(standalone)復制模式(replicated)

真正用于生產(chǎn)環(huán)境的Zookeeper肯定都是使用復制模式的,這樣做可以避免單點問題。想要使用復制模式,但由于沒有富余的機器能夠使用,所以可以在單臺機器上通過配置來使用復制模式,從而模擬真實的集群環(huán)境。

由于Zookeeper集群是通過多數(shù)選舉的方式產(chǎn)生leader的,因此,集群需要奇數(shù)個Zookeeper實例組成,也就是說至少需要3臺(1臺不能算"群" :-] )。

配置zoo.conf文件

首先,將zookeeper-3.4.8這個目錄copy三份,分別為zookeeper-3.4.8-01、zookeeper-3.4.8-02、zookeeper-3.4.8-03,代表著3個實例。

然后,分別創(chuàng)建zoo.conf配置文件,放在對應(yīng)實例下的conf/目錄下,文件內(nèi)容如下:

# 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=/var/lib/zookeeper-01
# the port at which the clients will connect
clientPort=2181

# servers
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
# 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

下面說明一下需要注意的幾點:

  • dataDir這個是指定實例數(shù)據(jù)的存放路徑,不同的實例要區(qū)分開。并且,注釋中提醒不要設(shè)置為/tmp目錄。比如可以分別設(shè)為:
/var/lib/zookeeper-01
/var/lib/zookeeper-02
/var/lib/zookeeper-03
  • clientPort這個是供客戶端連接本實例的端口號,不同的實例也要區(qū)分。比如,可以分別指定為:2181、2182、2183。
  • server.{X}這個X可以取數(shù)字,用來標識集群中唯一的一個實例。配置了多少個server.{X}就表示集群中有多少個實例。后面值的格式為:{host}:{port1}:{port2}
    其中,{host}為實例所在的主機IP,這里由于都在一臺機器上,所以都指定為本機地址;{port1}是集群中實例之間用于數(shù)據(jù)通信的端口;{port2}是集群中實例進行l(wèi)eader選舉時使用的通信端口。對于同一實例{port1}和{port2}是不可相同的。對于同一臺機器部署多個實例的情況,不同實例的同一種端口也是需要區(qū)分的。

配置myid文件

前面提到的server.{X}配置項中的{X}就是一個實例的myid,它需要被寫在對應(yīng)實例的{dataDir}/myid文件中。

下面需要在每一個實例指定的{dateDir}目錄下創(chuàng)建一個名為myid的文件,文件的內(nèi)容就是一個數(shù)字,對應(yīng)server.{X}中的X。

比如,這里是這樣配置的:
在/var/lib/zookeeper-01/myid文件中寫入1;
在/var/lib/zookeeper-02/myid文件中寫入2;
在/var/lib/zookeeper-03/myid文件中寫入3。

創(chuàng)建啟動和停止的腳本

對于多個實例,分別啟動和停止比較麻煩,可以寫一個腳本來自動完成這個工作。
start-zk-servers.sh的內(nèi)容:

echo `/root/zookeeper-3.4.8-01/bin/zkServer.sh start`
echo `/root/zookeeper-3.4.8-02/bin/zkServer.sh start`
echo `/root/zookeeper-3.4.8-03/bin/zkServer.sh start`

stop-zk-servers.sh的內(nèi)容:

echo `/root/zookeeper-3.4.8-01/bin/zkServer.sh stop`
echo `/root/zookeeper-3.4.8-02/bin/zkServer.sh stop`
echo `/root/zookeeper-3.4.8-03/bin/zkServer.sh stop`

啟動集群

運行啟動腳本:sh start-zk-servers.sh

啟動zookeeper服務(wù)

默認地,在用戶目錄(~/)下面會生成Zookeeper的日志文件zookeeper.out。從日志中可以看出leader選舉的過程和結(jié)果。

停止集群

運行停止腳本:sh stop-zk-servers.sh

停止zookeeper服務(wù)

連接Zookeeper

開頭提到了筆者用于實驗的Zookeeper集群部署在遠程的vps上,下面用本地的Zookeeper客戶端連接一下試試。

在本地同樣下載Zookeeper的發(fā)行包,并解壓,進入目錄執(zhí)行下面的命令:(將{host}替換成遠程主機的IP,端口取集群中任意一個實例的clientPort)

bin/zkCli.sh -server {host}:2181

連上之后就可以對節(jié)點進行一些簡單的操作:

操作節(jié)點

結(jié)語

由于剛接觸Zookeeper,對原理和配置的最佳實踐還不甚了解,所以,這篇文章應(yīng)當作筆者學習過程中的記錄,不一定適合生產(chǎn)環(huán)境,切記!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,196評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,688評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,456評論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,955評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,195評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,725評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,608評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,802評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,048評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,424評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,762評論 2 372

推薦閱讀更多精彩內(nèi)容

  • 1 Zookeeper概述# ZooKeeper是一個為分布式應(yīng)用所設(shè)計的分布的、開源的協(xié)調(diào)服務(wù),它主要是用來解決...
    七寸知架構(gòu)閱讀 7,367評論 0 101
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,781評論 18 139
  • 1.下載zookeeper并復制到linux中的適當目錄下https://zookeeper.apache.org...
    劉繼偉閱讀 221評論 0 0
  • ZooKeeper介紹 Zookeeper 分布式服務(wù)框架是 Apache Hadoop 的一個子項目,它主要是用...
    Coselding閱讀 11,427評論 1 37
  • .gitignore文件記錄讓git忽略的文件類型或文件路徑github.com/github/gitignore...
    金琥閱讀 148評論 0 1