Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

安裝環(huán)境:

創(chuàng)新互聯(lián)建站是一家專(zhuān)業(yè)提供樂(lè)都企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為樂(lè)都眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

CentOS 7   內(nèi)存1GB

JDK版本:1.8.0_112

為JDK配置如下環(huán)境變量:

編輯/etc/profile.d/jdk.sh

#!/bin/bash

JAVA_HOME=/usr/local/jdk1.8.0_112
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

之后運(yùn)行下面的命令:

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

注意:在生產(chǎn)環(huán)境中為了避免內(nèi)存頻繁的換進(jìn)換出,建議將JAVA堆大小設(shè)置的更大一點(diǎn),這取決于你的物理內(nèi)存大小。

關(guān)于集群可用:如果能忍受N臺(tái)ZK宕機(jī),那么你的集群就需要有2N+1臺(tái)ZK服務(wù)器。3臺(tái)組成的集群則允許1臺(tái)失敗,5臺(tái)組成的集群則允許2臺(tái)失敗。集群中ZK數(shù)量要保持奇數(shù),當(dāng)然偶數(shù)也可以,只是3臺(tái)組成的ZK和4臺(tái)組成的允許失敗的臺(tái)數(shù)是一樣的。


單機(jī)安裝

下載穩(wěn)定版zookeeper,我這里使用的是3.4.11,我把它解壓在了/usr/local下面,其實(shí)任何路徑都可以

配置ZK的環(huán)境變量,編輯/etc/profile.d/zk.sh文件

#!/bin/bash

ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.11
export PATH=$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf:$PATH

執(zhí)行下面的命令

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

準(zhǔn)備配置文件

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

在程序目錄中的conf目錄中創(chuàng)建zoo.cfg配置文件,zoo_sample.cfg是模板文件,直接復(fù)制一下修改名稱(chēng),然后再修改里面的內(nèi)容。

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

這個(gè)配置文件可以設(shè)置很多參數(shù),默認(rèn)只有最基本的。其他參數(shù)后面再說(shuō)

參數(shù)說(shuō)明
tickTime基本事件單元,單位毫秒。用來(lái)設(shè)置心跳,最小的session過(guò)期時(shí)間為tickTime的兩倍,ZK中的其他時(shí)間都是以這個(gè)為倍數(shù)的。
dataDir

存儲(chǔ)內(nèi)存中數(shù)據(jù)庫(kù)快照的位置,默認(rèn)是/tmp/zookeeper,這個(gè)只是例子,我們修改為ZK家目錄下的data,這個(gè)data其實(shí)也沒(méi)有,我們需要手動(dòng)建立??煺瘴募⒉皇菍?shí)時(shí)的,運(yùn)行一段時(shí)間才會(huì)有。

dataLogDir

日志路徑,也就是事務(wù)日志。我們知道對(duì)ZK的讀和寫(xiě)都是在內(nèi)存中完成,所以速度非??欤侨绻V筞K再啟動(dòng)數(shù)據(jù)還是需要保證的,所以就會(huì)有這樣一個(gè)路徑用來(lái)保存事務(wù)日志,當(dāng)ZK再次啟動(dòng)時(shí)加載到內(nèi)存重演過(guò)程來(lái)恢復(fù)數(shù)據(jù)。這個(gè)目錄會(huì)有一個(gè)叫做version-2的目錄,這個(gè)目錄確定了當(dāng)前事務(wù)日志的版本號(hào),當(dāng)下次某個(gè)版本的ZK對(duì)其進(jìn)行修改時(shí),版本號(hào)發(fā)生變化。日志文件大小為64M,如果數(shù)據(jù)比較多就會(huì)有多個(gè)這樣大小的文件。

建議將事物日志保存到單獨(dú)的磁盤(pán)而且是高速磁盤(pán)。因?yàn)闉榱艘恢滦?,ZK對(duì)于客戶(hù)端的寫(xiě)入請(qǐng)求在返回之前就要把本次操作寫(xiě)入到事物日志中。logDir

logDirzookeeper服務(wù)的日志路徑
clientPort
監(jiān)聽(tīng)客戶(hù)端連接的端口

修改一下zkEnv.sh腳本,zk啟動(dòng)后會(huì)有一個(gè)zookeeper.out文件,這個(gè)文件隨著時(shí)間會(huì)越來(lái)越大,默認(rèn)會(huì)在執(zhí)行zkServer.sh的位置生成,所以我們要修改為指定路徑。

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

配置好上面的設(shè)置就可以啟動(dòng)了。

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

測(cè)試連接

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行nc是網(wǎng)絡(luò)命令,全稱(chēng)是netcat,其實(shí)使用telnet也一樣

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

ZK客戶(hù)端

zkCli.sh -server IP:PORT

也可以不輸入IP和端口,默認(rèn)就會(huì)連接127.0.0.1:2181

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

查看事務(wù)日志:

java -classpath /usr/local/zookeeper-3.4.11/zookeeper-3.4.11.jar:../../lib/slf4j-api-1.6.1.jar org.apache.zookeeper.server.LogFormatter log.1

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行


集群安裝

集群配置和單機(jī)安裝一樣,只是配置文件內(nèi)容會(huì)多一部分內(nèi)容,內(nèi)容如下:

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

"server.id=host:port:port" 表示不同ZK服務(wù)器的配置。id表示不同服務(wù)器,在服務(wù)器配置文件的dataDir所設(shè)置的目錄里需要手動(dòng)創(chuàng)建一個(gè)叫做myid的文件,這個(gè)文件只有一行內(nèi)容,標(biāo)識(shí)自己的身份也就是自己的ID值,該值范圍可以是1-255之間。 

echo 1 > /usr/local/zookeeper3.4.11/data/myid

host:主機(jī)名

第一個(gè)port:集群中從服務(wù)器(follower)連接到主服務(wù)器(leader)的端口,也就是作為leader時(shí)使用的,其他從服務(wù)器都連接到主服務(wù)器的這個(gè)端口

第二個(gè)port:進(jìn)行l(wèi)eader選舉時(shí)使用的端口

集群?jiǎn)?dòng)和單機(jī)啟動(dòng)一樣,使用同樣的命令,需要注意的是集群不可用那么你將無(wú)法連接到ZK服務(wù)器,也就是說(shuō)3臺(tái)你只啟動(dòng)1臺(tái)是無(wú)法Telnet到ZK的,至少你要啟動(dòng)2臺(tái)才行。

zkServer.sh start
# 啟動(dòng)集群有可能需要運(yùn)行下面命令清理防火墻規(guī)則,有可能某種安全機(jī)制影響集群?jiǎn)?dòng),主要是選舉過(guò)程
iptables -F

集群?jiǎn)?dòng)日志說(shuō)明

Srv01的日志

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

如果對(duì)端沒(méi)有準(zhǔn)備好它會(huì)一直反復(fù)這樣的提示

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

Srv02的日志

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

Srv03的日志

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

服務(wù)器狀態(tài)

狀態(tài)說(shuō)明
LOOKING尋找Leader,當(dāng)服務(wù)器出現(xiàn)這個(gè)狀態(tài)時(shí),它會(huì)認(rèn)為當(dāng)前集群沒(méi)有Leader,因此需要進(jìn)入選舉
FOLLOWING跟隨者狀態(tài),表示當(dāng)前是Follower角色
LEADING領(lǐng)導(dǎo)者狀態(tài),表示當(dāng)前為L(zhǎng)eader角色
OBSERVING
觀察者狀態(tài),表示當(dāng)前服務(wù)器是Observer角色

如下為選舉信息,其中 (my state) 為當(dāng)前服務(wù)器的狀態(tài),最后一次表示它的最終狀態(tài),通過(guò)看這個(gè)前后變化可以知道該服務(wù)器在狀態(tài)變化。

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行


配置Zookeeper

基本配置:運(yùn)行ZK最少需要配置的內(nèi)容
clientPort監(jiān)聽(tīng)客戶(hù)端連接的端口
dataDir數(shù)據(jù)庫(kù)快照存儲(chǔ)位置
tickTime客戶(hù)單到服務(wù)器之間的心跳頻率,也叫做基本時(shí)間單元,單位毫秒,客戶(hù)端連接ZK之后彼此要發(fā)送心跳信息,這個(gè)發(fā)送頻率就是這個(gè)時(shí)間。配置中所有用到時(shí)間地方都會(huì)以這個(gè)為基礎(chǔ),也就是它的倍數(shù),或者可以理解為能夠容忍多少個(gè)心跳時(shí)間。

高級(jí)配置
dataLogDir事務(wù)日志保存路徑,生產(chǎn)環(huán)境中建議把日志路徑和快照路徑分別保存在獨(dú)立磁盤(pán)上,避免出現(xiàn)磁盤(pán)IO繁忙從而導(dǎo)致性能下降,必要時(shí)也可以關(guān)閉日志功能
maxClientCnxns限制連接到ZK上的客戶(hù)端數(shù)量,并且限制并發(fā)連接數(shù)量,它通過(guò)IP來(lái)區(qū)分不同客戶(hù)端。值為0表示不做任何限制。注意這里的限制是針對(duì)單臺(tái)客戶(hù)端到服務(wù)器的,并不是控制所有客戶(hù)端連接的。默認(rèn)60.
minSessionTimeout最小會(huì)話(huà)超時(shí)時(shí)間,默認(rèn)為tickTime的2倍。不建議把這個(gè)值設(shè)置的比tickTime小。客戶(hù)端連接到ZK時(shí)如果在這個(gè)最小時(shí)間內(nèi)沒(méi)有和ZK聯(lián)系則標(biāo)記為超時(shí),也就是說(shuō)會(huì)斷開(kāi)。
maxSessionTimeout最大會(huì)話(huà)超時(shí)時(shí)間,默認(rèn)為20倍的最小會(huì)話(huà)超時(shí)時(shí)間。不建議把這個(gè)值設(shè)置的比tickTime小??蛻?hù)端連接到ZK時(shí)如果在這個(gè)最大時(shí)間內(nèi)沒(méi)有和ZK聯(lián)系則標(biāo)記為超時(shí)。所以上面的參數(shù)和這個(gè)參數(shù)組成了一個(gè)時(shí)間范圍,也就是客戶(hù)端連接ZK時(shí)如果在這個(gè)時(shí)間范圍內(nèi)沒(méi)有成功連接則會(huì)標(biāo)記為超時(shí)。如果客戶(hù)端設(shè)置的時(shí)間范圍不在這個(gè)服務(wù)器設(shè)置的范圍內(nèi),則會(huì)被強(qiáng)制應(yīng)用服務(wù)器設(shè)置的范圍。
autopurge.snapRetainCount
自動(dòng)清理日志,該參數(shù)設(shè)置保留多少個(gè)快照文件和對(duì)應(yīng)的事務(wù)日志文件,默認(rèn)為3,如果你設(shè)置的小于3則會(huì)被自動(dòng)的調(diào)整為3.
autopurge.purgeInterval
自動(dòng)清理日志,該參數(shù)設(shè)置自動(dòng)清理頻率,上面的參數(shù)配套使用??蛻?hù)端在和ZK服務(wù)器交互中服務(wù)器會(huì)產(chǎn)生很多日志,而且ZK會(huì)將內(nèi)存中的數(shù)據(jù)作為快照保存起來(lái),而且這些數(shù)據(jù)不會(huì)自動(dòng)刪除,那么磁盤(pán)空間就會(huì)被占用,可以設(shè)置這2個(gè)參數(shù)來(lái)自動(dòng)清理,不過(guò)如果ZK服務(wù)器比較繁忙而且趕上刪除日志任務(wù)就會(huì)影響性能,所以一般不設(shè)置這個(gè)自動(dòng)清理,而是在ZK訪問(wèn)量少的時(shí)候通過(guò)Linux的定時(shí)任務(wù)來(lái)處理。0表示不開(kāi)啟自動(dòng)清理功能。
globalOutstandingLimit
ZK的最大請(qǐng)求堆積數(shù),客戶(hù)端請(qǐng)求比較多,為了防止客戶(hù)端資源過(guò)度消耗,服務(wù)器必須限制同時(shí)處理的請(qǐng)求數(shù)量。
preAllocSize
用于配置ZK事務(wù)日志預(yù)先分配的空間,默認(rèn)是64M
snapCount
用于配置相鄰兩次快照之間的事物日志次數(shù),默認(rèn)是10萬(wàn)。也就是10萬(wàn)條事務(wù)之后做一次快照同時(shí)結(jié)轉(zhuǎn)事務(wù)日志。
clientPortAddres
這個(gè)參數(shù)針對(duì)多網(wǎng)卡的ZK服務(wù)器,允許為每個(gè)IP地址指定不同的監(jiān)聽(tīng)端口。
fsync.warningthresholdms
用于設(shè)置ZK服務(wù)器事物日志同步操作時(shí)消耗時(shí)間的報(bào)警閾值,如果實(shí)際消耗時(shí)長(zhǎng)超過(guò)這個(gè)時(shí)間日志就會(huì)記錄。
electionAlg用于配置Leader選舉算法,目前只有一種選舉算法,所以不用配置。
cnxTimeout用于Leader選舉時(shí)各個(gè)服務(wù)器之間進(jìn)行的TCP連接創(chuàng)建超時(shí)時(shí)間,默認(rèn)為5.
forceSync這個(gè)參數(shù)用于配置ZK服務(wù)器是否在事物提交時(shí)是否強(qiáng)制寫(xiě)入磁盤(pán)(LINUX的延遲寫(xiě)入),默認(rèn)是YES。
jute.maxbuffer
用于配置單個(gè)數(shù)據(jù)節(jié)點(diǎn)上最大數(shù)量,默認(rèn)是1MB。通常不需要改動(dòng)該參數(shù),但是因?yàn)閆ookeeper不適合存放太多數(shù)據(jù)所以有時(shí)候需要把值改小。
skipACL
是否跳過(guò)ACL檢查,默認(rèn)是no,也就是會(huì)對(duì)所有客戶(hù)端連接進(jìn)行acl檢查。

集群配置
initLimit表示允許從服務(wù)器(相對(duì)于leader來(lái)說(shuō)的客戶(hù)端)連接到leader并完成數(shù)據(jù)同步的時(shí)間,它是以tickTime的倍數(shù)來(lái)表示的,也就是從服務(wù)器與主服務(wù)器完成初始化連接和數(shù)據(jù)同步是能夠容忍多少個(gè)心跳時(shí)間,如果超過(guò)這個(gè)時(shí)間不能完成初始化連接的建立則表示連接失敗。默認(rèn)是10.如果你的數(shù)據(jù)量過(guò)大而且從服務(wù)器數(shù)量也多那么這個(gè)值可以設(shè)置大一點(diǎn)。
syncLimit表示主服務(wù)器(leader)和從服務(wù)器(follower)之間發(fā)送心跳請(qǐng)求和應(yīng)答的頻率,如果在這個(gè)時(shí)間內(nèi)從服務(wù)器不能與主服務(wù)器通信,則表示該從服務(wù)器失敗。默認(rèn)為5.如果集群環(huán)境網(wǎng)絡(luò)不佳可以調(diào)整大一點(diǎn)。
LeaderServes
用于配置Leader服務(wù)器是否接受客戶(hù)端的連接,是否允許Leader向客戶(hù)端直接提供服務(wù),默認(rèn)是可以的。
server.x=
用于配置集群服務(wù)器列表

Zookeeper服務(wù)狀態(tài)和配置等查詢(xún)命令

命令說(shuō)明
conf顯示當(dāng)前加載的配置文件信息
cons列出當(dāng)前連接到服務(wù)器的客戶(hù)端會(huì)話(huà)信息,包括接收和發(fā)送的包數(shù)量、會(huì)話(huà)ID等
dump列出集群中所有會(huì)話(huà)信息,以及未經(jīng)處理的會(huì)話(huà)和每個(gè)會(huì)話(huà)創(chuàng)建臨時(shí)節(jié)點(diǎn)
envi
列出當(dāng)前環(huán)境信息,比如使用的JAVA版本、OS信息、主機(jī)名等
reqs
列出未經(jīng)處理的請(qǐng)求
ruok
測(cè)試服務(wù)器是否正常,正常則放回“imok”,不正常則什么也不現(xiàn)實(shí)
stat
顯示和性能以及客戶(hù)端列表,包括Zookeeper版本、運(yùn)行模式、最新ZXID,連接數(shù),節(jié)點(diǎn)數(shù)量
srvr和stat命令一樣,只是不會(huì)列出客戶(hù)端連接信息,而是僅列出服務(wù)器信息
mntr用于輸出比stat更加詳細(xì)的服務(wù)器統(tǒng)計(jì)信息,請(qǐng)求延遲、內(nèi)存數(shù)據(jù)庫(kù)大小、集群同步狀態(tài)等。
wchs
列出服務(wù)器watch的詳細(xì)信息
wchc
通過(guò)session列出服務(wù)器的watch的詳細(xì)信息,它的輸出是一個(gè)與watch相關(guān)的會(huì)話(huà)列表
wchp
通過(guò)路徑列出服務(wù)器watch的詳細(xì)信息,它的輸出是一個(gè)與session相關(guān)的路徑

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

Zookeeper詳解(二):Zookeeper安裝和運(yùn)行

本文標(biāo)題:Zookeeper詳解(二):Zookeeper安裝和運(yùn)行
本文地址:http://bm7419.com/article42/iipphc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、靜態(tài)網(wǎng)站、品牌網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站、電子商務(wù)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)