0446-如何在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.xxcdh01.fayson.comNN、RM、JN、Oozie
172.27.xx.xxcdh02.fayson.comNN、RM、JN、Oozie、DataNode
172.27.xx.xxcdh03.fayson.comDataNode
172.27.xx.xxcdh04.fayson.comDataNode

需要修改为HOSTNAME列表

IP地址HOSTNMAE节点说明
172.27.xx.xxcdh1.fayson.comNN、RM、JN、Oozie
172.27.xx.xxcdh2.fayson.comNN、RM、JN、Oozie、DataNode
172.27.xx.xxcdh3.fayson.comDataNode
172.27.xx.xxcdh4.fayson.comDataNode

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 fayson@FAYSON.COM: 
[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干货,欢迎转发和分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值