详细文档下载地址:链接: https://pan.baidu.com/s/1gIYm0V-NrS7y1kubWWIqVw 提取码: vikm
一、 背景
黑龙江电信LDAP server当前只有一台,由于主机硬件升级需停主机,会导致LDAP server宕机,由于无备用的LDAP server,会影响大数据平台集群的运行。故需要实现LDAP server的高可用,做到任何机器down,都不会影响集群使用。
二、 主从高可用方案
当前的ldap-server部署在Namenode节点136.192.59.129(hljnn01.asiainfo.com)上。
集群内的所有节点上均部署了ldap-client,136.192.59.129——136.192.59.150,共22个节点,并启动了nslcd、sssd服务。
目前,首先需要在另外一个namenode节点上136.192.59.130上部署一个ldap slave server,用于同步136.192.59.129中的数据。
然后修改各个ldap-client中的配置文件、ranger中的ldap url、hive中ldap url。
(一) 在master上启用添加syncprov模块
在ldap master server【136.192.59.129】上通过ldif文件来增加syncprov模块,无需重启ldap server。
1. 创建ldif文件
mkdir /tmp/ldap
并在该目录下创建以下两个ldif文件:
master_mod_syncprov.ldif
master_syncprov.ldif
2. 添加ldif文件:
ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/ldap/master_mod_syncprov.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/ldap/master_syncprov.ldif
(二) 在slave上配置consumer
1. 安装ldap server
Root登录136.192.59.130。
yum -y install openldap-servers openldap-clients
3. 复制数据库模版文件
l 复制master上的/etc/openldap/slapd.conf到slave的/etc/openldap目录下:
scp root@136.192.59.129:/etc/openldap/slapd.conf /etc/openldap/
l 复制数据库模版文件DB_CONFIG.example:
cp /usr/share/openldap-servers/DB_CONFIG.example /hadoop/ldapdata/DB_CONFIG
4. 配置consumer
在slapd.conf文件的末尾增加以下内容:
syncrepl rid=123
provider=ldap://hljnn01.asiainfo.com:389
type=refreshAndPersist
interval=00:00:05:00
searchbase=”dc=asiainfo,dc=com”
scope=sub
schemachecking=off
bindmethod=simple
binddn=”cn=admin,dc=asiainfo,dc=com”
credentials=ldap管理员的明文密码
retry=”30 5 300 3”
注意:syncrepl以后的行并非顶格写,否则会报错。如图所示:
5. 通过slapd.conf 配置文件来生成数据库。
先删除原来的/etc/openldap/slapd.d目录下的内容:rm -rf /etc/openldap/slapd.d/* 注意要保留该目录,只删除原目录中的文件及子文件夹
重新生成数据库:# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d,若命令行输出“config file testing succeeded” 表示配置文件生成数据库成功。
生成成功后,修改目录权限:chown -R ldap:ldap /etc/openldap/slapd.d
注意:每次修改slapd.conf文件都需要执行该步骤重新生成slapd.d目录。
6. 配置文件夹权限
[root@dlp ~]# chmod -R 700 /var/lib/ldap
[root@dlp ~]# chown -R ldap:ldap /hadoop/ldapdata
[root@dlp ~]# chown -R ldap:ldap /etc/openldap
7. 启动ldap-server,配置开机启动
[root@dlp ~]# service slapd start
[root@dlp ~]# chkconfig slapd on
slave启动后,会自动从master同步查询并更新到slave。
(三) 测试
1. 查看master/slave的监听端口
8. Slave中查看当前ladp用户列表
ldapsearch -x -b ‘ou=People,dc=asiainfo,dc=com’,就可以看到自动从master同步过来是数据了。
9. 在master上新增用户,确认是否能同步到slave上:
首先,在master上,准备增加用户的ldif脚本
然后,在master上,导入ldif脚本:
ldapadd -x -D cn=admin,dc=asiainfo,dc=com -W -f /tmp/ldap/test_add_user.ldif
在slave中查看,ldapsearch -x -b ‘ou=People,dc=asiainfo,dc=com’|grep testuser,可查看到新增的用户。
至此ldap-server的主从配置完毕。
(四) 修改client配置
1. 修改hadoop基于ldap的group映射
(1) 修改ldap-client端的uri配置
authconfig —ldapserver=hljnn01.asiainfo.com,hljnn02.asiainfo.com —update
执行该命令,后台会自动修改/etc/openldap/ldap.conf、/etc/pam_ldap.conf 、/etc/nslcd.conf中ldap的url配置信息,并自动重启nslcd服务。
可检查一下,上述3个配置文件是否成功修改。
如果/etc/openldap/ldap.conf中同时有URI和URL,可将配置错误的URI注释掉,只保留一个URL即可,上述命令只会修改URL。
(2) 修改sssd配置文件/etc/sssd/sssd.conf
修改sssd.conf配置文件中的ldap_url属性(有多处),修改为:
ldap://hljnn01.asiainfo.com ldap://hljnn02.asiainfo.com(多个ldap-server以空格分隔)
然后重启sssd服务:service sssd restart
(3) 测试
使用命令getent passwd xxxx来查询某个/etc/passwd中不存在、只存在于ldap中的帐号。如果能查询到,说明本地连接ldap成功。
10. 修改Ranger中的ldap server配置
登录ambari Web,点击“service”菜单,点击ranger,点击“config”,点击“advanced”,在“LDAP settting”部分,修改“LDAP URL”的值。
本地自行修改,重启ranger。
11. 修改hive基于ldap的身份认证
在Hive配置界面中(Hive->Configs->Advanced->Advanced hive-site)配置LDAP的URL属性:
本地自行修改,重启hiveServer2。
(五) 测试HA
停止master,在只有slave启动的情况下,确认:
l 使用命令getent passwd xxxx来查询某个/etc/passwd中不存在、只存在于ldap中的帐号。如果能查询到,说明本地连接ldap成功。
l 大数据平台是否正常。