LDAP部署

安装LDAP(主节点)

安装LDAP Server

yum install db4 db4-utils db4-devel cyrus-sasl* krb5-server-ldap -y
yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap -y

查看安装的版本:

rpm -qa openldap
openldap-2.4.40-8.el7.x86_64 rpm -qa krb5-server-ldap
krb5-server-ldap-1.13.2-10.el7.x86_64

LDAP 服务端配置

更新配置库:

rm -rf /var/lib/ldap/*
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap.ldap /var/lib/ldap

在2.4以前的版本中,OpenLDAP 使用 slapd.conf 配置文件来进行服务器的配置,而2.4开始则使用 slapd.d 目录保存细分后的各种配置,这一点需要注意,其数据存储位置即目录 /etc/openldap/slapd.d 。尽管该系统的数据文件是透明格式的,还是建议使用 ldapadd, ldapdelete, ldapmodify 等命令来修改而不是直接编辑。

默认配置文件保存在 /etc/openldap/slapd.d,将其备份:

cp -rf /etc/openldap/slapd.d /etc/openldap/slapd.d.bak
chown -R ldap:ldap /etc/openldap/slapd.d && chmod -R 700 /etc/openldap/slapd.d

注意:如果是配置有问题需要重装,上面两句命令改成下面三句:

rm -rf /etc/openldap/slapd.d
cp -r /etc/openldap/slapd.d.bak /etc/openldap/slapd.d
chown -R ldap:ldap /etc/openldap/slapd.d && chmod -R 700 /etc/openldap/slapd.d

启动服务

启动 LDAP 服务:

#centos7启动命令
systemctl start slapd
systemctl enable slapd #centos6启动命令
chkconfig --add slapd
chkconfig --level 345 slapd on
/etc/init.d/slapd start
查看状态,验证服务端口
$ ps aux | grep slapd | grep -v grep
ldap 9225 0.0 0.2 581188 44576 ? Ssl 15:13 0:00 /usr/sbin/slapd -h ldap:/// -u ldap $ netstat -tunlp | grep :389
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 8510/slapd
tcp 0 0 :::389 :::* LISTEN 8510/slapd

如果启动失败,则运行下面命令来启动 slapd 服务并查看日志:

slapd -h ldap://127.0.0.1 -d 481

待查明原因之后,停止该进程使用正常方式启动 slapd 服务。

导入基本的配置

导入基本的Schema

cat /etc/openldap/slapd.conf

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args allow bind_v2
modulepath /usr/lib64/openldap
moduleload syncprov # TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
# TLSCertificateFile /etc/pki/tls/certs/slapd.pem
# TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem #########################################
# Main LDAP database #
#########################################
database bdb
suffix "dc=cdh,dc=com"
checkpoint 1024 15
rootdn "cn=Manager,dc=cdh,dc=com"
rootpw 111111 directory /var/lib/ldap # Indices to maintain for this database M-eM-"M-^^M-eM-^JM- M-gM-4M-"M-eM-<M-^U
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
index entryCSN,entryUUID eq overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
serverID 1 syncrepl rid=100
provider=ldap://10.1.2.235
type=refreshAndPersist
retry="60 +"
searchbase="dc=cdh,dc=com"
scope=sub
schemachecking=on
bindmethod=simple
binddn="cn=Manager,dc=cdh,dc=com"
credentials=111111
mirrormode on ##################################################
# Database for the monitoring #
##################################################
database monitor access to *
by dn.exact="cn=Manager,dc=cdh,dc=com" read
by * none

测试

slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
chown -R ldap:ldap /etc/openldap/slapd.d && chmod -R 700 /etc/openldap/slapd.d
chown -R ldap.ldap /var/lib/ldap

删除文件

[root@node1a220 ~]# cd /etc/openldap/slapd.d/cn\=config/
[root@node1a220 cn=config]# rm -rf olcDatabase={2}hdb.ldif
[root@node1a220 cn=config]# rm -rf olcDatabase={2}monitor.ldif

重启服务

chown -R ldap.ldap /var/lib/ldap
systemctl restart slapd

创建数据库

数据库没有数据,需要添加数据,你可以手动编写 ldif 文件来导入一些用户和组,或者使用 migrationtools 工具来生成 ldif 模板。创建 setup.ldif 文件如下:

dn: dc=cdh,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: cdh com
dc: cdh dn: ou=People,dc=cdh,dc=com
objectclass: organizationalUnit
ou: people
description: Users dn: ou=group,dc=cdh,dc=com
objectClass: organizationalUnit
ou: group

使用下面命令导入数据,密码是前面设置的111111。

ldapadd -x -D "cn=Manager,dc=cdh,dc=com" -w 111111 -f setup.ldif

参数说明:

• -w 指定密码

• -x 是使用一个匿名的绑定

LDAP 的使用

导入系统用户

接下来你可以从 /etc/passwd, /etc/shadow, /etc/groups 中生成 ldif 更新 ldap 数据库,这需要用到 migrationtools 工具。

安装:

yum install migrationtools -y

利用迁移工具生成模板,先修改默认的配置:

vim /usr/share/migrationtools/migrate_common.ph

#line 71 defalut DNS domain
$DEFAULT_MAIL_DOMAIN="HADOOP.COM";
#line 74 defalut base
$DEFAULT_BASE="dc=cdh,dc=com";

生成模板文件:

/usr/share/migrationtools/migrate_base.pl > /opt/base.ldif

然后,可以修改该文件,然后执行导入命令:

ldapadd -x -D "cn=Manager,dc=cdh,dc=com" -w 111111 -f /opt/base.ldif

将当前节点上的用户导入到 ldap 中,可以有选择的导入指定的用户:

先添加用户

useradd test

查找系统上的 test、hive 等用户

grep -E "test" /etc/passwd  >/opt/passwd.txt
/usr/share/migrationtools/migrate_passwd.pl /opt/passwd.txt /opt/passwd.ldif
ldapadd -x -D "cn=Manager,dc=cdh,dc=com" -w 111111 -f /opt/passwd.ldif

将用户组导入到 ldap 中:

生成用户组的 ldif 文件,然后导入到 ldap

grep -E "test" /etc/group  >/opt/group.txt
/usr/share/migrationtools/migrate_group.pl /opt/group.txt /opt/group.ldif
ldapadd -x -D "cn=Manager,dc=cdh,dc=com" -w 111111 -f /opt/group.ldif

查询

查询新添加的 test 用户:

ldapsearch -LLL -x -D 'cn=Manager,dc=cdh,dc=com' -w 111111 -b 'dc=cdh,dc=com' 'uid=admin'

  dn: uid=test,ou=People,dc=cdh,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: test account
sn: test
uid: test
uidNumber: 1001
gidNumber: 100
homeDirectory: /home/test
loginShell: /bin/bash

可以看到,通过指定 ‘uid=test’,我们只查询这个用户的数据,这个查询条件叫做filter。有关 filter 的使用可以查看 ldapsearch 的 manpage。

修改

用户添加好以后,需要给其设定初始密码,运行命令如下:

ldappasswd -x -D 'cn=Manager,dc=cdh,dc=com' -w 111111"uid=test,ou=People,dc=cdh,dc=com" -S

删除

删除用户或组条目:

ldapdelete -x -w 111111 -D 'cn=Manager,dc=cdh,dc=com'"uid=test,ou=People,dc=cdh,dc=com"
ldapdelete -x -w 111111 -D 'cn=Manager,dc=cdh,dc=com'"cn=test,ou=group,dc=cdh,dc=com"

LDAP-HA配置(从节点)

安装LDAP Server

同【3.1安装】步骤:

yum install db4 db4-utils db4-devel cyrus-sasl* krb5-server-ldap -y
yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap -y
查看安装的版本:
$ rpm -qa openldap
openldap-2.4.40-8.el7.x86_64
$ rpm -qa krb5-server-ldap
krb5-server-ldap-1.13.2-10.el7.x86_64

LDAP 服务端配置

更新配置库:

rm -rf /var/lib/ldap/*
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap.ldap /var/lib/ldap

在2.4以前的版本中,OpenLDAP 使用 slapd.conf 配置文件来进行服务器的配置,而2.4开始则使用 slapd.d 目录保存细分后的各种配置,这一点需要注意,其数据存储位置即目录 /etc/openldap/slapd.d 。尽管该系统的数据文件是透明格式的,还是建议使用 ldapadd, ldapdelete, ldapmodify 等命令来修改而不是直接编辑。

默认配置文件保存在 /etc/openldap/slapd.d,将其备份:

cp -rf /etc/openldap/slapd.d /etc/openldap/slapd.d.bak
chown -R ldap:ldap /etc/openldap/slapd.d && chmod -R 700 /etc/openldap/slapd.d

注意:如果是配置有问题需要重装,上面两句命令改成下面三句:

rm -rf /etc/openldap/slapd.d
cp -r /etc/openldap/slapd.d.bak /etc/openldap/slapd.d
chown -R ldap:ldap /etc/openldap/slapd.d && chmod -R 700 /etc/openldap/slapd.d

启动服务

启动 LDAP 服务:

centos7启动命令
systemctl start slapd
systemctl enable slapd centos6启动命令
chkconfig --add slapd
chkconfig --level 345 slapd on
/etc/init.d/slapd start

查看状态,验证服务端口

ps aux | grep slapd | grep -v grep

  ldap      9225  0.0  0.2 581188 44576 ?        Ssl  15:13   0:00 /usr/sbin/slapd -h ldap:/// -u ldap

netstat -tunlp  | grep :389
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 8510/slapd
tcp 0 0 :::389 :::* LISTEN 8510/slapd

如果启动失败,则运行下面命令来启动 slapd 服务并查看日志:

$ slapd -h ldap://127.0.0.1 -d 481

待查明原因之后,停止该进程使用正常方式启动 slapd 服务。

导入基本的配置

添加一些基本配置,并引入 openldap 的ldif:

导入基本的Schema

cat /etc/openldap/slapd.conf

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args allow bind_v2
modulepath /usr/lib64/openldap
moduleload syncprov # TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
# TLSCertificateFile /etc/pki/tls/certs/slapd.pem
# TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem #########################################
# Main LDAP database #
#########################################
database bdb
suffix "dc=cdh,dc=com"
checkpoint 1024 15
rootdn "cn=Manager,dc=cdh,dc=com"
rootpw 111111 directory /var/lib/ldap # Indices to maintain for this database 增加索引
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
index entryCSN,entryUUID eq overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
serverID 2 syncrepl rid=101
provider=ldap://10.1.2.234
type=refreshAndPersist
retry="60 +"
searchbase="dc=cdh,dc=com"
scope=sub
schemachecking=on
bindmethod=simple
binddn="cn=Manager,dc=cdh,dc=com"
credentials=111111
mirrormode on ##################################################
# Database for the monitoring #
##################################################
database monitor access to *
by dn.exact="cn=Manager,dc=cdh,dc=com" read
by * none

测试

slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
chown -R ldap:ldap /etc/openldap/slapd.d && chmod -R 700 /etc/openldap/slapd.d

注意

serverID    2   ##保证唯一

syncrepl rid=100		##同步进程id,必须为三位数
provider=ldap://10.1.2.234 ##另一节点的IP
type=refreshAndPersist
searchbase="dc=cdh,dc=com" ##BaseDn
scope=sub
schemachecking=on
bindmethod=simple ##认证方式为简单模式
binddn=" cn=Manager,dc=cdh,dc=com" ##用户名
credentials=111111 ##密码
retry="60 +" ##尝试时间,切记之间有空格

删除文件

[root@node1a220 ~]# cd /etc/openldap/slapd.d/cn\=config/
[root@node1a220 cn=config]# rm -rf olcDatabase={2}hdb.ldif
[root@node1a220 cn=config]# rm -rf olcDatabase={2}monitor.ldif

重启服务

chown -R ldap.ldap /var/lib/ldap
systemctl restart slapd

LDAP HA 验证

假设A节点有数据,而B节点无数据,配置安装好后,那么B节点会同步A节点的数据;或无论两个节点的数据发生改变,两个节点的数据会保持同步。

查询A节点用户是否同步到B节点:

$ ldapsearch -LLL -x -D 'cn=Manager,dc=cdh,dc=com' -w 111111 -b 'dc=cdh,dc=com''uid=test'
dn: uid=test,ou=People,dc=cdh,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: test account
sn: test
uid: test
uidNumber: 1001
gidNumber: 100
homeDirectory: /home/test
loginShell: /bin/bash

LDAP HA VIP配置

Keepalived安装

使用Keepalived配置VIP(虚拟IP)实现LDAP HA,即对外提供VIP给用户访问LDAP,内部用Keepalived监控主从LDAP服务器状态并实现VIP自动在LDAP主从服务器上的切换已达到LDAP HA的效果。

CentOS自带了Keepalived,直yum install keepalived即可。如果是其它linux,需要下载keepalived rpm包,然后进行安装。假设虚拟IP为10.1.2.249.

Keepalived配置

KDC/LDAP A节点配置

修改keepalived的配置文件/etc/keepalived/keepalived.conf如下:

! Configuration File for keepalived
vrrp_script chk_http_port {
script "/etc/keepalived/chk_ldap_process.sh" #进程检测脚本
interval 5 # 脚本检测时间间隔,单位秒
weight 0 #检查失败时权重递减值 global_defs {
router_id LVS_DEVEL #标识本节点的字条串,通常为hostname
} vrrp_instance VI_1 {
state BACKUP
interface bond0 #节点绑定的网卡
virtual_router_id 151 #取值在0-255之间,组播ID,组内一样,同网不能重复
priority 100 #优先级,数字越大优先级越高
advert_int 1 #发送组播的间隔,默认1秒
nopreempt #不抢占 authentication {
auth_type PASS
auth_pass 1111
} track_script {
chk_http_port
} virtual_ipaddress {
10.1.2.249 #虚拟IP
}
}
}

注意:#注释内容实际配置文件中请删除

监控LDAP服务进程脚本chk_ldap_process.sh,当LDAP服务进程不在时,停止keepalived进程,VIP会自动切换到另一个LDAP服务器。

chk_ldap_process.sh内容如下:

#!/bin/bash
ldapPid=$(ps -ef |grep slapd|grep -v grep|awk '{print $2}'|grep -v PID)
#echo $ldapPid
if test "$ldapPid" == ""; then
systemctl stop keepalived
exit 1
else
exit 0
fi

KDC/LDAP B节点配置

修改keepalived的配置文件/etc/keepalived/keepalived.conf如下:

! Configuration File for keepalived
vrrp_script chk_http_port {
script "/etc/keepalived/chk_ldap_process.sh" #进程检测脚本
interval 5 # 脚本检测时间间隔,单位秒
weight 0 global_defs {
router_id LVS_DEVEL
} vrrp_instance VI_1 {
state BACKUP
interface bond0 #节点绑定的网卡
virtual_router_id 151 #虚拟路由标识,两个节点必须一致
priority 100 #优先级
advert_int 1
nopreempt authentication {
auth_type PASS
auth_pass 1111
} track_script {
chk_http_port
} virtual_ipaddress {
10.1.2.249 #虚拟IP
}
}
}

注意:#注释内容实际配置文件中请删除

测试验证

可以使用如下步骤验证LDAP HA。步骤如下:

1、主从两个节点上启动keepalived

先启动keepalived命令:service keepalived start

2、A节点上查看虚拟IP情况

使用命令:ip a 查看

发现虚拟IP绑定在LDAP A节点,因为KDC/LDAP A优先级高。

3、手动停止OpenLDAP A节点的ldap server,3s后OpenLDAP A节点的keepalived的server会停止,此时可以查看OpenLDAP B节点(keepalived此时是开启状态)有虚拟IP。

LDAP-HA安装与配置(Keepalived方式实现)的更多相关文章

  1. CentOS下Apache+SVN+LDAP的安装与配置

    上班接近4个月了,在公司做配置管理工程师,主要是在Linux下对公司的源代码以及项目发布进行管理.4个月接触了好多新知识,也对各种工具的集成使用搞得云里来雾里去的,所以打算自己搭建一套环境,进行测试. ...

  2. centos安装与配置keepalived+nginx高可用

    一.安装启动keepalived 1.下载keepalived 在centos系统中,用wget下载最新版本: mkdir tool cd tool wget https://www.keepaliv ...

  3. keepalived安装与配置,组建高可用服务器

    一.准备环境 linux系统:CentOS7 keepalived版本:keepalived-1.3.5.tar.gz keepalived下载地址:http://www.keepalived.org ...

  4. [转]Centos6.5安装配置keepalived

    参考博文: Centos6.5安装配置keepalived CentOS6.5 keepalived详解及实现Nginx服务的高可用性 CentOS6.5 LVS + KeepAlived搭建步骤 我 ...

  5. Keepalived详解(二):Keepalived安装与配置【转】

    一.Keepalived安装与配置: 1.Keepalived的安装过程: Keepalived的安装非常简单,本实例以源码安装讲解: Keepalived的官方网址:http://www.keepa ...

  6. Linux下Keepalived安装与配置

    一.简介 负载平衡是一种在真实服务器集群中分配IP流量的方法,可提供一个或多个高度可用的虚拟服务.在设计负载均衡拓扑时,重要的是要考虑负载均衡器本身的可用性以及它背后的真实服务器.用C编写的类似于la ...

  7. LVS + Keepalived + Nginx安装及配置

    1.概述 上篇文章<架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层>(http://blog.csdn.net/yinwenjie/artic ...

  8. Keepalived 安装与配置

    下载:http://www.keepalived.org/ what is keepalived? Keepalived is a routing software written in C. The ...

  9. 架构设计:负载均衡层设计方案(7)——LVS + Keepalived + Nginx安装及配置

    1.概述 上篇文章<架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层>(http://blog.csdn.net/yinwenjie/artic ...

随机推荐

  1. mysql <=> null 问题

    SELECT * FROM cms_user WHERE age=NULL; Empty set (0.03 sec) 查询表中记录age值为null mysql> SELECT * FROM  ...

  2. Linux中安装tomcat后,window中访问不到tomcat的欢迎界面问题

    首先,可以通过xftp把下载的tomcat的tar.gz包传输到Linux中. 然后进行解压,tar -zxvf   tomcat的压缩包名称(可以使用tab键快速补齐) 解压后,可以使用修改/con ...

  3. VS2017提醒找不到MSVCR110D.dll

    我的电脑时win10我已解决,不能传文件,需要联系我

  4. AngelToken钱包——值得投资与存币的钱包

    Angeltoken有多好? Angeltoken到底值不值得我们投资? 简而言之 Angeltoken结合了:钱包+机器人,钱包+币币交易,钱包+宠物,钱包+结算代币等等. 它颠覆传统的运营和赚钱模 ...

  5. I2C 上拉电阻选择计算公式

    I2C接口上拉电阻的选择 - I2C接口上拉电阻的选择 1.I2C接口的输出端是漏极开路或集电极开路,所以必须在接口外接上拉. 2.上拉电阻的范围很宽,但也需要跟据功耗.信号上升时间等具体确定. 和速 ...

  6. csla框架__使用Factory方式实现Csla.BusinessBase对象数据处理

    环境:.net4.6+csla4.6 实现:对象的数据库访问及数据库执行使用Factory方式进行封闭. 正文: 以前在使用csla框架完成业务对象的定义时所有的数据处理都在对象内部实现,也不能说不好 ...

  7. Javase系列之面向对象(一)

    作为一个Java程序员,我们每天做的事情就是OOP(面向对象),可以说万物皆对象,Java是一门面向对象的程序语言,鉴于基本的面向对象知识也是一个较为庞杂的模块,所以博主我准备用多篇文章去介绍Java ...

  8. 解决安装虚拟环境出现的问题(OSError: Command /home/python/.virtua...ngo3_web/bin/python3 - setuptools pkg_resources pip wheel failed with error code 2)

    python3的报错解决: OSError: Command /home/python/.virtua...ngo3_web/bin/python3 - setuptools pkg_resource ...

  9. 如何用ESP8266实现网页配置(web)

    准备工作 准备一个深圳四博智联科技有限公司的ESP-F 模组.或者四博智联科技的NODEMCU 当我们拿到ESP-F模块后,可以按照以下接线进行测试: 即 VCC.EN 接 3.3v.GPIO15 G ...

  10. Ceph集群更换public_network网络

    1.确保ceph集群是连通状态 这里,可以先把机器配置为以前的x.x.x.x的网络,确保ceph集群是可以通的.这里可以执行下面的命令查看是否连通,显示HEALTH_OK则表示连通 2.获取monma ...