如何修改启用Kerberos的CDP集群的主机名

文档编写目的

在集群安装初期由于未规范集群主机的主机名,这样会带来集群管理的不便,现需要将CDH/CDP集群的主机名统一规范化,在修改主机名的过程中需要注意什么?本篇文章主要介绍如何修改Kerberos环境下的CDP集群的HOSTNAME,在修改CDH集群的主机名采用相同的方法。修改集群所有主机的hostname的步骤如下:

内容概述

  1. 环境说明及停止集群服务
  2. 修改集群HOSTNAME、KDC及集群服务配置
  3. 功能验证

测试环境

  1. CM为7.4.4版本,Cloudera Runtime版本为7.1.7版本
  2. 采用root用户操作
  3. 操作系统Redhat7.6

前置条件

  1. 集群已启用Kerberos
  2. 元数据库和KDC服务器都在该节点上
  3. 如果有使用kudu,则需要提前备份Kudu的数据(这里没有提供对应操作)

环境说明

测试环境为单节点集群,所有的角色和服务都部署在该节点上。

picture.image

picture.image

集群原始HOSTNAME说明

IP地址HOSTNMAE节点说明
10.0.0.100cdp.cloudera.aliyunCM、NN、MySQL、KDC,DN

该节点的HOSTNAME由cdp.cloudera.aliyun修改为cdp1.cloudera.com

修改后的目标环境的IP和HOSTNAME如下

IP地址HOSTNMAE节点说明
10.0.0.100cdp1.cloudera.comCM、NN、MySQL、KDC,DN

停止集群所有服务

停止CDP服务

在CM主页→集群名右侧的三竖点→stop,停止CDP集群的服务,如果有多个集群, 按照相同的方法停止所有集群的服务。

picture.image

停止成功

picture.image

停止Cloudera Management Service服务

在CM主页→Cloudera Management Service右侧的三竖点→stop,停止CMS的服务

picture.image

picture.image

CDP和CMS的所有服务都停止完毕后,如下图所示:

picture.image

停止Cloudera Manager Server服务

登录CM服务所在节点执行如下命令停止服务


        
            

          systemctl stop cloudera-scm-server
        
      

picture.image

7180端口无法访问则表示停止成功

picture.image

停止集群所有节点的cloudera-scm-agent服务

可以使用批量脚本执行命令来停止所有节点的cloudera-scm-agent服务,本测试中集群为单节点集群,因此直接执行命令即可


        
            

          systemctl stop cloudera-scm-agent
        
      

picture.image

修改集群主机的HOSTNAME

修改主机的HOSTNAME

执行如下命令修改集群的HOSTNAME


          
hostnamectl set-hostname cdp1.cloudera.com
          
hostname
      

picture.image

注意:按照需求将集群所有节点的HOSTNAME修改为指定的名称

修改/etc/hosts文件

修改一台主机的/etc/hosts文件,将集群的所有节点的hosts信息都配置到该节点上。如果是通过DNS管理的hostname,则需要调整DNS的配置,而不需要配置/etc/hosts文件。


          
vim /etc/hosts
          
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
          
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
          
10.0.0.100      cdp1.cloudera.com    cdp1.cloudera.com
      

picture.image

Hosts文件同步到所有节点

对于正常的集群,需要将修改后的hosts文件同步至集群所有节点的/etc目录下


        
            

          for i in {100..100}; do scp /etc/hosts 10.0.0.$i:/etc/hosts ; done
        
      

这里的测试集群为单节点集群,不涉及到文件同步的问题。

picture.image

检查所有节点的HOSTNAME是否配置正确

使用DNS配置hostname也需要进行该检查。


        
            

          for i in {100..100}; do ssh 10.0.0.$i 'hostname' ; done
        
      

picture.image

修改krb5.conf配置文件

修改krb5文件

修改了KDC服务所在服务器的HOSTNAME,需要将相应的客户端配置修改/etc/krb5.conf文件,内容如下:


          
[root@cdh01 ~]# vim /etc/krb5.conf
          
[libdefaults]
          
default_realm = CLOUDERA.COM
          
dns_lookup_kdc = false
          
dns_lookup_realm = false
          
ticket_lifetime = 86400
          
renew_lifetime = 604800
          
forwardable = true
          
default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 arcfour-hmac-md5
          
default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 arcfour-hmac-md5
          
permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 arcfour-hmac-md5
          
udp_preference_limit = 1
          
kdc_timeout = 3000
          
[realms]
          
CLOUDERA.COM = {
          
kdc = cdp1.cloudera.com
          
admin_server = cdp1.cloudera.com
          
}
          
[domain_realm]
          
.cdp1.cloudera.com = CLOUDERA.COM
          
cdp1.cloudera.com = CLOUDERA.COM
      

picture.image

将/etc/krb5.conf文件同步至集群所有节点


        
            

          for i in {100..100}; do scp /etc/krb5.conf 10.0.0.$i:/etc/krb5.conf ; done
        
      

picture.image

重启Kerberos的服务


          
systemctl restart krb5kdc
          
systemctl restart kadmin
          
systemctl status krb5kdc
          
systemctl status kadmin
      

picture.image

测试Kerberos服务是否正常


          
[root@cdp ~]# kinit etl_user
          
Password for etl_user@CLOUDERA.COM:
          
[root@cdp ~]# klist
      

picture.image

修改CM服务配置并启动

修改Cloudera Manager Server服务的 数据库 配置

修改CM Server的元数据库信息的配置文件/etc/cloudera-scm-server/db.properties


        
            

          vim /etc/cloudera-scm-server/db.properties
        
      

picture.image

将com.cloudera.cmf.db.host地址修改为新的HOSTNAME。这里配置的是localhost,因此不需要调整。在大家的环境中,该值基本上不会是localhost。

修改cloudera-scm-agent服务的配置

CM Agent的配置文件是/etc/cloudera-scm-agent/config.ini,需要将所有节点的该配置文件进行调整。


        
            

          vim /etc/cloudera-scm-agent/config.ini
        
      

picture.image

注意:需要修改集群所有节点上的配置。我这台机器因为做成镜像的原因,server_host设置为localhost,大家的集群该属性都是需要修改的。

启动cloudera-scm-server服务


          
systemctl start cloudera-scm-server
          
netstat -apn |grep 7180
      

picture.image

启动集群所有节点的cloudera-scm-agent服务


        
            

          for i in {100..100}; do ssh 10.0.0.$i 'systemctl start cloudera-scm-agent' ; done
        
      

picture.image

修改集群服务配置

登录Cloudera Manager管理界面

picture.image

修改集群所有服务的数据库配置信息

CM主页→配置→数据库配置

picture.image

将所有服务的数据库HOSTNAME更改为修改后的HOSTNAME

搜索host,然后将所有修改的host都进行调整,然后保存修改。

picture.image

保存配置。

修改CM中Kerberos配置信息

CM主页→管理→设置

picture.image

进入集群设置界面,类别中选择Kerberos,然后搜索host,将所有涉及修改的host都进行调整

picture.image

将KDC和KADMIN指向的主机host更改为最新的HOSTNAME,并保存配置。

重新生成集群所有服务的Kerberos信息

CM主页→Hosts→进入主机列表界面

picture.image

全选主机,然后执行重新生成Keytab

picture.image

picture.image

点击确认,生成所有的Keytab。生成成功后显示如下:

picture.image

进入管理→安全→Kerberos凭据界面查看集群所有服务的prinicipal账号信息

picture.image

在过滤器中进行过滤,过滤条件为新的主机名,查看Principal是否正确

picture.image

注意:重新生成Keytab时需要确保所有服务都是停止状态,这里旧的prinicipal信息也存在,但不影响集群服务使用,如果你有强迫症就是不想看到这些,可以在KDC数据库中将cm库下的CREDENTIALS表数据删除,然后再重新生成。

启动Cloudera Management Service服务

在CM页面先启动CMS服务。

picture.image

picture.image

CMS服务启动成功

picture.image

进入Konx服务,修改Knox的匹配白名单

picture.image

进入Hue,修改代理主机

picture.image

进入Kudu服务

查看Kudu的Master和tserver的日志和数据目录的配置

picture.image

进入到操作系统,清空对应的master和tserver的日志和数据目录

picture.image

完成以上配置后,部署客户端配置

picture.image

picture.image

点击“部署客户端配置”

picture.image

启动CDP集群

picture.image

集群启动成功

picture.image

集群各个服务状态正常

picture.image

功能验证

主机名检查

集群的所有节点的HOSTNAME已修改为最新

picture.image

运行检查所有主机进行主机健康检查

picture.image

picture.image

MR任务验证

向集群提交一个MapReduce作业测试集群功能是否正常


          
[[root@cdp1 zookeeper]#  kinit etl_user
          
Password for etl_user@CLOUDERA.COM:
          
[[root@cdp1 zookeeper]# hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 5 5
      

picture.image

picture.image

作业运行成功

picture.image

picture.image

picture.image

Spark任务验证

向集群提交一个Spark作业验证集群是否正常


          
[root@cdp1 ~]# klist
          
[root@cdp1 ~]# spark-submit --class org.apache.spark.examples.SparkPi  --master yarn-client --num-executors 4 --driver-memory 2g  --driver-cores 1 --executor-memory 2g --executor-cores 1  /opt/cloudera/parcels/CDH/lib/spark/examples/jars/spark-examples_2.11-2.4.7.7.1.7.0-551.jar 10
      

picture.image

picture.image

作业运行成功

picture.image

picture.image

picture.image

Hive验证

Beeline测试

Beeline连接


          
klist
          
beeline
      

picture.image

执行beeline查询


        
            

          select count(*) from worldwidebank.ww\_customers;
        
      

picture.image

picture.image

Hue测试

picture.image

picture.image

Zeppelin测试

picture.image

picture.image

Impala测试

Impala-shell测试

picture.image

Hue测试

picture.image

picture.image

通过Knox自动跳转其他组件

picture.image

通过Knox跳转到其他应用的页面

picture.image

picture.image

picture.image

picture.image

总结

  • 修改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找到原来的主机名,从而导致服务不可用。

  • 主机名修改完成后,需要进行各种验证来保证正常运行。

0
0
0
0
评论
未登录
暂无评论