《ZooKeeper故障節(jié)點(diǎn)替換過程詳解》要點(diǎn):
本文介紹了ZooKeeper故障節(jié)點(diǎn)替換過程詳解,希望對您有用。如果有疑問,可以聯(lián)系我們。
作者介紹
康壯,大連樓蘭科技股份數(shù)據(jù)庫運(yùn)維組負(fù)責(zé)人,主要負(fù)責(zé)集團(tuán)內(nèi)部MySQL、MongoDB、Redis數(shù)據(jù)庫運(yùn)維管理工作.曾在第三方數(shù)據(jù)庫運(yùn)維公司任職技術(shù)部經(jīng)理,負(fù)責(zé)政府行業(yè)的Oracle數(shù)據(jù)庫運(yùn)維工作,具有Oracle OCP、OCM、MySQL OCP等相關(guān)認(rèn)證、對數(shù)據(jù)庫架構(gòu)設(shè)計、故障處理、優(yōu)化有深入的理解.
我的生產(chǎn)環(huán)境ZooKeeper 版本3.4.6,5個節(jié)點(diǎn)組成的ZooKeeper集群.ZooKeeper集群為一套8個節(jié)點(diǎn)的Hadoop集群和HBase 集群提供高可用保障.
因為某些特殊原因,需要替換掉myid為5(IP:10.10.10.30)的ZooKeeper節(jié)點(diǎn),故障節(jié)點(diǎn)IP:10.10.10.30替換為10.10.10.37.10.10.10.37節(jié)點(diǎn)是現(xiàn)有環(huán)境的namenode節(jié)點(diǎn),Hadoop用戶、相關(guān)目錄,授權(quán)、hosts文件已經(jīng)滿足ZooKeeper的部署要求.
在ZooKeeper的設(shè)計中,集群中的任何一個節(jié)點(diǎn)的zoo.cfg文件內(nèi)容是一樣的,因此最好使用SVN把這個文件管理起來,保證每個機(jī)器都能使用一份相同的配置.
在配置文件中(zoo.cfg),可以按照這樣的格式,每行寫一個機(jī)器配置:server.id=host:port:port. 關(guān)于這個id,我們稱之為Server ID,標(biāo)識host機(jī)器在集群中的機(jī)器序號,在每個ZK機(jī)器上,我們需要在數(shù)據(jù)目錄(數(shù)據(jù)目錄就是dataDir參數(shù)指定的那個目錄)下創(chuàng)建一個myid文件,myid中就是這個Server ID數(shù)字.
ZooKeeper有這樣一個特性:集群中只要有過半的機(jī)器是正常工作的,那么整個集群對外就是可用的.ZooKeeper 節(jié)點(diǎn)數(shù)一般為奇數(shù)個,比如我的環(huán)境部署了5個節(jié)點(diǎn)的ZooKeeper服務(wù),如果有兩個節(jié)點(diǎn)的ZooKeeper異常是不會影響ZooKeeper集群對外提供服務(wù)的.
1、配置參數(shù)如下(zoo.cfg)
$ grep -v “^#” zoo.cfg |grep -v “^$”
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/ZooKeeper
clientPort=2181
server.1=10.10.10.33:2888:3888
server.2=10.10.10.34:2888:3888
server.3=10.10.10.35:2888:3888
server.4=10.10.10.36:2888:3888
server.5=10.10.10.37:2888:3888
2、關(guān)閉10.10.10.37主機(jī)
3、備份原有zoo.cfg文件,cp zoo.cfg zoo.cfg0420
4、本案例在現(xiàn)有10.10.10.37節(jié)點(diǎn)部署myid為5的ZooKeeper服務(wù),從其它可用節(jié)點(diǎn)scp 軟件包到10.10.10.37節(jié)點(diǎn),修改配置文件主機(jī)IP,使用新主機(jī)的IP替換掉原有主機(jī)的IP
5、使用新的zoo.cfg文件,替換掉其他4個節(jié)點(diǎn)的zoo.cfg文件,使用scp遠(yuǎn)程傳輸直接覆蓋
6、10.10.10.37節(jié)點(diǎn)創(chuàng)建myid 命令:echo “5” > /data/ZooKeeper/myid
1、修改hdfs-site.xml
$ grep -A 2 “ha.ZooKeeper.quorum” hdfs-site.xml
<name>ha.ZooKeeper.quorum</name>???????????? <value>host-10-10-10-49:2181,host-10-10-10-50:2181,host-10-10-10-36:2181,host-10-10-10-38:2181,host-10-10-10-30:2181</value>
</property>
$ vi hdfs-site.xml把host-10-10-10-30 替換為host-10-10-10-37
2、修改yarn-site.xml
$ grep -A 2 “yarn.resourcemanager.zk-address” yarn-site.xml
<name>yarn.resourcemanager.zk-address</name>??????????? <value>host-10-10-10-49:2181,host-10-10-10-50:2181,host-10-10-10-36:2181,host-10-10-10-38:2181,host-10-10-10-30:2181</value>
<description>For multiple zk services, separate them with comma</description>
$ vi yarn-site.xml把host-10-10-10-30 替換為host-10-10-10-37
$ grep -A 2 “HBase.ZooKeeper.quorum” HBase-site.xml
<name>HBase.ZooKeeper.quorum</name>???????????? <value>host-10-10-10-49,host-10-10-10-50,host-10-10-10-36,host-10-10-10-38,host-10-10-10-30</value>
</property>
$ vi HBase-site.xml? 把host-10-10-10-30 替換為host-10-10-10-37
部署ZooKeeper節(jié)點(diǎn)比較簡單,當(dāng)初部署集群的時候怎么部署的,現(xiàn)在就重新部署一個節(jié)點(diǎn)就可以,注意修改zoo.cfg配置文件.其它依賴于ZooKeeper集群的相關(guān)服務(wù)比如Hadoop、HBase、Hive、flume等都需要修改配置文件,小技巧,記住修改的是xxx-site.xml文件關(guān)鍵字是site.xml文件.
接下來需要重啟服務(wù),啟動順序為ZooKeeper—>Hadoop—>HBase,關(guān)閉順序為HBase—>Hadoop—>ZooKeepe.
具體命令如下:
1、重啟zookeepe命令:./zkServer.sh restart
2、關(guān)閉HBase集群命令:./stop-HBase.sh
3、關(guān)閉Hadoop集群命令:
./stop-yarn.sh && ./stop-dfs.sh
./yarn-daemon.sh stop resourcemanager
4、啟動Hadoop集群命令:
./start-yarn.sh && ./start-dfs.sh
./yarn-daemon.sh start resourcemanager
5、啟動HBase集群命令:./start-HBase.sh
6、通過命令驗證配置是否同步
可以看到所有相關(guān)系統(tǒng)的配置都已經(jīng)同步到了新增的ZooKeeper-server中.
7、使用網(wǎng)頁方式驗證Hadoop集群和HBase狀態(tài),不同環(huán)境端口可能不一樣
10.10.10.37:8088
10.10.10.37:50070
1、直接啟動新節(jié)點(diǎn)ZooKeeper報錯信息
在部署好的ZooKeeper服務(wù)器直接啟動會報上面的錯誤,更換了IP的主機(jī)無法直接加入ZooKeeper集群,需要先重啟原有4臺ZooKeeper集群才可以.
文章來自微信公眾號:DBAplus社群
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/4086.html