Hadoop学习笔记(HDP)-Part.09 安装OpenLDAP

简介: 01 关于HDP02 核心组件原理03 资源规划04 基础环境配置05 Yum源配置06 安装OracleJDK07 安装MySQL08 部署Ambari集群09 安装OpenLDAP10 创建集群11 安装Kerberos12 安装HDFS13 安装Ranger14 安装YARN+MR15 安装HIVE16 安装HBase17 安装Spark218 安装Flink19 安装Kafka20 安装Flume

目录
Part.01 关于HDP
Part.02 核心组件原理
Part.03 资源规划
Part.04 基础环境配置
Part.05 Yum源配置
Part.06 安装OracleJDK
Part.07 安装MySQL
Part.08 部署Ambari集群
Part.09 安装OpenLDAP
Part.10 创建集群
Part.11 安装Kerberos
Part.12 安装HDFS
Part.13 安装Ranger
Part.14 安装YARN+MR
Part.15 安装HIVE
Part.16 安装HBase
Part.17 安装Spark2
Part.18 安装Flink
Part.19 安装Kafka
Part.20 安装Flume

九、安装OpenLDAP

1.安装

Server端
在hdp01、hdp02上安装

ansible nn -m yum -a 'name=openldap-servers state=present'
ansible nn -m yum -a 'name=migrationtools state=present'

Client端
在hdp01-05上安装

ansible all -m yum -a 'name=openldap-clients state=present'

2.配置并启动

OpenLDAP的配置以树状结构存储在OpenLDAP数据库中,这些节点的配置文件以ldif格式存储在/etc/openldap/slapd.d目录下(从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件)
① cn=config
根节点用于全局性配置,它的配置文件是/etc/openldap/slapd.d/cn=config.ldif
② cn=module{0},cn=config
用于配置动态模块,它的配置文件位于/etc/openldap/slapd.d/cn=config目录下
③ cn=schema,cn=config
用于schema配置,它的配置文件位于/etc/openldap/slapd.d/cn=config目录下
④ olcDatabase={X},cn=config
用于配置数据库,它的配置文件位于/etc/openldap/slapd.d/cn=config目录下
以下所有内容在hdp01和hdp02上均进行操作

(1)修改olcDatabase={2}hdb.ldif文件

/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
查看密码对应的md5值

slappasswd -h {
   md5} -s "lnyd@LNsy115"

修改olcDatabase={2}hdb.ldif文件,将管理员密码的md5值增加到此文件中
其中cn=admin中的admin表示OpenLDAP管理员的用户名,可将cn和dc按照实际情况修改,而olcRootPW表示OpenLDAP管理员的密码。

dn: olcDatabase={
   2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {
   2}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=hdp315,dc=com
olcRootDN: cn=admin,dc=hdp315,dc=com
olcRootPW: {
   MD5}WL8F9lXqbxOxR0xwaIG9Jg==
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 22848b60-4563-103d-8500-c5b20ff267b6
creatorsName: cn=config
createTimestamp: 20230220120913Z
entryCSN: 20230220120913.754062Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20230220120913Z

image.png

(2)修改olcDatabase={1}monitor.ldif文件

/etc/openldap/slapd.d/cn\=config/olcDatabase\={1}monitor.ldif
将dn.base中OpenLDAP管理员的相关信息修改为{2}hdb.ldif中相同的内容

dn: olcDatabase={
   1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {
   1}monitor
olcAccess: {
   0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" read by dn.base="cn=admin,dc=hdp315,dc=com" read by * none
structuralObjectClass: olcDatabaseConfig
entryUUID: 2284858e-4563-103d-84ff-c5b20ff267b6
creatorsName: cn=config
createTimestamp: 20230220120913Z
entryCSN: 20230220120913.753913Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20230220120913Z

image.png

(3)修改olcDatabase={0}config.ldif文件

/etc/openldap/slapd.d/cn\=config/olcDatabase\={0}config.ldif
增加olcRootDN和olcRootPW项

dn: olcDatabase={
   0}config
objectClass: olcDatabaseConfig
olcDatabase: {
   0}config
olcAccess: {
   0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" manage by * none
olcRootDN: cn=config
olcRootPW: {
   MD5}WL8F9lXqbxOxR0xwaIG9Jg==
structuralObjectClass: olcDatabaseConfig
entryUUID: 228480e8-4563-103d-84fe-c5b20ff267b6
creatorsName: cn=config
createTimestamp: 20230220120913Z
entryCSN: 20230220120913.753793Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20230220120913Z

(4)验证LDAP基本配置

对上述配置进行测试验证

slaptest -u

image.png

(5)启动

启动LDAP程序

systemctl start slapd
systemctl status slapd

LDAP默认监听端口为389,通过netstat进行验证

netstat -tunalp | grep 389

3.配置数据库

Schema是LDAP的一个重要组成部分,类似于数据库的模式定义,LDAP的Schema定义了LDAP目录所应遵循的结构和规则,被LDAP服务器识别。schema是一个标准,定义了ldap的对象和属性,也就是ldap能够存储什么数据,数据有什么属性等。
以下操作在hdp01和hdp02上均进行。

(1)导入基础schema

从/etc/openldap/schema/中导入3个基础的schema

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

image.png

(2)修改migrate_common.ph文件

migrate_common.ph文件主要是用于生成ldif文件使用

vim /usr/share/migrationtools/migrate_common.ph

修改内容如下

$DEFAULT_MAIL_DOMAIN = "hdp315.com";
$DEFAULT_BASE = "dc=hdp315,dc=com";
$EXTENDED_SCHEMA = 1;

4.启用HA

本次配置采用MirrorMode方式。

(1)mod_syncprov.ldif

在hdp01和hdp02上,创建mod_syncprov.ldif文件,ldap双主复制功能的实现依赖于syncprov模块,这个模块位于/usr/lib64/openldap目录下
/etc/openldap/syncprov_mod.ldif

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la

加载模块

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/syncprov_mod.ldif

(2)syncprov.ldif

在hdp01和hdp02上,创建syncprov.ldif文件,导入同步配置日志信息,/etc/openldap/syncprov_enable.ldif

dn: olcOverlay=syncprov,olcDatabase={
   2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpCheckpoint: 1 1
olcSpSessionLog: 32767

olcSpCheckpoint:表示当修改1条或者1分钟时,以实现实时同步
olcSpSessionLog:session log会话日志条目的最大数量
加载模块

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/syncprov_enable.ldif

(3)master_node_1.ldif

在hdp01上,创建master_node_1.ldif文件,/etc/openldap/master_node_1.ldif
(注:每个dn属于u一部分,上面需要加一个空行,否则会报错)
2个主节点属性olcServerID的值不能相同,provider指向对方
provider:同步来源,也就是主节点,可以包含多个主节点
binddn:主节点管理账户
credentials主节点管理账户密码
searchbase:根目录

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 0

dn: olcDatabase={
   2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://hdp02.hdp.com:389/
  bindmethod=simple
  binddn="cn=admin,dc=hdp315,dc=com"
  credentials=lnyd@LNsy115
  searchbase="dc=hdp315,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE

dn: olcOverlay=syncprov,olcDatabase={
   2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

注:credentials为其他主节点的密码,只能用明文,不能用md5加密等格式
加载生效

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/master_node_1.ldif

(4)master_node_2.ldif

在hdp02上,创建master_node_2.ldif文件,/etc/openldap/master_node_2.ldif

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1

dn: olcDatabase={
   2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://hdp01.hdp.com:389/
  bindmethod=simple
  binddn="cn=admin,dc=hdp315,dc=com"
  credentials=lnyd@LNsy115
  searchbase="dc=hdp315,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE

dn: olcOverlay=syncprov,olcDatabase={
   2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

加载生效

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/master_node_2.ldif

(5)KeepAlived+HAProxy

① 安装
在hdp04和hdp05安装keepalived和HAProxy服务

yum install -y haproxy keepalived

② 配置HAProxy
在hdp04和hdp05上,修改配置文件,/etc/haproxy/haproxy.cfg

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  tcp_389_openldap
    bind *:389
    mode tcp
    stats uri /haproxy?stats
    default_backend  tcp_389_openldap

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend tcp_389_openldap
    mode tcp
    balance     roundrobin
    server server1 hdp01.hdp.com:389 check weight 100
    server server2 hdp02.hdp.com:389 check weight 1

启动keepalived服务

systemctl start haproxy
systemctl status haproxy

③ 配置KeepAlived
在hdp04上,修改配置文件,/etc/keepalived/keepalived.conf

global_defs {
   
   notification_email {
   
     root@localhost
   }
   notification_email_from root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id hdp04.hdp.com
   script_user root
   enable_script_security
}

vrrp_script chk_ha_port {
   
    script "/etc/keepalived/chk_ha.sh"
    interval 2
    weight -5
    fall 2
    rise 1
}

vrrp_instance VI_1 {
   
    state MASTER
    interface ens192
    virtual_router_id 128
    priority 100
    advert_int 1
    authentication {
   
        auth_type PASS
        auth_pass 12345678
    }
    virtual_ipaddress {
   
        192.168.111.222
    }
    track_script {
   
        chk_ha_port
    }
}

在hdp05上,修改配置文件,/etc/keepalived/keepalived.conf

global_defs {
   
   notification_email {
   
     root@localhost
   }
   notification_email_from root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id hdp05.hdp.com
   script_user root
   enable_script_security
}

vrrp_script chk_ha_port {
   
    script "/etc/keepalived/chk_ha.sh"
    interval 2
    weight -5
    fall 2
    rise 1
}

vrrp_instance VI_1 {
   
    state BACKUP
    interface ens192
    virtual_router_id 128
    priority 99
    advert_int 1
    authentication {
   
        auth_type PASS
        auth_pass 12345678
    }
    virtual_ipaddress {
   
        192.168.111.222
    }
    track_script {
   
        chk_ha_port
    }
}

监测脚本,/etc/keepalived/chk_ha.sh

#!/bin/bash
counter=$(ps -C haproxy --no-heading | wc -l)
if [ "${counter}" = "0" ]; then
    systemctl start haproxy
    sleep 1
    counter=$(ps -C haproxy --no-heading | wc -l)
    if [ "${counter}" = "0" ]; then
        systemctl stop keepalived
    fi
fi

启动keepalived服务

systemctl start keepalived
systemctl status keepalived

在hdp04上查看ens192端口上的IP增加了192.168.111.222

ip a

image.png

测试切换的时候,可以将chk_ha.sh中的启动haproxy注释掉,防止再次被拉起

5.添加用户及用户组

默认情况下OpenLDAP是没有普通用户的,但是有一个管理员用户。

(1)创建ldif模板

现在需要Linux系统中的用户tenant1,添加到OpenLDAP中。

useradd tenant1
echo "Aa123456" | passwd --stdin tenant1

提取tenant1的信息

grep -E "tenant1[^.]" /etc/passwd > /root/users
grep -E "tenant1[^.]" /etc/group > /root/groups
cat /root/users /root/groups

根据上述生成的用户和用户组属性,使用migrate_passwd.pl文件生成要添加用户和用户组的ldif(可以从/etc/passwd、/etc/shadow、/etc/groups中生成ldif更新ldap数据库,需要用到migrationtools工具)

/usr/share/migrationtools/migrate_passwd.pl /root/users > /root/template.ldif
/usr/share/migrationtools/migrate_group.pl /root/groups >> /root/template.ldif
cat /root/template.ldif

image.png

在模板的末尾添加

memberUid: uid=tenant1,ou=People,dc=hdp315,dc=com

后续如果要新加用户到OpenLDAP中的话,可以直接修改template.ldif文件即可。
注:增加LDAP用户,无需在OS层面添加用户,tenant1的添加只是为了生成ldif模板

(2)初始化

在hdp01上,创建/etc/openldap/base.ldif文件,先创建hdp315这个organization(简称O),然后在其下面创建三个OU:
ou=People,dc=hdp315,dc=com用于存放用户账号
ou=services,dc=hdp315,dc=com用户存放服务账号
ou=Group,dc=hdp315,dc=com用户存放组账号

dn: dc=hdp315,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: hdp315

dn: cn=admin,dc=hdp315,dc=com
objectClass: organizationalRole
cn: admin
description: Directory Admin

dn: ou=People,dc=hdp315,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=services,dc=hdp315,dc=com
objectclass: organizationalUnit
ou: services

dn: ou=Group,dc=hdp315,dc=com
objectClass: organizationalUnit
ou: Group

导入

ldapadd -x -D "cn=admin,dc=hdp315,dc=com" -w "lnyd@LNsy115" -f /etc/openldap/base.ldif

(3)添加账号

使用管理员账号admin添加普通用户tenant1到LDAP中,其中-D指定了管理员账号去执行,-w为管理员账号的口令

ldapadd -x -w "lnyd@LNsy115" -D "cn=admin,dc=hdp315,dc=com" -f /root/template.ldif

(4)确认账号信息

使用ldapsearch查询全部用户信息

ldapsearch -x -H ldap://hdp01.hdp.com:389 -b 'ou=People,dc=hdp315,dc=com'

(5)HA同步情况确认

在hdp01上创建的tenant1用户,在hdp02的LDAP上查询

ldapsearch -x -H ldap://hdp01.hdp.com:389 -b 'ou=People,dc=hdp315,dc=com' 'uid=tenant1'
ldapsearch -x -H ldap://hdp02.hdp.com:389 -b 'ou=People,dc=hdp315,dc=com' 'uid=tenant1'
ldapsearch -x -H ldap://192.168.111.222:389 -b 'ou=People,dc=hdp315,dc=com' 'uid=tenant1'

image.png

6.部署web服务

在hdp01上分别进行Yum安装phpldapadmin服务

yum install -y phpldapadmin

yum安装完phpldapadmin后会默认在/etc/httpd/conf.d加入,修改配置文件/etc/httpd/conf.d/phpldapadmin.conf

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  <IfModule mod_authz_core.c>
    # Apache 2.4
    #Require local
    Require all granted
  </IfModule>
  <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
  </IfModule>
</Directory>

修改phpldapadmin的设置,首先备份配置文件

cp /etc/phpldapadmin/config.php /etc/phpldapadmin/config.php.bak.20230222

/etc/phpldapadmin/config.php,修改内容如下:

#注释掉以下行
#287行
#$servers->newServer('ldap_pla');
#291行
#$servers->setValue('server','name','Local LDAP Server');
#388行
#$servers->setValue('appearance','pla_password_hash','');
#398行
#$servers->setValue('login','attr','uid');

#取消注释并增加以下行,537行开始
$servers->newServer('ldap_pla');
$servers->setValue('server','name','hdp01 Server');
$servers->setValue('server','host','192.168.111.201');
$servers->setValue('server','port',389);
$servers->setValue('server','base',array('dc=hdp315,dc=com'));
$servers->setValue('login','auth_type','cookie');
$servers->setValue('login','bind_id','cn=admin,dc=hdp315,dc=com');
$servers->setValue('login','bind_pass','lnyd@LNsy115');
$servers->setValue('login','anon_bind',false);  !此行为新增
$servers->setValue('server','tls',false);

$servers->newServer('ldap_pla');
$servers->setValue('server','name','hdp02 Server');
$servers->setValue('server','host','192.168.111.202');
$servers->setValue('server','port',389);
$servers->setValue('server','base',array('dc=hdp315,dc=com'));
$servers->setValue('login','auth_type','cookie');
$servers->setValue('login','bind_id','cn=admin,dc=hdp315,dc=com');
$servers->setValue('login','anon_bind',false);
$servers->setValue('login','bind_pass','lnyd@LNsy115');

重启httpd服务

systemctl restart httpd
systemctl status httpd

访问页面http://192.168.111.201/phpldapadmin,可以分别选择不同的OpenLDAP Server进行登录,用户名为在config.php中设置的内容

image.png
image.png

在hdp02上进行同样的部署,然后对页面进行HA高可用。

相关文章
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
60 3
|
3月前
|
分布式计算 资源调度 Hadoop
centos7二进制安装Hadoop3
centos7二进制安装Hadoop3
|
3月前
|
分布式计算 Ubuntu Hadoop
在Ubuntu 16.04上如何在独立模式下安装Hadoop
在Ubuntu 16.04上如何在独立模式下安装Hadoop
35 1
|
4月前
|
SQL 分布式计算 关系型数据库
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
69 2
|
6月前
|
弹性计算 分布式计算 Hadoop
Linux(阿里云)安装Hadoop(详细教程+避坑)
Linux(阿里云)安装Hadoop(详细教程+避坑)
1476 3
|
6月前
|
存储 分布式计算 Hadoop
【分布式计算框架】Hadoop伪分布式安装
【分布式计算框架】Hadoop伪分布式安装
73 2
|
5月前
|
分布式计算 Hadoop 大数据
【大数据】Hadoop下载安装及伪分布式集群搭建教程
【大数据】Hadoop下载安装及伪分布式集群搭建教程
220 0
|
6月前
|
分布式计算 资源调度 Hadoop
安装hadoop学习笔记
安装hadoop学习笔记
66 0
安装hadoop学习笔记
|
6月前
|
分布式计算 Hadoop Java
hadoop的基础设施-protobuf-2.5.0编译和安装
hadoop的基础设施-protobuf-2.5.0编译和安装
50 0
|
6月前
|
分布式计算 Hadoop 数据安全/隐私保护
现成Hadoop安装和配置,图文手把手交你
现成Hadoop安装和配置,图文手把手交你

相关实验场景

更多