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

2022-03-29 19:52:49 浏览数 (2)

文档编写目的

在集群安装初期由于未规范集群主机的主机名,这样会带来集群管理的不便,现需要将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的数据(这里没有提供对应操作)

环境说明

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

集群原始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服务所在节点执行如下命令停止服务

代码语言:javascript复制
systemctl stop cloudera-scm-server

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

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

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

代码语言:javascript复制
systemctl stop cloudera-scm-agent

修改集群主机的HOSTNAME

修改主机的HOSTNAME

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

代码语言:javascript复制
hostnamectl set-hostname cdp1.cloudera.com
hostname

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

修改/etc/hosts文件

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

代码语言:javascript复制
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

Hosts文件同步到所有节点

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

代码语言:javascript复制
for i in {100..100}; do scp /etc/hosts 10.0.0.$i:/etc/hosts ; done

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

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

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

代码语言:javascript复制
for i in {100..100}; do ssh 10.0.0.$i 'hostname' ; done

修改krb5.conf配置文件

修改krb5文件

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

代码语言:javascript复制
[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

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

代码语言:javascript复制
for i in {100..100}; do scp /etc/krb5.conf 10.0.0.$i:/etc/krb5.conf ; done

重启Kerberos的服务

代码语言:javascript复制
systemctl restart krb5kdc
systemctl restart kadmin
systemctl status krb5kdc
systemctl status kadmin

测试Kerberos服务是否正常

代码语言:javascript复制
[root@cdp ~]# kinit etl_user
Password for etl_user@CLOUDERA.COM:
[root@cdp ~]# klist

修改CM服务配置并启动

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

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

代码语言:javascript复制
vim /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,需要将所有节点的该配置文件进行调整。

代码语言:javascript复制
vim /etc/cloudera-scm-agent/config.ini

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

启动cloudera-scm-server服务

代码语言:javascript复制
systemctl start cloudera-scm-server
netstat -apn |grep 7180

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

代码语言:javascript复制
for i in {100..100}; do ssh 10.0.0.$i 'systemctl start cloudera-scm-agent' ; done

修改集群服务配置

登录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作业测试集群功能是否正常

代码语言:javascript复制
[[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

作业运行成功

Spark任务验证

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

代码语言:javascript复制
[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

作业运行成功

Hive验证

Beeline测试

Beeline连接

代码语言:javascript复制
klist
beeline

执行beeline查询

代码语言:javascript复制
select count(*) from worldwidebank.ww_customers;

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找到原来的主机名,从而导致服务不可用。
  • 主机名修改完成后,需要进行各种验证来保证正常运行。

0 人点赞