美文网首页
Centos6主机 ldap server 高可用部署

Centos6主机 ldap server 高可用部署

作者: yinkp001 | 来源:发表于2019-08-15 14:48 被阅读0次

    目的:实现ldap server的高可用,当主ldapserver宕机后,备的ldapserver可以正常提供服务。

    主机规划:

    host-10-1-236-51     master ldapserver

    host-10-1-236-52     slave  ldapserver

    Master ldap部署

    1.1 master ldap安装

    yum install -y openldap openldap-servers openldap-clients openldap-devel

    1.2 master ldap配置

     cd /etc/openldap/

    cp /usr/share/openldap-servers/slapd.conf.obsolete ./slapd.conf

    创建密文密码:

     slappasswd

    New password:123456

    Re-enter new password:123456

    输入两次明文密码,然后会生成一个密文密码。

     {SSHA}/nes94wRPNK2PND6DWDXzsSPfFXjQ3RH

    配置master ldapserver:

    vi  slap.conf:(加粗部分需要修改)

    #

    # See slapd.conf(5) for details on configuration options.

    # This file should NOT be world readable.

    #

    include         /etc/openldap/schema/corba.schema

    include         /etc/openldap/schema/core.schema

    include         /etc/openldap/schema/cosine.schema

    include         /etc/openldap/schema/duaconf.schema

    include         /etc/openldap/schema/dyngroup.schema

    include         /etc/openldap/schema/inetorgperson.schema

    include         /etc/openldap/schema/java.schema

    include         /etc/openldap/schema/misc.schema

    include         /etc/openldap/schema/nis.schema

    include         /etc/openldap/schema/openldap.schema

    include         /etc/openldap/schema/ppolicy.schema

    include         /etc/openldap/schema/collective.schema

    # Allow LDAPv2 client connections.  This is NOT the default.

    allow bind_v2

    loglevel        4095

    # Do not enable referrals until AFTER you have a working directory

    # service AND an understanding of referrals.

    #referral       ldap://root.openldap.org

    pidfile         /var/run/openldap/slapd.pid

    argsfile        /var/run/openldap/slapd.args

    # Load dynamic backend modules

    # - modulepath is architecture dependent value (32/64-bit system)

    # - back_sql.la overlay requires openldap-server-sql package

    # - dyngroup.la and dynlist.la cannot be used at the same time

    # modulepath /usr/lib/openldap

     modulepath /usr/lib64/openldap

    # moduleload accesslog.la

    # moduleload auditlog.la

    # moduleload back_sql.la

    # moduleload chain.la

    # moduleload collect.la

    # moduleload constraint.la

    # moduleload dds.la

    # moduleload deref.la

    # moduleload dyngroup.la

    # moduleload dynlist.la

    # moduleload memberof.la

    # moduleload pbind.la

    # moduleload pcache.la

    # moduleload ppolicy.la

    # moduleload refint.la

    # moduleload retcode.la

    # moduleload rwm.la

    # moduleload seqmod.la

    # moduleload smbk5pwd.la

    # moduleload sssvlv.la

    moduleload syncprov.la

    # moduleload translucent.la

    # moduleload unique.la

    # moduleload valsort.la

    # The next three lines allow use of TLS for encrypting connections using a

    # dummy test certificate which you can generate by running

    # /usr/libexec/openldap/generate-server-cert.sh. Your client software may balk

    # at self-signed certificates, however.

    TLSCACertificatePath /etc/openldap/certs

    TLSCertificateFile "\"OpenLDAP Server\""

    TLSCertificateKeyFile /etc/openldap/certs/password

    # Sample security restrictions

    #       Require integrity protection (prevent hijacking)

    #       Require 112-bit (3DES or better) encryption for updates

    #       Require 63-bit encryption for simple bind

    # security ssf=1 update_ssf=112 simple_bind=64

    # Sample access control policy:

    #       Root DSE: allow anyone to read it

    #       Subschema (sub)entry DSE: allow anyone to read it

    #       Other DSEs:

    #               Allow self write access

    #               Allow authenticated users read access

    #               Allow anonymous users to authenticate

    #       Directives needed to implement policy:

    # access to dn.base="" by * read

    # access to dn.base="cn=Subschema" by * read

    # access to *

    #       by self write

    #       by users read

    #       by anonymous auth

    #

    # if no access controls are present, the default policy

    # allows anyone and everyone to read anything but restricts

    # updates to rootdn.  (e.g., "access to * by * read")

    #

    # rootdn can always read and write EVERYTHING!

    # enable on-the-fly configuration (cn=config)

    database config

    access to *

            by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage

            by * none

    # enable server status monitoring (cn=monitor)

    database monitor

    access to *

            by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read

            by dn.exact="cn=root,dc=yinkp,dc=com" read

            by * none

    #######################################################################

    # database definitions

    #######################################################################

    database        bdb

    suffix          "dc=yinkp,dc=com"

    checkpoint      1024 15

    rootdn          "cn=root,dc=yinkp,dc=com"

    # Cleartext passwords, especially for the rootdn, should

    # be avoided.  See slappasswd(8) and slapd.conf(5) for details.

    # Use of strong authentication encouraged.

    # rootpw                secret

    # rootpw                {crypt}ijFYNcSNctBYg

    rootpw    {SSHA}/nes94wRPNK2PND6DWDXzsSPfFXjQ3RH

    # The database directory MUST exist prior to running slapd AND

    # should only be accessible by the slapd and slap tools.

    # Mode 700 recommended.

    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

    # master replia server start

    overlay syncprov

    syncprov-checkpoint 100 10

    syncprov-sessionlog 100


    1.3 master ldap操作&启动

    cd /var/lib/ldap

    cp /usr/share/openldap-servers/DB_CONFIG.example ./DB_CONFIG

    rm -rf /etc/openldap/slapd.d/*

    chown -R ldap:ldap /etc/openldap/slapd.d

    slaptest -u -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

    chown -R ldap:ldap /etc/openldap/slapd.d

    service slapd restart

    Slave ldap部署&同步数据

    2.1 slave ldap安装

    yum install -y openldap openldap-servers openldap-clients openldap-devel

    2.2 slave ldap配置

    vi slapd.conf

    #

    # See slapd.conf(5) for details on configuration options.

    # This file should NOT be world readable.

    #

    include         /etc/openldap/schema/corba.schema

    include         /etc/openldap/schema/core.schema

    include         /etc/openldap/schema/cosine.schema

    include         /etc/openldap/schema/duaconf.schema

    include         /etc/openldap/schema/dyngroup.schema

    include         /etc/openldap/schema/inetorgperson.schema

    include         /etc/openldap/schema/java.schema

    include         /etc/openldap/schema/misc.schema

    include         /etc/openldap/schema/nis.schema

    include         /etc/openldap/schema/openldap.schema

    include         /etc/openldap/schema/ppolicy.schema

    include         /etc/openldap/schema/collective.schema

    # Allow LDAPv2 client connections.  This is NOT the default.

    allow bind_v2

    loglevel        4095

    # Do not enable referrals until AFTER you have a working directory

    # service AND an understanding of referrals.

    #referral       ldap://root.openldap.org

    pidfile         /var/run/openldap/slapd.pid

    argsfile        /var/run/openldap/slapd.args

    # Load dynamic backend modules

    # - modulepath is architecture dependent value (32/64-bit system)

    # - back_sql.la overlay requires openldap-server-sql package

    # - dyngroup.la and dynlist.la cannot be used at the same time

    # modulepath /usr/lib/openldap

     modulepath /usr/lib64/openldap

    # moduleload accesslog.la

    # moduleload auditlog.la

    # moduleload back_sql.la

    # moduleload chain.la

    # moduleload collect.la

    # moduleload constraint.la

    # moduleload dds.la

    # moduleload deref.la

    # moduleload dyngroup.la

    # moduleload dynlist.la

    # moduleload memberof.la

    # moduleload pbind.la

    # moduleload pcache.la

    # moduleload ppolicy.la

    # moduleload refint.la

    # moduleload retcode.la

    # moduleload rwm.la

    # moduleload seqmod.la

    # moduleload smbk5pwd.la

    # moduleload sssvlv.la

    moduleload syncprov.la

    # moduleload translucent.la

    # moduleload unique.la

    # moduleload valsort.la

    # The next three lines allow use of TLS for encrypting connections using a

    # dummy test certificate which you can generate by running

    # /usr/libexec/openldap/generate-server-cert.sh. Your client software may balk

    # at self-signed certificates, however.

    TLSCACertificatePath /etc/openldap/certs

    TLSCertificateFile "\"OpenLDAP Server\""

    TLSCertificateKeyFile /etc/openldap/certs/password

    # Sample security restrictions

    #       Require integrity protection (prevent hijacking)

    #       Require 112-bit (3DES or better) encryption for updates

    #       Require 63-bit encryption for simple bind

    # security ssf=1 update_ssf=112 simple_bind=64

    # Sample access control policy:

    #       Root DSE: allow anyone to read it

    #       Subschema (sub)entry DSE: allow anyone to read it

    #       Other DSEs:

    #               Allow self write access

    #               Allow authenticated users read access

    #               Allow anonymous users to authenticate

    #       Directives needed to implement policy:

    # access to dn.base="" by * read

    # access to dn.base="cn=Subschema" by * read

    # access to *

    #       by self write

    #       by users read

    #       by anonymous auth

    #

    # if no access controls are present, the default policy

    # allows anyone and everyone to read anything but restricts

    # updates to rootdn.  (e.g., "access to * by * read")

    #

    # rootdn can always read and write EVERYTHING!

    # enable on-the-fly configuration (cn=config)

    database config

    access to *

            by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage

            by * none

    # enable server status monitoring (cn=monitor)

    database monitor

    access to *

            by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read

            by dn.exact="cn=root,dc=yinkp,dc=com" read

            by * none

    #######################################################################

    # database definitions

    #######################################################################

    database        bdb

    suffix          "dc=yinkp,dc=com"

    checkpoint      1024 15

    rootdn          "cn=root,dc=yinkp,dc=com"

    # Cleartext passwords, especially for the rootdn, should

    # be avoided.  See slappasswd(8) and slapd.conf(5) for details.

    # Use of strong authentication encouraged.

    # rootpw                secret

    # rootpw                {crypt}ijFYNcSNctBYg

    rootpw    {SSHA}/nes94wRPNK2PND6DWDXzsSPfFXjQ3RH

    # The database directory MUST exist prior to running slapd AND

    # should only be accessible by the slapd and slap tools.

    # Mode 700 recommended.

    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

    syncrepl rid=123

            provider=ldap://10.1.236.51:389

            type=refreshOnly

            interval=00:00:01:00

            searchbase="dc=yinkp,dc=com"

            scope=sub

            attrs="*"

            schemachecking=off

            bindmethod=simple

            binddn="cn=root,dc=yinkp,dc=com"

            credentials=123456

    2.3 slave ldap操作&启动

    cd /var/lib/ldap

    cp /usr/share/openldap-servers/DB_CONFIG.example ./DB_CONFIG

    rm -rf /etc/openldap/slapd.d/*

    chown -R ldap:ldap /etc/openldap/slapd.d

    slaptest -u -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

    chown -R ldap:ldap /etc/openldap/slapd.d

    service slapd restart

    2.4 同步系统用户到ldap

    在master ldap主机上进行操作:

    安装migrationtools 工具:

    yum install migrationtools -y

    配置migrationtools 工具:

    vi /usr/share/migrationtools/migrate_common.ph

    # Default DNS domain

    $DEFAULT_MAIL_DOMAIN = "yinkp.com";

    # Default base

    $DEFAULT_BASE = "dc=yinkp,dc=com";

    导出主机用户配置:

    cd /usr/share/migrationtools/

     ./migrate_base.pl > /tmp/base.ldif

     ./migrate_passwd.pl  /etc/passwd > /tmp/passwd.ldif

    ./migrate_group.pl  /etc/group > /tmp/group.ldif

    添加主机用户配置到ldap 

    ldapadd -x -D "cn=root,dc=yinkp,dc=com" -W -f /tmp/base.ldif

    ldapadd -x -D "cn=root,dc=yinkp,dc=com" -W -f /tmp/passwd.ldif

    ldapadd -x -D "cn=root,dc=yinkp,dc=com" -W -f /tmp/group.ldif

    同步系统用户到ldap:

    cat /etc/passwd >  testpwd.in

     /usr/share/migrationtools/migrate_passwd.pl testpwd.in >  testpwd.ldif

     ldapadd -x -D "cn=root,dc=asiainfo,dc=com" -w 123456 -f  testpwd.ldif

    注:因为ldap已经配置好了主备,所以只需要在master上进行加载,slave会主动从master上去拉对应变更内容,所以数据也就同步到了slave上。

    查看两个server是否都同步到了数据:

    ldapsearch -x -H ldap://host-10-1-236-51 -b "dc=yinkp,dc=com"

    ldapsearch -x -H ldap://host-10-1-236-52 -b "dc=yinkp,dc=com"

    如果有问题可以通过日志查看问题原因:

    ldap开启日志

    vi slapd.conf

    添加:

    loglevel        4095

    vi /etc/rsyslog.conf

    添加:

    local4.*                                                /var/log/openldap.log

    service rsyslog restart

    service slapd  restart

    相关文章

      网友评论

          本文标题:Centos6主机 ldap server 高可用部署

          本文链接:https://www.haomeiwen.com/subject/wfrzjctx.html