在集群安裝初期由於未規範集群主機的主機名,這樣會帶來集群管理的不便,現需要將CDH/CDP集群的主機名統一規範化,在修改主機名的過程中需要注意什麼?本篇文章主要介紹如何修改Kerberos環境下的CDP集群的HOSTNAME,在修改CDH集群的主機名採用相同的方法。修改集群所有主機的hostname的步驟如下:
內容概述
環境說明及停止集群服務
修改集群HOSTNAME、KDC及集群服務配置
功能驗證
測試環境
CM為7.4.4版本,Cloudera Runtime版本為7.1.7版本
採用root用戶操作
操作系統Redhat7.6
前置條件
集群已啟用Kerberos
元數據庫和KDC服務器都在該節點上
如果有使用kudu,則需要提前備份Kudu的數據(這裡沒有提供對應操作)
測試環境為單節點集群,所有的角色和服務都部署在該節點上。
集群原始HOSTNAME說明
IP地址
HOSTNMAE
節點說明
10.0.0.100
cdp.cloudera.aliyun
CM、NN、MySQL、KDC,DN
該節點的HOSTNAME由cdp.cloudera.aliyun修改為cdp1.cloudera.com
修改後的目標環境的IP和HOSTNAME如下
IP地址
HOSTNMAE
節點說明
10.0.0.100
cdp1.cloudera.com
CM、NN、MySQL、KDC,DN
停止CDP服務
在CM主頁→集群名右側的三豎點→stop,停止CDP集群的服務,如果有多個集群,按照相同的方法停止所有集群的服務。
停止成功
停止Cloudera Management Service服務
在CM主頁→Cloudera Management Service右側的三豎點→stop,停止CMS的服務
CDP和CMS的所有服務都停止完畢後,如下圖所示:
停止Cloudera Manager Server服務
登錄CM服務所在節點執行如下命令停止服務
7180端口無法訪問則表示停止成功
停止集群所有節點的cloudera-scm-agent服務
可以使用批量腳本執行命令來停止所有節點的cloudera-scm-agent服務,本測試中集群為單節點集群,因此直接執行命令即可
修改主機的HOSTNAME
執行如下命令修改集群的HOSTNAME
注意:按照需求將集群所有節點的HOSTNAME修改為指定的名稱
修改/etc/hosts文件
修改一台主機的/etc/hosts文件,將集群的所有節點的hosts信息都配置到該節點上。如果是通過DNS管理的hostname,則需要調整DNS的配置,而不需要配置/etc/hosts文件。
Hosts文件同步到所有節點
對於正常的集群,需要將修改後的hosts文件同步至集群所有節點的/etc目錄下
這裡的測試集群為單節點集群,不涉及到文件同步的問題。
檢查所有節點的HOSTNAME是否配置正確
使用DNS配置hostname也需要進行該檢查。
修改krb5文件
修改了KDC服務所在服務器的HOSTNAME,需要將相應的客戶端配置修改/etc/krb5.conf文件,內容如下:
將/etc/krb5.conf文件同步至集群所有節點
重啟Kerberos的服務
測試Kerberos服務是否正常
修改Cloudera Manager Server服務的數據庫配置
修改CM Server的元數據庫信息的配置文件/etc/cloudera-scm-server/db.properties
將com.cloudera.cmf.db.host地址修改為新的HOSTNAME。這裡配置的是localhost,因此不需要調整。在大家的環境中,該值基本上不會是localhost。
修改cloudera-scm-agent服務的配置
CM Agent的配置文件是/etc/cloudera-scm-agent/config.ini,需要將所有節點的該配置文件進行調整。
注意:需要修改集群所有節點上的配置。我這台機器因為做成鏡像的原因,server_host設置為localhost,大家的集群該屬性都是需要修改的。
啟動cloudera-scm-server服務
啟動集群所有節點的cloudera-scm-agent服務
修改集群服務配置登錄Cloudera Manager管理界面
修改集群所有服務的數據庫配置信息
CM主頁→配置→數據庫配置
將所有服務的數據庫HOSTNAME更改為修改後的HOSTNAME
搜索host,然後將所有修改的host都進行調整,然後保存修改。
保存配置。
修改CM中Kerberos配置信息
CM主頁→管理→設置
進入集群設置界面,類別中選擇Kerberos,然後搜索host,將所有涉及修改的host都進行調整
將KDC和KADMIN指向的主機host更改為最新的HOSTNAME,並保存配置。
重新生成集群所有服務的Kerberos信息
CM主頁→Hosts→進入主機列表界面
全選主機,然後執行重新生成Keytab
點擊確認,生成所有的Keytab。生成成功後顯示如下:
進入管理→安全→Kerberos憑據界面查看集群所有服務的prinicipal賬號信息
在過濾器中進行過濾,過濾條件為新的主機名,查看Principal是否正確
注意:重新生成Keytab時需要確保所有服務都是停止狀態,這裡舊的prinicipal信息也存在,但不影響集群服務使用,如果你有強迫症就是不想看到這些,可以在KDC數據庫中將cm庫下的CREDENTIALS表數據刪除,然後再重新生成。
啟動Cloudera Management Service服務
在CM頁面先啟動CMS服務。
CMS服務啟動成功
進入Konx服務,修改Knox的匹配白名單
進入Hue,修改代理主機
進入Kudu服務
查看Kudu的Master和tserver的日誌和數據目錄的配置
進入到操作系統,清空對應的master和tserver的日誌和數據目錄
完成以上配置後,部署客戶端配置
點擊「部署客戶端配置」
啟動CDP集群
集群啟動成功
集群各個服務狀態正常
主機名檢查
集群的所有節點的HOSTNAME已修改為最新
運行檢查所有主機進行主機健康檢查
MR任務驗證
向集群提交一個MapReduce作業測試集群功能是否正常
作業運行成功
Spark任務驗證
向集群提交一個Spark作業驗證集群是否正常
作業運行成功
Hive驗證Beeline測試
Beeline連接
執行beeline查詢
Hue測試
Zeppelin測試
Impala測試Impala-shell測試
Hue測試
通過Knox自動跳轉其他組件
通過Knox跳轉到其他應用的頁面
修改CDP集群的HOSTNAME,需要注意修改CM節點的HOSTNAME需要將集群所有AGENT節點執行CM的HOSTNAME配置信息更新。
MYSQL服務所在節點的HOSTNAME修改,則需要更新集群所有用到MYSQL服務的配置信息。
修改了Kerberos服務器的HOSTNAME,需要更新krb5.conf配置並同步到集群的所有節點。
群集啟用了Kerberos,需要在Cloudra Manager上為所有服務重新生成Keytab信息,重新生成keytab需要停止停止除cloudera-scm-server外的所有服務和組件。如果是使用CM管理的Kerberos,需要關注/etc/krb5.conf文件是否會被重置,建議取消使用CM管理Kerberos。
需要將客戶端重新進行部署。
如果集群中有Kudu,需要先進行Kudu的數據遷移,否則會導致Kudu的數據丟失。
如果是使用DNS來管理主機名和IP地址,則也修改在DNS那邊進行調整,否則可能會導致Hive的Metastore找到原來的主機名,從而導致服務不可用。
主機名修改完成後,需要進行各種驗證來保證正常運行。