第五章 ZooKeeper安裝配置與應(yīng)用_第1頁(yè)
第五章 ZooKeeper安裝配置與應(yīng)用_第2頁(yè)
第五章 ZooKeeper安裝配置與應(yīng)用_第3頁(yè)
第五章 ZooKeeper安裝配置與應(yīng)用_第4頁(yè)
第五章 ZooKeeper安裝配置與應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ZooKeeper的分布式搭建部署管理主講:李強(qiáng)任務(wù)描述本任務(wù)將實(shí)現(xiàn)安裝ZooKeeper、修改ZooKeeper分布式集群的配置選項(xiàng),并管理ZooKeeper分布式集群的啟動(dòng)和關(guān)閉等以及其他相關(guān)配置內(nèi)容。任務(wù)分析ZooKeeper分布式集群安裝部署指的是ZooKeeper分布式模式安裝。ZooKeeper集群搭建通常是由2n+1臺(tái)服務(wù)器組成,這是為了保證Leader選舉(基于Paxos算法的實(shí)現(xiàn))能夠通過(guò)半數(shù)以上臺(tái)服務(wù)器選舉支持,因此,ZooKeeper集群的數(shù)量一般為奇數(shù)臺(tái),本手冊(cè)采用3個(gè)節(jié)點(diǎn)集群模式。由于ZooKeeper集群運(yùn)行需要Java環(huán)境支持,所以要提前安裝JDK(對(duì)于JDK的下載安裝請(qǐng)參見(jiàn)本手冊(cè)項(xiàng)目1)。5.1.1master節(jié)點(diǎn)安裝ZooKeeper組件1.解壓安裝文件本手冊(cè)所使用的版本是ZooKeeper3.6.3,可以從官網(wǎng)下載。下載好的安裝包都需上傳到指定目錄下,本手冊(cè)指定為/root/目錄,使用ls/root/命令可以查看上傳的安裝包(具體上傳方式請(qǐng)參考項(xiàng)目1),如圖5-1所示。使用tar命令解壓zookeeper到/usr/local/src文件夾,并切換到安裝目錄下查看,可以使用ls查看解壓后的效果,如代碼5-1所示,效果如圖5-2所示。代碼5-1解壓安裝包圖5-2查看解壓好的安裝包圖5-1查看安裝包tar-zxvf/root/apache-zookeeper-3.6.3-bin.tar.gz-C/usr/local/src/cd/usr/local/src/ls2.修改文件夾名稱由于解壓后的文件夾名稱帶有比較復(fù)雜的版本號(hào),為了簡(jiǎn)化后續(xù)配置,此處修改文件夾名稱。使用mv命令將解壓的apache-zookeeper-3.6.3-bin目錄重命名為zookeeper,如代碼5-2所示,效果如圖5-3所示:代碼5-2重命名文件夾圖5-3重命名文件夾cd/usr/local/src/mvapache-zookeeper-3.6.3-binzookeeper3.修改環(huán)境變量文件為了可以在任何目錄下直接執(zhí)行ZooKeeper的相關(guān)命令,可以在環(huán)境變量文件中添加ZooKeeper的環(huán)境變量。前面項(xiàng)目已經(jīng)說(shuō)明過(guò),本手冊(cè)在/root/.bash_profile文件操作,修改環(huán)境變量文件如代碼5-3所示。代碼5-3編輯環(huán)境配置文件表5-1環(huán)境變量文件的添加內(nèi)容vi/root/.bash_profile將如表5-1所示的配置信息添加到/root/.bash_profile文件的末尾,保存退出。#setzookeeperenvironmentexportZOOKEEPER_HOME=/usr/local/src/zookeeperexportPATH=$PATH:$ZOOKEEPER_HOME/bin4.生效環(huán)境變量文件為了刷新環(huán)境變量文件的配置,需要在master節(jié)點(diǎn)執(zhí)行下面的命令使得節(jié)點(diǎn)的環(huán)境變量文件生效,如代碼5-4所示。代碼5-4生效環(huán)境配置文件source/root/.bash_profile5.1.2master節(jié)點(diǎn)配置ZooKeeper1.創(chuàng)建數(shù)據(jù)文件夾由于在后面的配置文件中需要配置服務(wù)運(yùn)行的數(shù)據(jù)和日志存放路徑,使用如代碼5-5所示的命令創(chuàng)建數(shù)據(jù)文件和日志文件的目錄,并查看文件屬性,運(yùn)行結(jié)果如圖5-4所示。。代碼5-5創(chuàng)建文件夾文件圖5-4查看創(chuàng)建好的文件夾mkdir/usr/local/src/zookeeper/datamkdir/usr/local/src/zookeeper/logscd/usr/local/src/zookeeperll2.寫入節(jié)點(diǎn)編號(hào)每一個(gè)ZooKeeper分布式集群都是由多臺(tái)服務(wù)器節(jié)點(diǎn)組成,這些節(jié)點(diǎn)通過(guò)復(fù)制保證各個(gè)服務(wù)器節(jié)點(diǎn)之間的數(shù)據(jù)一致。每個(gè)服務(wù)器節(jié)點(diǎn)需要配置一個(gè)唯一的編號(hào),在本任務(wù)中,3個(gè)節(jié)點(diǎn)的編號(hào)分為為1,2,3,這里首先通過(guò)echo命令設(shè)置master節(jié)點(diǎn)編號(hào)為1,設(shè)置后使用cat命令查詢確認(rèn),如代碼5-6所示,運(yùn)行結(jié)果如圖5-5所示。代碼5-6寫入節(jié)點(diǎn)編號(hào)并查看圖5-5寫入節(jié)點(diǎn)編號(hào)并查看echo1>/usr/local/src/zookeeper/data/myidcat/usr/local/src/zookeeper/data/myid3.修改配置文件zoo.cfg使用vizoo.cfg命令對(duì)該文件內(nèi)容進(jìn)行修改,修改的內(nèi)容如表5-2所示。將修改的內(nèi)容保存退出。表5-2配置文件的添加內(nèi)容dataDir=/usr/local/src/zookeeper/data#修改原值server.1=master:2888:3888#新增server.2=slave1:2888:3888#新增server.3=slave2:2888:3888#新增3.修改配置文件zoo.cfgZooKeeper分布式集群的其他配置信息在安裝目錄下的conf/zoo.cfg中,在配置文件夾中有一個(gè)模板文件zoo_sample.cfg,首先需要將該文件復(fù)制為zoo.cfg,如代碼5-7所示,運(yùn)行結(jié)果如圖

5-6所示。代碼5-7復(fù)制配置文件圖5-5寫入節(jié)點(diǎn)編號(hào)并查看cd/usr/local/src/zookeeper/conflscpzoo_sample.cfgzoo.cfgls5.1.3Slave節(jié)點(diǎn)安裝與配置ZooKeeper組件1.同步文件到Slave節(jié)點(diǎn)ZooKeeper分布式集群需要在所有節(jié)點(diǎn)上配置,將配置好的zookeeper文件夾和環(huán)境變量文件發(fā)送到slave1和slave2節(jié)點(diǎn),如代碼5-8所示。代碼5-8同步配置Slave節(jié)點(diǎn)scp-r/usr/local/src/zookeeper/slave1:/usr/local/src/scp-r/usr/local/src/zookeeper/slave2:/usr/local/src/scp/root/.bash_profileslave1:/root/scp/root/.bash_profileslave2:/root/2.生效環(huán)境變量文件為了刷新環(huán)境變量文件的配置,需要在slave1和slave2節(jié)點(diǎn)節(jié)點(diǎn)分別執(zhí)行下面的命令使得兩個(gè)節(jié)點(diǎn)的環(huán)境變量文件生效,如代碼5-9所示。代碼5-9生效環(huán)境配置文件source/root/.bash_profile3.修改從節(jié)點(diǎn)的編號(hào)分發(fā)到Slave節(jié)點(diǎn)的myid文件內(nèi)容編號(hào)為1,需要修改slave1節(jié)點(diǎn)的myid編號(hào)為2,如代碼5-10所示,運(yùn)行結(jié)果如圖5-7所示。代碼5-10修改slave1的編號(hào)并查看echo2>/usr/local/src/zookeeper/data/myidcat/usr/local/src/zookeeper/data/myid圖5-7修改slave1的編號(hào)并查看3.修改從節(jié)點(diǎn)的編號(hào)分發(fā)到Slave節(jié)點(diǎn)的myid文件內(nèi)容編號(hào)為1,需要修改slave2節(jié)點(diǎn)的myid編號(hào)為3,如代碼5-11所示,運(yùn)行結(jié)果如圖5-8代碼5-11修改slave2的編號(hào)并查看echo3>/usr/local/src/zookeeper/data/myidcat/usr/local/src/zookeeper/data/myid圖5-8修改slave2的編號(hào)并查看5.1.4管理ZooKeeper服務(wù)1.啟動(dòng)ZooKeeper服務(wù)截止目前ZooKeeper集群安裝配置完成操作,現(xiàn)在可以啟動(dòng)ZooKeeper服務(wù)。啟動(dòng)ZooKeeper服務(wù)需要在所有節(jié)點(diǎn)上分別啟動(dòng),一般建議接連啟動(dòng)所有的節(jié)點(diǎn)。啟動(dòng)ZooKeeper命令,如代碼5-12所示。代碼5-12啟動(dòng)ZooKeeperzkServer.shstart圖5-9查看進(jìn)程啟動(dòng)后可以通過(guò)jps查看Java進(jìn)程,如圖5-9所示,發(fā)現(xiàn)進(jìn)程列表中多了QuorumPeerMain進(jìn)程,這是ZooKeeper集群的啟動(dòng)類。啟動(dòng)成功后,可以在所有節(jié)點(diǎn)上查詢節(jié)點(diǎn)的角色,每一次啟動(dòng)后每個(gè)節(jié)點(diǎn)的角色不盡相同,只要確保在集群中有一個(gè)正常的Leader角色就行。代碼5-13查看ZooKeeper服務(wù)狀態(tài)zkServer.shstatus1.啟動(dòng)ZooKeeper服務(wù)master節(jié)點(diǎn)的角色如圖5-10所示。slave1節(jié)點(diǎn)的角色如圖5-11所示。slave2節(jié)點(diǎn)的角色如圖5-12所示。由圖5-10、圖5-11、圖5-12,可以看到三個(gè)節(jié)點(diǎn)的狀態(tài)分別為Follower、Leader、Follower。三個(gè)節(jié)點(diǎn)中包括一個(gè)Leader和兩個(gè)Follower,Leader是根據(jù)ZooKeeper內(nèi)部算法進(jìn)行選舉,每個(gè)節(jié)點(diǎn)的具體狀態(tài)不固定。圖5-10查看master的ZooKeeper狀態(tài)圖5-11查看slave1的ZooKeeper狀態(tài)圖5-12查看slave2的ZooKeeper狀態(tài)2.關(guān)閉ZooKeeper服務(wù)如果想關(guān)閉ZooKeeper服務(wù)也需要在所有節(jié)點(diǎn)上分別關(guān)閉,如代碼5-14所示。代碼5-14關(guān)閉ZooKeeperzkServer.shstop謝謝服務(wù)器上下線動(dòng)態(tài)監(jiān)控主講:李強(qiáng)任務(wù)描述本小節(jié)將介紹一個(gè)簡(jiǎn)單的ZooKeeper的案例應(yīng)用。一般大數(shù)據(jù)場(chǎng)景都是分布式系統(tǒng),因此節(jié)點(diǎn)有多個(gè)??紤]到ZooKeeper作為分布式的協(xié)調(diào)框架可用作監(jiān)控系統(tǒng),監(jiān)控多個(gè)節(jié)點(diǎn)的狀態(tài),因此,這里將使用ZooKeeper模擬監(jiān)控服務(wù)器上下線動(dòng)態(tài)情況。任務(wù)分析通過(guò)IDEA配置好連接ZooKeeper集群的開(kāi)發(fā)環(huán)境后,創(chuàng)建一個(gè)類Server,在此類中連接ZooKeeper集群,創(chuàng)建一個(gè)父節(jié)點(diǎn)“./Server”,并設(shè)置可變參數(shù)動(dòng)態(tài)創(chuàng)建臨時(shí)子節(jié)點(diǎn),可通過(guò)IDEA提供的參數(shù)設(shè)置進(jìn)行子節(jié)點(diǎn)的添加;創(chuàng)建一個(gè)類Client,由于監(jiān)控父節(jié)點(diǎn)“./Server”的子節(jié)點(diǎn)的上下線動(dòng)態(tài)。5.2.1創(chuàng)建IDEA工程并連接ZooKeeper創(chuàng)建IDEA工程并連接ZooKeeper參考項(xiàng)目3,在IDEA中新建一個(gè)Maven工程,并命名為ZooKeeperPro,創(chuàng)建完畢后,只需要在pom.xml文件中添加ZooKeeper依賴,如表5-3所示,添加完成后需加載依賴。表5-3添加依賴<dependencies><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.6.3</version></dependency></dependencies>5.2.2任務(wù)實(shí)現(xiàn)任務(wù)實(shí)現(xiàn)在IDEA工程/src/main/java目錄下創(chuàng)建一個(gè)package名為OnlineMonitoring,首先創(chuàng)建一個(gè)類Server,該類用于連接ZooKeeper集群,創(chuàng)建一個(gè)“/Server”父節(jié)點(diǎn),并設(shè)置可變參數(shù)為動(dòng)態(tài)創(chuàng)建臨時(shí)子節(jié)點(diǎn),如代碼5-15所示。代碼5-15Server類代碼publicclassServerimplementsWatcher{publicstaticvoidmain(String[]args)throwsIOException,KeeperException,InterruptedException{ZooKeeperzooKeeper=newZooKeeper("slave1:2181,slave2:2181,slave3:2181",5000,newServer());//創(chuàng)建持久化服務(wù)節(jié)點(diǎn)ServerStatexists=zooKeeper.exists("/Server",false);if(exists==null){zooKeeper.create("/Server","Hello".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);}......省略任務(wù)實(shí)現(xiàn)接著再創(chuàng)建一個(gè)類Client作為客戶端,該類主要獲取子節(jié)點(diǎn)信息,并設(shè)置程序不關(guān)閉,即可動(dòng)態(tài)監(jiān)控子節(jié)點(diǎn)變化情況,如代碼5-16所示。代碼5-16Client類代碼publicclassClientimplementsWatcher{publicstaticZooKeeperzooKeeper;publicstaticvoidmain(String[]args)throwsIOException,InterruptedException{zooKeeper=newZo

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論