概述(感谢hidataplus的共享共建,才有今天的分享_)
本文会分两个分支。FreeIPA、MIT Kerberos
先讲MIT Kerberos吧,这会简单点。
再讲FreeIPA。
起稿完后,觉得拆成2章会更好点。所以: 12章MIT Kerberos HA ;13章FreeIPA HA。
本文目的:为HDP 3.3.2.0的推广,接个力 MIT Kerberos HA
目录调整如下。。。水平有限,大师级别,包涵包涵,欢迎指点不足。
接前文总规划HDP3.3.2.0-002实践试范,展开第十二章
十二、集成 MIT Kerberos HA(增到到8台)
是开始之前。我会把所有服务停止下,关机。并做个整体快照。[目的是路演完 mit kerberos。可以回到快照点路演 freeipa]
启动所有机器。ambari 是顺机启动的。
路演嘛。不会一上来就先搞个mit kerberos HA。
路演顺序:1 单个Kerberos;2 Ambari开启 kerberos ; 3 验证各组件及数据链路;4 扩展从机形成HA;5 Ambari设置kerberosHA。
12.1 单个MIT Kerberos [1.15.1] (环境准备)
新建vm 113
hostnamectl set-hostname kdc.tssj.com
vim /etc/hosts
192.168.1.113 kdc.tssj.com
12.1.1 安装Server
sudo yum install krb5-server krb5-libs krb5-workstation -y
12.1.2 配置(3处)
vim /etc/krb5.conf
dns_lookup_kdc = false
vim /var/kerberos/krb5kdc/kdc.conf
vim /var/kerberos/krb5kdc/kadm5.acl
12.1.3 初始化
kdb5_util create -s -r TSSJ.COM
Loading random data
Initializing database ‘/var/kerberos/krb5kdc/principal’ for realm ‘TSSJ.COM’,
master key name ‘K/M@TSSJ.COM’
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
Re-enter KDC database master key to verify:
ll /var/kerberos/krb5kdc/ --多了4个文件
12.1.4 启动
sudo systemctl start krb5kdc && sudo systemctl enable krb5kdc
sudo systemctl start kadmin && sudo systemctl enable kadmin
12.1.5 添加管理员admin/admin
kadmin.local -q "addprinc -pw 123456 admin/admin" #添加用户 123456
kadmin.local #本地登录查看
12.1.6 安装Client
sudo yum install krb5-libs krb5-workstation -y
12.1.7 同步配置文件到集群所有客户机
[root@kdc ~]# scp /etc/krb5.conf 192.168.1.120:/etc/
[root@kdc ~]# scp /etc/krb5.conf 192.168.1.121:/etc/
[root@kdc ~]# scp /etc/krb5.conf 192.168.1.122:/etc/
[root@kdc ~]# scp /etc/krb5.conf 192.168.1.123:/etc/
[root@kdc ~]# scp /etc/krb5.conf 192.168.1.124:/etc/
[root@kdc ~]# scp /etc/krb5.conf 192.168.1.125:/etc/
12.1.8 客户机测试
kadmin -padmin/admin -w123456 "list_principals"
12.2 Ambari 开启 Kerberos
组件服务先不要启动。因为kerberos要重启服务的。
12.2.1 将KDC管理员凭据添加到Ambari凭据存储(可选的,可不做,但我会做^_^)
ambari-server setup-security --security-option=encrypt-passwords --master-key=123456 --master-key-persist=true
ambari-server restart
从生成凭据存储库:/var/lib/ambari-server/keys/credentials.jceks
查看:
keytool -list -keystore /var/lib/ambari-server/keys/credentials.jceks -storetype JCEKS -storepass 123456
12.2.2 开启 Kerberos
看。。要停止服务的哦。
出问题了。之前用ipa也出现过
12.3.3 进入分析状态。。。。。。。。。。。。
备份下来,看看。
查看日志:
sudo vim /etc/sudoers # 试试
admin ALL=(ALL) NOPASSWD:ALL
可以了哦。唉。。
回看过程:
舒服了哈。。。
到此。开启 Kerberos 完成。
12.3.4 添加用户
用于测试
kadmin -padmin/admin -w123456 -q "addprinc -pw h123456 hdfs"
kadmin -padmin/admin -w123456 -q "addprinc -pw y123456 yarn"
12.2.5 安装MIT Kerberos Ticket Manager(windows)
1 配置 C:\ProgramData\MIT\Kerberos5\krb5.ini (本机hosts配置域名就不用说了吧)
2 配置firefox
about:config
network.negotiate-auth.trusted-uris = ambari.tssj.com,master.tssj.com,metrics.tssj.com,slave123.tssj.com,slave124.tssj.com,slave125.tssj.com
network.auth.use-sspi = true
12.2.6 登录UI
12.3 Ranger 配置修改
之前是有权限,缺认证。现在补上认证了,得看看有没有水土不服呀^_^
发现 hdfs yarn hbase都异常。。。
看看它们的Config Properties:
明白了,这正常才怪。
求助hidatapuls啰。。。
该问题于10月08号发布的HDP 3.3.2.0-003版本里修复了。我还没下载呢。我是09号路演到这发现的。哈哈。
我有一个问题想问很久,但又没问的:版本升级支持么?
3.2.1 -> 3.3.1-001 -> 3.3.1-002 ->3.3.1-003->3.3.1-004 ->3.3.2-001->3.3.2-002->3.3.2-003。
像这情况:002已经在路上了(或许在生产环境)。升级003?还是打补丁?只有找它爸爸了。(打个比喻呵)
最后方案有2种:
1,删除ranger有异常的service配置,及机器上的缓存目录,再重启对应组件服务,来触发service配置的重建。
2,替换脚本,重启对应组件服务。(好处是可以不用删除已经配置在用的service配置)。
修复过程:
1,替换脚本。ambari-servr,ambari-agent 都要替换。
ambari-common/src/main/python/resource_management/libraries/functions/ranger_functions_v2.py
ambari-common/src/main/python/resource_management/libraries/functions/setup_ranger_plugin_xml.py
顺此机会,验收下脚本有没有把问题改好。hdfs yarn hbase 都试下方案1 和 2。
hdfs 用方案1
要重开关ranger的hdfs插件来触发service配置重建。而不是“重启对应组件服务”。Test Connection 是ok的。
yarn 用方案1
service配置是重建了,但Test Connection 失败。
hbase 用方案2
service配置是重建了,但Test Connection 失败。
最后按大象意见,重启ranger。就好了。
我贴图下。重建后,好使的service配置内容吧。hdfs yarn hbase
再看这里的yarn是ha的(ambari master),但配置没处理好。
把ambari rm关了试试看:
再改为:
这已反馈给hidataplus。并接受会修复的
小结:
1,替换脚本可以不删除service配置。(脚本在hdp 3.3.2.0–003发布里有的)
2,不替换脚本,要删除service配置与各机器缓存目录。重开关ranger的相应插件来触发ranger重建service配置。
3,yarn 没有考虑高可用情况。
12.4 Keberos HA
开启kerberos并运作稳定,数据链路跑顺后。迭代Keberos HA 是自然的事情。
从机怎么玩?(全量同步还是增量)
主从方案多种。思路都一样 主,从1,从2,,,从n
同步策略分全量、增量。
落地原则是:数据库较小和增量较小的环境用全量,增量同步比较适用于数据库大和增量大的环境。
此处路演嘛,不应搞太复杂:全量同步(主-从)
故扩展一从机即可。
新建vm 114
hostnamectl set-hostname kdc2.tssj.com
vim /etc/hosts
192.168.1.113 kdc.tssj.com
192.168.1.114 kdc2.tssj.com
12.4.1 安装 Kerberos(从机)
sudo yum install krb5-server krb5-libs krb5-workstation -y # 与主机一样
12.4.2 修改 krb5.conf(主机)
vim /etc/krb5.conf
12.4.3 添加主从同步服务账号 & 生成keytab(主机)
kadmin.local -q "ank -randkey host/kdc.tssj.com@TSSJ.COM"
kadmin.local -q "ank -randkey host/kdc2.tssj.com@TSSJ.COM"
kadmin.local -q "xst host/kdc.tssj.com@TSSJ.COM"
kadmin.local -q "xst host/kdc2.tssj.com@TSSJ.COM"
klist -ket /etc/krb5.keytab
12.4.4 复制配置文件和keytab到从机(主机)
cd /var/kerberos/krb5kdc
scp .k5.TSSJ.COM kdc2.tssj.com:\$PWD
scp kadm5.acl kdc2.tssj.com:\$PWD
scp kdc.conf kdc2.tssj.com:\$PWD
cd /etc
scp krb5.keytab kdc2.tssj.com:\$PWD
scp krb5.conf kdc2.tssj.com:\$PWD
12.4.5 从机启动 kpropd(需创建kpropd.acl)(从机)
5.1 创建 kprop服务权限文件
vim /var/kerberos/krb5kdc/kpropd.acl – 将导致kadmin认为此节点是从机而不能启动,所以如果有从机启动kadmin服务的需求,建议kprop配置放在别目录,此次处放置在/etc/krb5.conf.d目录
vim /etc/krb5.conf.d/kpropd.acl
host/kdc.tssj.com@TSSJ.COM
host/kdc2.tssj.com@TSSJ.COM
5.2 启动kprop同步服务
/usr/sbin/kpropd -a /etc/krb5.conf.d/kpropd.acl
12.4.6 同步数据库(主机)
kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans
kprop -f /var/kerberos/krb5kdc/slave_datatrans -d -P 754 kdc2.tssj.com
从机生成文件(from_master、principal)
12.4.7 从机启kdc(从机)
sudo systemctl start krb5kdc && systemctl enable krb5kdc # 跟主机一样
kadmin.local -q "list_principals" # 测试下
账号都同步到从机了。
12.4.8 编辑同步脚本 & 执行(主机)
编辑同步脚本
vim /var/kerberos/kprop_trans.sh
#!/bin/bash
LOGFILE=/var/kerberos/jump.log
kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans
CURRENT_TIME=$(date)
SUFFIX=$(date “+%Y.%m.%d”)
echo $CURRENT_TIME >> $LOGFILE.${SUFFIX}
/usr/sbin/kprop -f /var/kerberos/krb5kdc/slave_datatrans -d -P 754 kdc2.tssj.com >> ${LOGFILE}.${SUFFIX}
END_TIME=$(date)
echo $END_TIME >> $LOGFILE.${SUFFIX}
echo “” >> $LOGFILE.${SUFFIX}
执行
chmod +x /var/kerberos/kprop_trans.sh
crontab -e
*/10 * * * * /var/kerberos/kprop_trans.sh
crontab -l
手动运行是能同步的。定时就不生效!!留下BUG 先[TODO]
12.4.9 测试
1,主机添加用户能否同步到从机。 OK
kadmin.local -q "addprinc -pw 123456 usertest01" # 来回测试
kadmin.local -q "delete_principal usertest01" # 来回测试
kadmin.local -q "list_principals" | grep test # 来回测试
2,在客户机上kinit查看日志,发现日志刷在了 kdc节点。OK
[root@kdc ~]cat /var/log/krb5kdc.log | grep test
3,stop或kill掉主服务器的kdc,再次kinit,发现日志刷在了kdc2节点。OK
[root@kdc ~]# sudo systemctl stopt krb5kdc
[root@kdc2 ~]# cat /var/log/krb5kdc.log | grep test
[root@kdc ~]sudo systemctl start krb5kdc # 测试完恢复
到此,扩展从机形成HA完成。
12.5 Ambari设置kerberosHA
添加从机host即可。
适当重启
回顾:
路演顺序:(从无到有的实际迭代顺序也如此)
1 单个Kerberos;
2 Ambari开启 kerberos ;
3 验证各组件及数据链路;
4 扩展从机形成HA;
5 Ambari设置kerberosHA。
梳理扩展从机作全量同步流程:(简单化)