如何在Kerberos環境下修改啓用HA的CDH集羣HOSTNAME

溫馨提示:如果使用電腦查看圖片不清晰,可以使用手機打開文章單擊文中的圖片放大查看高清原圖。

Fayson的github: https://github.com/fayson/cdhproject

提示:代碼塊部分可以左右滑動查看噢

1

文檔編寫目的

Fayson在前面的文章《如何修改Kerberos的CDH集羣的HOSTNAME》介紹了修改集羣的HOSTNAME,在文章中並未提到集羣啓用HA的情況,本篇文章Fayson主要介紹在Kerberos環境下啓用HA的CDH集羣修改HOSTNAME。

  • 內容概述

1.環境說明及停止集羣服務

2.修改集羣HOSTNAME及集羣服務配置

3.功能驗證

  • 測試環境

1.CM和CDH版本爲5.15.0

  • 前置條件

1.集羣已啓用Kerberos

2.集羣已啓用HA

2

環境說明及配置備份

1.本次只修改集羣的HOSTNAME不做角色遷移,集羣角色劃分如下圖所示:

集羣原始HOSTNAME

IP地址

HOSTNMAE

節點說明

172.27.xx.xx

cdh01.fayson.com

NN、RM、JN、Oozie

172.27.xx.xx

cdh02.fayson.com

NN、RM、JN、Oozie、DataNode

172.27.xx.xx

cdh03.fayson.com

DataNode

172.27.xx.xx

cdh04.fayson.com

DataNode

需要修改爲HOSTNAME列表

IP地址

HOSTNMAE

節點說明

172.27.xx.xx

cdh1.fayson.com

NN、RM、JN、Oozie

172.27.xx.xx

cdh2.fayson.com

NN、RM、JN、Oozie、DataNode

172.27.xx.xx

cdh3.fayson.com

DataNode

172.27.xx.xx

cdh4.fayson.com

DataNode

2.通過CM的API接口備份Cloudera Manager的配置

可以通過在瀏覽器輸入CM配置訪問地址,將內容備份或者在終端使用curl將數據抓取保存至文件。

終端執如下命令保存

[root@cdh04 ~]# curl -u admin:admin http://cdh01.fayson.com:7180/api/v19/cm/deployment > cme-cm-export.json

3

停止集羣所有服務

1.通過CM停止所有CDH服務

停止成功

2.停止Cloudera Management Service服務

3.執行命令刪除CDH集羣中所有的kerberos證書

刪除成功

4.登錄CM服務所在節點執行如下命令,停止Cloudera Manager Server服務

[root@cdh01 ~]# systemctl stop cloudera-scm-server
[root@cdh01 ~]# systemctl status cloudera-scm-server

命令行驗證7180端口是否還存在

5.停止集羣所有節點的cloudera-scm-agent服務

[root@cdh01 shell]# sh ssh_do_all.sh node.list "systemctl stop cloudera-scm-agent"

6.爲了確保修改失敗後能夠回滾,這裏建議將MySQL或PostgreSQL進行備份

4

修改集羣HOSTNAME

1.執行如下命令修改集羣的HOSTNAME,以cdh01.fayson.com爲例

[root@cdh01 shell]# hostnamectl set-hostname cdh1.fayson.com
[root@cdh01 shell]# hostname

注意:按照需求將集羣所有節點的HOSTNAME修改爲指定的名稱

2.修改/etc/hosts文件

3.將修改後的hosts文件同步至集羣所有節點的/etc目錄下

[root@cdh1 ~]# cd /data/disk1/shell/
[root@cdh1 shell]# sh bk_cp.sh ip.list /etc/hosts /etc/

4.檢查所有節點的HOSTNAME是否配置正確

5

修改krb5.conf配置文件

這裏Fayson使用的是Active Directory提供的Kerberos服務,沒有修改該服務的hostname,如果你的KDC服務是修改了HOSTNAME則需要根據如下步驟進行修改:

1.修改了KDC服務所在服務器的HOSTNAME,需要將相應的客戶端配置修改, /etc/krb5.conf文件,內容如下:

[root@cdh01 ~]# vim /etc/krb5.conf
…
[realms]
 FAYSON.COM = {
  kdc = cdh1.fayson.com
  admin_server = cdh1.fayson.com
 }

[domain_realm]
 .fayson.com = FAYSON.COM
 fayson.com = FAYSON.COM

2.重啓kdc和kadmin服務

[root@cdh1 krb5kdc]# systemctl restart kadmin
[root@cdh1 krb5kdc]# systemctl restart krb5kdc

3.將/etc/krb5.conf文件同步至集羣所有節點

[root@cdh01 shell]# sh bk_cp.sh node.list /etc/krb5.conf /etc/

測試Kerberos服務是否正常

6

修改CM服務配置並啓動

1.修改Cloudera Manager Server服務的數據庫配置

2.修改CDH集羣所有節點cloudera-scm-agent服務的配置

注意:需要修改集羣所有節點上的配置。

3.啓動cloudera-scm-server服務

[root@cdh1 ~]# systemctl start cloudera-scm-server
[root@cdh1 ~]# netstat -apn |grep 7180

4.啓動集羣所有節點的cloudera-scm-agent服務

[root@cdh1 ~]# cd /data/disk1/shell/
[root@cdh1 shell]# sh ssh_do_all.sh node.list "systemctl start cloudera-scm-agent"

7

修改集羣服務配置

1.登錄Cloudera Manager管理界面

2.修改集羣所有服務的數據庫配置信息

將所有服務的數據庫HOSTNAME更改爲修改後的HOSTNAME

3.修改CM中Kerberos配置信息,Fayson使用的AD提供的Kerberos認證(根據需要進行修改)

將KDC和KADMIN指向的主機host更改爲最新的HOSTNAME,並保存配置。

4.進入主機列表界面,重新生成集羣所有服務的Kerberos信息

執行重新生成Keytab

生成成功

進入“管理”->“安全”界面查看集羣所有服務的prinicipal賬號信息

注意:重新生成Keytab時需要確保所有服務都是停止狀態,這裏舊的prinicipal信息也存在,但不影響集羣服務使用,如果覺得不順眼可以在數據庫中將cm庫下的CREDENTIALS表數據刪除,然後再重新生成。

5.啓動Cloudera Management Service服務

啓動成功

6.啓動Zookeeper服務,由於集羣啓用了HA所以這裏要先啓動ZK服務

7.進入HDFS的實例列表,點擊任意Failover Controller服務進入“進程頁面”,找到FC服務中加載的core-site.xml文件

在core-site.xml文件中找到” ha.zookeeper.auth”屬性的值

8.登錄任意ZK服務所在節點,執行zookeeper-client訪問ZK服務,在命令行執行如下命令

[zk: localhost:2181(CONNECTED) 2] addauth digest hdfs-fcs:QROKivFr9tYPAXuAbob8uXgYh5i8LZ
[zk: localhost:2181(CONNECTED) 3] ls /hadoop-ha
[nameservice1]
[zk: localhost:2181(CONNECTED) 4] rmr /hadoop-ha/nameservice1

9.執行上述操作後,進入HDFS服務的實例列表界面,選擇任意FC服務進入

點擊“初始化自動故障轉移Znode”

10.進入Hive服務,修改Hive元數據庫配置

11.進入Sentry服務,修改Sentry元數據庫配置

12.修改Oozie數據庫地址

13.完成以上配置後,部署客戶端配置

點擊“部署客戶端配置”

14.啓動CDH集羣

集羣啓動成功

集羣各個服務狀態正常

8

功能驗證

1.集羣的HOSTNAME已修改爲最新

2.向集羣提交一個MapReduce作業測試功能是否正常

[root@cdh1 ~]# kinit usera
Password for [email protected]: 
[root@cdh1 ~]# hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5

作業運行成功

9

總結

1.涉及到CM節點則需要將集羣所有節點的/etc/cloudera-scm-agent/config.ini配置文件中的server_host配置修改爲最新CM節點的HOSTNAME。

2.涉及到數據節點的HOSTNAME則需要修改CM服務和CDH中所有使用數據庫服務的配置(如:Oozie、Sentry、Hive、CMS等)。

3.涉及到修改KDC服務器的HOSTNAME則需要修改/etc/krb.conf配置,並且需要將該配置文件更新到集羣所有節點。

4.修改了集羣節點的HOSTNAME,需要更新集羣所有節點的/etc/hosts文件。

5.在集羣啓用HA後,修改了NameNode節點的HOSTNAME需要做一些額外的處理,先將ZK服務上/hadoop-ha/nameservice1的Znode刪除,在HDFS的FC服務界面執行初始化。

提示:代碼塊部分可以左右滑動查看噢

爲天地立心,爲生民立命,爲往聖繼絕學,爲萬世開太平。 溫馨提示:如果使用電腦查看圖片不清晰,可以使用手機打開文章單擊文中的圖片放大查看高清原圖。

推薦關注Hadoop實操,第一時間,分享更多Hadoop乾貨,歡迎轉發和分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章