安裝環(huán)境:
專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)凌云免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎ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)行下面的命令:
注意:在生產(chǎn)環(huán)境中為了避免內(nèi)存頻繁的換進(jìn)換出,建議將JAVA堆大小設(shè)置的更大一點(diǎn),這取決于你的物理內(nèi)存大小。
關(guān)于集群可用:如果能忍受N臺ZK宕機(jī),那么你的集群就需要有2N+1臺ZK服務(wù)器。3臺組成的集群則允許1臺失敗,5臺組成的集群則允許2臺失敗。集群中ZK數(shù)量要保持奇數(shù),當(dāng)然偶數(shù)也可以,只是3臺組成的ZK和4臺組成的允許失敗的臺數(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í)行下面的命令
準(zhǔn)備配置文件
在程序目錄中的conf目錄中創(chuàng)建zoo.cfg配置文件,zoo_sample.cfg是模板文件,直接復(fù)制一下修改名稱,然后再修改里面的內(nèi)容。
這個配置文件可以設(shè)置很多參數(shù),默認(rèn)只有最基本的。其他參數(shù)后面再說
參數(shù) | 說明 |
tickTime | 基本事件單元,單位毫秒。用來設(shè)置心跳,最小的session過期時間為tickTime的兩倍,ZK中的其他時間都是以這個為倍數(shù)的。 |
dataDir | 存儲內(nèi)存中數(shù)據(jù)庫快照的位置,默認(rèn)是/tmp/zookeeper,這個只是例子,我們修改為ZK家目錄下的data,這個data其實(shí)也沒有,我們需要手動建立??煺瘴募⒉皇菍?shí)時的,運(yùn)行一段時間才會有。 |
dataLogDir | 日志路徑,也就是事務(wù)日志。我們知道對ZK的讀和寫都是在內(nèi)存中完成,所以速度非??欤侨绻V筞K再啟動數(shù)據(jù)還是需要保證的,所以就會有這樣一個路徑用來保存事務(wù)日志,當(dāng)ZK再次啟動時加載到內(nèi)存重演過程來恢復(fù)數(shù)據(jù)。這個目錄會有一個叫做version-2的目錄,這個目錄確定了當(dāng)前事務(wù)日志的版本號,當(dāng)下次某個版本的ZK對其進(jìn)行修改時,版本號發(fā)生變化。日志文件大小為64M,如果數(shù)據(jù)比較多就會有多個這樣大小的文件。 建議將事物日志保存到單獨(dú)的磁盤而且是高速磁盤。因?yàn)闉榱艘恢滦?,ZK對于客戶端的寫入請求在返回之前就要把本次操作寫入到事物日志中。logDir |
logDir | zookeeper服務(wù)的日志路徑 |
clientPort | 監(jiān)聽客戶端連接的端口 |
修改一下zkEnv.sh腳本,zk啟動后會有一個zookeeper.out文件,這個文件隨著時間會越來越大,默認(rèn)會在執(zhí)行zkServer.sh的位置生成,所以我們要修改為指定路徑。
配置好上面的設(shè)置就可以啟動了。
測試連接
nc是網(wǎng)絡(luò)命令,全稱是netcat,其實(shí)使用telnet也一樣
ZK客戶端
zkCli.sh -server IP:PORT也可以不輸入IP和端口,默認(rèn)就會連接127.0.0.1:2181
查看事務(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集群安裝
集群配置和單機(jī)安裝一樣,只是配置文件內(nèi)容會多一部分內(nèi)容,內(nèi)容如下:
"server.id=host:port:port" 表示不同ZK服務(wù)器的配置。id表示不同服務(wù)器,在服務(wù)器配置文件的dataDir所設(shè)置的目錄里需要手動創(chuàng)建一個叫做myid的文件,這個文件只有一行內(nèi)容,標(biāo)識自己的身份也就是自己的ID值,該值范圍可以是1-255之間。
echo 1 > /usr/local/zookeeper3.4.11/data/myidhost:主機(jī)名
第一個port:集群中從服務(wù)器(follower)連接到主服務(wù)器(leader)的端口,也就是作為leader時使用的,其他從服務(wù)器都連接到主服務(wù)器的這個端口
第二個port:進(jìn)行l(wèi)eader選舉時使用的端口
集群啟動和單機(jī)啟動一樣,使用同樣的命令,需要注意的是集群不可用那么你將無法連接到ZK服務(wù)器,也就是說3臺你只啟動1臺是無法Telnet到ZK的,至少你要啟動2臺才行。
zkServer.sh start # 啟動集群有可能需要運(yùn)行下面命令清理防火墻規(guī)則,有可能某種安全機(jī)制影響集群啟動,主要是選舉過程 iptables -F集群啟動日志說明
Srv01的日志
如果對端沒有準(zhǔn)備好它會一直反復(fù)這樣的提示
Srv02的日志
Srv03的日志
服務(wù)器狀態(tài)
狀態(tài) | 說明 |
LOOKING | 尋找Leader,當(dāng)服務(wù)器出現(xiàn)這個狀態(tài)時,它會認(rèn)為當(dāng)前集群沒有Leader,因此需要進(jìn)入選舉 |
FOLLOWING | 跟隨者狀態(tài),表示當(dāng)前是Follower角色 |
LEADING | 領(lǐng)導(dǎo)者狀態(tài),表示當(dāng)前為Leader角色 |
OBSERVING | 觀察者狀態(tài),表示當(dāng)前服務(wù)器是Observer角色 |
如下為選舉信息,其中 (my state) 為當(dāng)前服務(wù)器的狀態(tài),最后一次表示它的最終狀態(tài),通過看這個前后變化可以知道該服務(wù)器在狀態(tài)變化。
配置Zookeeper
基本配置:運(yùn)行ZK最少需要配置的內(nèi)容 | |
clientPort | 監(jiān)聽客戶端連接的端口 |
dataDir | 數(shù)據(jù)庫快照存儲位置 |
tickTime | 客戶單到服務(wù)器之間的心跳頻率,也叫做基本時間單元,單位毫秒,客戶端連接ZK之后彼此要發(fā)送心跳信息,這個發(fā)送頻率就是這個時間。配置中所有用到時間地方都會以這個為基礎(chǔ),也就是它的倍數(shù),或者可以理解為能夠容忍多少個心跳時間。 |
高級配置 | |
dataLogDir | 事務(wù)日志保存路徑,生產(chǎn)環(huán)境中建議把日志路徑和快照路徑分別保存在獨(dú)立磁盤上,避免出現(xiàn)磁盤IO繁忙從而導(dǎo)致性能下降,必要時也可以關(guān)閉日志功能 |
maxClientCnxns | 限制連接到ZK上的客戶端數(shù)量,并且限制并發(fā)連接數(shù)量,它通過IP來區(qū)分不同客戶端。值為0表示不做任何限制。注意這里的限制是針對單臺客戶端到服務(wù)器的,并不是控制所有客戶端連接的。默認(rèn)60. |
minSessionTimeout | 最小會話超時時間,默認(rèn)為tickTime的2倍。不建議把這個值設(shè)置的比tickTime小??蛻舳诉B接到ZK時如果在這個最小時間內(nèi)沒有和ZK聯(lián)系則標(biāo)記為超時,也就是說會斷開。 |
maxSessionTimeout | 大會話超時時間,默認(rèn)為20倍的最小會話超時時間。不建議把這個值設(shè)置的比tickTime小??蛻舳诉B接到ZK時如果在這個大時間內(nèi)沒有和ZK聯(lián)系則標(biāo)記為超時。所以上面的參數(shù)和這個參數(shù)組成了一個時間范圍,也就是客戶端連接ZK時如果在這個時間范圍內(nèi)沒有成功連接則會標(biāo)記為超時。如果客戶端設(shè)置的時間范圍不在這個服務(wù)器設(shè)置的范圍內(nèi),則會被強(qiáng)制應(yīng)用服務(wù)器設(shè)置的范圍。 |
autopurge.snapRetainCount | 自動清理日志,該參數(shù)設(shè)置保留多少個快照文件和對應(yīng)的事務(wù)日志文件,默認(rèn)為3,如果你設(shè)置的小于3則會被自動的調(diào)整為3. |
autopurge.purgeInterval | 自動清理日志,該參數(shù)設(shè)置自動清理頻率,上面的參數(shù)配套使用??蛻舳嗽诤蚙K服務(wù)器交互中服務(wù)器會產(chǎn)生很多日志,而且ZK會將內(nèi)存中的數(shù)據(jù)作為快照保存起來,而且這些數(shù)據(jù)不會自動刪除,那么磁盤空間就會被占用,可以設(shè)置這2個參數(shù)來自動清理,不過如果ZK服務(wù)器比較繁忙而且趕上刪除日志任務(wù)就會影響性能,所以一般不設(shè)置這個自動清理,而是在ZK訪問量少的時候通過Linux的定時任務(wù)來處理。0表示不開啟自動清理功能。 |
globalOutstandingLimit | ZK的大請求堆積數(shù),客戶端請求比較多,為了防止客戶端資源過度消耗,服務(wù)器必須限制同時處理的請求數(shù)量。 |
preAllocSize | 用于配置ZK事務(wù)日志預(yù)先分配的空間,默認(rèn)是64M |
snapCount | 用于配置相鄰兩次快照之間的事物日志次數(shù),默認(rèn)是10萬。也就是10萬條事務(wù)之后做一次快照同時結(jié)轉(zhuǎn)事務(wù)日志。 |
clientPortAddres | 這個參數(shù)針對多網(wǎng)卡的ZK服務(wù)器,允許為每個IP地址指定不同的監(jiān)聽端口。 |
fsync.warningthresholdms | 用于設(shè)置ZK服務(wù)器事物日志同步操作時消耗時間的報警閾值,如果實(shí)際消耗時長超過這個時間日志就會記錄。 |
electionAlg | 用于配置Leader選舉算法,目前只有一種選舉算法,所以不用配置。 |
cnxTimeout | 用于Leader選舉時各個服務(wù)器之間進(jìn)行的TCP連接創(chuàng)建超時時間,默認(rèn)為5. |
forceSync | 這個參數(shù)用于配置ZK服務(wù)器是否在事物提交時是否強(qiáng)制寫入磁盤(LINUX的延遲寫入),默認(rèn)是YES。 |
jute.maxbuffer | 用于配置單個數(shù)據(jù)節(jié)點(diǎn)上大數(shù)量,默認(rèn)是1MB。通常不需要改動該參數(shù),但是因?yàn)閆ookeeper不適合存放太多數(shù)據(jù)所以有時候需要把值改小。 |
skipACL | 是否跳過ACL檢查,默認(rèn)是no,也就是會對所有客戶端連接進(jìn)行acl檢查。 |
集群配置 | |
initLimit | 表示允許從服務(wù)器(相對于leader來說的客戶端)連接到leader并完成數(shù)據(jù)同步的時間,它是以tickTime的倍數(shù)來表示的,也就是從服務(wù)器與主服務(wù)器完成初始化連接和數(shù)據(jù)同步是能夠容忍多少個心跳時間,如果超過這個時間不能完成初始化連接的建立則表示連接失敗。默認(rèn)是10.如果你的數(shù)據(jù)量過大而且從服務(wù)器數(shù)量也多那么這個值可以設(shè)置大一點(diǎn)。 |
syncLimit | 表示主服務(wù)器(leader)和從服務(wù)器(follower)之間發(fā)送心跳請求和應(yīng)答的頻率,如果在這個時間內(nèi)從服務(wù)器不能與主服務(wù)器通信,則表示該從服務(wù)器失敗。默認(rèn)為5.如果集群環(huán)境網(wǎng)絡(luò)不佳可以調(diào)整大一點(diǎn)。 |
LeaderServes | 用于配置Leader服務(wù)器是否接受客戶端的連接,是否允許Leader向客戶端直接提供服務(wù),默認(rèn)是可以的。 |
server.x= | 用于配置集群服務(wù)器列表 |
Zookeeper服務(wù)狀態(tài)和配置等查詢命令
命令 | 說明 |
conf | 顯示當(dāng)前加載的配置文件信息 |
cons | 列出當(dāng)前連接到服務(wù)器的客戶端會話信息,包括接收和發(fā)送的包數(shù)量、會話ID等 |
dump | 列出集群中所有會話信息,以及未經(jīng)處理的會話和每個會話創(chuàng)建臨時節(jié)點(diǎn) |
envi | 列出當(dāng)前環(huán)境信息,比如使用的JAVA版本、OS信息、主機(jī)名等 |
reqs | 列出未經(jīng)處理的請求 |
ruok | 測試服務(wù)器是否正常,正常則放回“imok”,不正常則什么也不現(xiàn)實(shí) |
stat | 顯示和性能以及客戶端列表,包括Zookeeper版本、運(yùn)行模式、最新ZXID,連接數(shù),節(jié)點(diǎn)數(shù)量 |
srvr | 和stat命令一樣,只是不會列出客戶端連接信息,而是僅列出服務(wù)器信息 |
mntr | 用于輸出比stat更加詳細(xì)的服務(wù)器統(tǒng)計(jì)信息,請求延遲、內(nèi)存數(shù)據(jù)庫大小、集群同步狀態(tài)等。 |
wchs | 列出服務(wù)器watch的詳細(xì)信息 |
wchc | 通過session列出服務(wù)器的watch的詳細(xì)信息,它的輸出是一個與watch相關(guān)的會話列表 |
wchp | 通過路徑列出服務(wù)器watch的詳細(xì)信息,它的輸出是一個與session相關(guān)的路徑 |
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站題目:Zookeeper詳解(二):Zookeeper安裝和運(yùn)行-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://jinyejixie.com/article26/dipscg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、微信公眾號、搜索引擎優(yōu)化、建站公司、網(wǎng)站排名、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容