《ZooKeeper故障節點替換過程詳解》要點:
本文介紹了ZooKeeper故障節點替換過程詳解,希望對您有用。如果有疑問,可以聯系我們。
作者介紹
康壯,大連樓蘭科技股份數據庫運維組負責人,主要負責集團內部MySQL、MongoDB、Redis數據庫運維管理工作.曾在第三方數據庫運維公司任職技術部經理,負責政府行業的Oracle數據庫運維工作,具有Oracle OCP、OCM、MySQL OCP等相關認證、對數據庫架構設計、故障處理、優化有深入的理解.
我的生產環境ZooKeeper 版本3.4.6,5個節點組成的ZooKeeper集群.ZooKeeper集群為一套8個節點的Hadoop集群和HBase 集群提供高可用保障.
因為某些特殊原因,需要替換掉myid為5(IP:10.10.10.30)的ZooKeeper節點,故障節點IP:10.10.10.30替換為10.10.10.37.10.10.10.37節點是現有環境的namenode節點,Hadoop用戶、相關目錄,授權、hosts文件已經滿足ZooKeeper的部署要求.
在ZooKeeper的設計中,集群中的任何一個節點的zoo.cfg文件內容是一樣的,因此最好使用SVN把這個文件管理起來,保證每個機器都能使用一份相同的配置.
在配置文件中(zoo.cfg),可以按照這樣的格式,每行寫一個機器配置:server.id=host:port:port. 關于這個id,我們稱之為Server ID,標識host機器在集群中的機器序號,在每個ZK機器上,我們需要在數據目錄(數據目錄就是dataDir參數指定的那個目錄)下創建一個myid文件,myid中就是這個Server ID數字.
ZooKeeper有這樣一個特性:集群中只要有過半的機器是正常工作的,那么整個集群對外就是可用的.ZooKeeper 節點數一般為奇數個,比如我的環境部署了5個節點的ZooKeeper服務,如果有兩個節點的ZooKeeper異常是不會影響ZooKeeper集群對外提供服務的.
1、配置參數如下(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、關閉10.10.10.37主機
3、備份原有zoo.cfg文件,cp zoo.cfg zoo.cfg0420
4、本案例在現有10.10.10.37節點部署myid為5的ZooKeeper服務,從其它可用節點scp 軟件包到10.10.10.37節點,修改配置文件主機IP,使用新主機的IP替換掉原有主機的IP
5、使用新的zoo.cfg文件,替換掉其他4個節點的zoo.cfg文件,使用scp遠程傳輸直接覆蓋
6、10.10.10.37節點創建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節點比較簡單,當初部署集群的時候怎么部署的,現在就重新部署一個節點就可以,注意修改zoo.cfg配置文件.其它依賴于ZooKeeper集群的相關服務比如Hadoop、HBase、Hive、flume等都需要修改配置文件,小技巧,記住修改的是xxx-site.xml文件關鍵字是site.xml文件.
接下來需要重啟服務,啟動順序為ZooKeeper—>Hadoop—>HBase,關閉順序為HBase—>Hadoop—>ZooKeepe.
具體命令如下:
1、重啟zookeepe命令:./zkServer.sh restart
2、關閉HBase集群命令:./stop-HBase.sh
3、關閉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、通過命令驗證配置是否同步
可以看到所有相關系統的配置都已經同步到了新增的ZooKeeper-server中.
7、使用網頁方式驗證Hadoop集群和HBase狀態,不同環境端口可能不一樣
10.10.10.37:8088
10.10.10.37:50070
1、直接啟動新節點ZooKeeper報錯信息
在部署好的ZooKeeper服務器直接啟動會報上面的錯誤,更換了IP的主機無法直接加入ZooKeeper集群,需要先重啟原有4臺ZooKeeper集群才可以.
文章來自微信公眾號:DBAplus社群
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4086.html