Ldap主从配置解决方案

一、前沿:

    本文只是包含ldap的主从复制的配置解决方案,不包含HA功能,其中可以提供的一种解决方案就是LDAP+KeepAlived实现HA。

二、Master配置

  在master上启用添加syncprov模块来实现主从复制功能点,通过ldif文件来增加syncprov模块,无需重启ldap server。
  GX-BATCH-NN-01#  vim  mod_syncprov.ldif 
  #注意:ldap默认的ldif是存放在/etc/openldap/schema路径下,如果你的*.ldif文件不在/etc/openldap/schema目录下,执 行命令的时候使用绝对路径(建议使用绝对路径)。

文件内容:

# create new

dn: cn=module,cn=config

objectClass: olcModuleList

cn: module

olcModulePath: /usr/lib/openldap

olcModuleLoad: syncprov.la

Ldap由于scheam的控制,文件里的属性有严格的控制,错误的或者不存在的属性将无法执行ldif文件,所以ldif文件的字体颜色会帮助我们配置ldif文件(属性:绿色,属性值:红色)。

GX-BATCH-NN-01#ldapadd -Y EXTERNAL -H ldapi:/// -f /ldif/mod_syncprov.ldif

执行完界面提示内容:
SASL/EXTERNAL authentication started
SASL username:gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0

adding new entry "cn=module,cn=config

GX-BATCH-NN-01#  vim  syncprov.ldif

文件内容:

# create new

dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config

objectClass: olcOverlayConfig

objectClass: olcSyncProvConfig

olcOverlay: syncprov

olcSpSessionLog: 100

GX-BATCH-NN-01# ldapadd -Y EXTERNAL -H ldapi:/// -f /ldif/syncprov.ldif
执行完界面提示内容:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0

adding new entry "olcOverlay=syncprov,olcDatabase={1}hdb,cn=config"


三、Slave配置

    同样,在slave上也需要配置syncrepl,因为syncrepl实现的主从复制是单向的,即master的所有操作都会同步到slave上,slave无法同步到master上,为了避免master与slave上的数据不一致,slave上禁止对ldap信息的增删改操作,只允许查询操作。因为是单向的,故slave需要一些master的认证信息,以便从master同步数据

GX-BATCH-NN-02# vim syncrepl.ldif

文件内容:

# create new

dn: olcDatabase={1}hdb,cn=config

changetype: modify

add: olcSyncRepl

olcSyncRepl: rid=001

# LDAP server's URI

  provider=ldap://172.20.52.148:389/

  bindmethod=simple

# own domain name

  binddn="cn=Manager,dc=asiainfo,dc=com"

# directory manager's password

 credentials=Ldap@123

 searchbase="dc=asiainfo,dc=com"

# includes subtree

  scope=sub

 schemachecking=on

  type=refreshAndPersist

# [retry interval] [retry times] [interval of re-retry][re-retry times]

  retry="30 5 3003"

# replication interval

 interval=00:00:05:00

注意:一定要注意字体的颜色和上面一致,provider,bindmethod …… interval都是olcSyncRepl的属性值,不是与olcSyncRepl同级别,故其为红色。
GX-BATCH-NN-02# vim ldapadd -Y EXTERNAL -H ldapi:/// -f /ldif/syncrepl.ldif
执行完界面提示内容:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0

modifying entry "olcDatabase={1}hdb,cn=config


四、测试

1. 查看master/slave的监听端口
GX-BATCH-NN-01#netstat -tnlp | grep 389   #master

GX-BATCH-NN-02#netstat -tnlp | grep 389   #slave

命令执行完成界面提示
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      -                   
tcp        0      0 :::389     

2. slave 中查看当前ldap用户列表

GX-BATCH-NN-02#ldapsearch -x -b 'ou=People,dc=asiainfo,dc=com',就可以看到自动从master同步过来是数据


3. 在master新增/删除用户,确认是否同步。首先,在master上,准备增加用户的ldif脚本。

    脚本内容:

# create new

# replace to your own domain namefor "dc=***,dc=***" section

dn: uid=asiainfo,ou=People,dc=asiainfo,dc=com

objectClass: inetOrgPerson

objectClass: posixAccount

objectClass: shadowAccount

cn: ASIAINFO

sn: TEST

userPassword: {SSHA}c63ddiyMRaL2UjVtQZHBCu0fbdmX996F  #ssha加密后的值: suse

loginShell: /bin/bash

uidNumber: 1612

gidNumber: 1612

homeDirectory: /app11

 

dn: cn=asiainfo,ou=Group,dc=asiainfo,dc=com

objectClass: posixGroup

cn: ASIAINFO

gidNumber: 1612

memberUid:uid=asiainfo,ou=People,dc=asiainfo,dc=com

然后,在master上,导入ldif脚本:
GX-BATCH-NN-01# ldapadd -x -D cn=admin,dc=asiainfo,dc=com -W -f /tmp/ldap/ ldap_asiainfo-crm.ldif
执行完命令提示:
Adding new entry “uid=asiainfo,ou=People,dc=asiainfo,dc=com”
Adding new entry “cn=asiainfo,ou=Group,dc=asiainfo,dc=com”


在slave中查看是否同步完成

GX-BATCH-NN-02#ldapsearch -x -b 'ou=People,dc=asiainfo,dc=com'|grep asiainfo
执行完命令提示的内容里包含了uid=asiainfo:
# People, asiainfo.com
dn: ou=People,dc=asiainfo,dc=com
# asiainfo, People, asiainfo.com
dn: uid=asiainfo,ou=People,dc=asiainfo,dc=com
uid: asiainfo
到此表示主从同步完成。

你可能感兴趣的:(ldap,linux,hadoop)