Translated message

A translation of this page exists in English.

OpenLDAP を使用した RHEL6 での N-Way マルチマスターレプリケーションの設定

Solution In Progress - Updated -

Issue

OpenLDAP を使用した RHEL6 での N-Way マルチマスターレプリケーションの設定

Environment

  • Red Hat Enterprise Linux 6.2
  • Master-1/m1 および Master-2/m2 という 2 つのサーバー
  • Hostname: ldap1.example.org (Master-1)
  • Hostname: ldap2.example.org (Master-2)
  • Suffix: dc=example,dc=org
  • OpenLDAP のバージョン:
    • openldap-devel-2.4.23-20.el6.x86_64
    • openldap-2.4.23-20.el6.x86_64
    • openldap-clients-2.4.23-20.el6.x86_64
    • openldap-servers-2.4.23-20.el6.x86_64

解決策

  • 以下の手順では、OpenLDAP を使用して RHEL6.2 で N-Way マルチマスターレプリケーションを設定する手順を列挙します。上記を前提として、手順を説明します。
    環境

  • Master-1(m1) Server

    1. OpenLDAP サーバーパッケージをインストールします。

      # yum install openldap-servers 
      
    2. Openldap-servers をインストールすると、bdb の例が設定された slapd.conf テンプレートが作成されます。この例では、slapd.conf を
      cn=config 形式にします。cn=config は OpenLDAP 2.4 の新機能で、再起動せずに設定を動的に変更できます。 以下は、cn=config の使用を開始するために必要な最小限の slapd.conf です。

      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 bind_v2
      pidfile         /var/run/openldap/slapd.pid
      argsfile        /var/run/openldap/slapd.args
      
      #### Encrypting Connections 
      
      TLSCACertificateFile /etc/pki/tls/certs/cacert.crt
      TLSCertificateFile /etc/pki/tls/certs/ldap.crt
      TLSCertificateKeyFile /etc/pki/tls/certs/ldap.key
      
      ### Database Config###          
      database config
      rootdn "cn=admin,cn=config"
      rootpw config
      access to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
      
      ### Enable Monitoring
      database monitor
      # allow only rootdn to read the monitor
      access to *
              by dn.exact="cn=admin,cn=config" read
                  by * none
      
      • 次に、上述の設定を簡単に説明します。

      • 上記の設定には、必要なデフォルトのスキーマファイルが含まれています。必要なスキーマファイルのみを追加し、他のスキーマファイルを削除することもできます。

      • 上記の設定では、OpenSSL を使用して作成された自己署名 CA を使用して署名された証明書を使用します。TLS* 行をコメントアウトして暗号化を回避することも、/etc/pki/tls/certs/ディレクトリーで make sinners.pem を使用して自己署名証明書を作成することもできます。 Openssl を使用して CA を作成し、証明書に署名する方法については、以下の記事を参照してください。

        How do i configure CA and sign certificates using OpenSSL using Red Hat Enterprise Linux

      • cn=config データベースを定義しました。このデータベースの rootDN は cn=admin,cn=config で管理されており、この DN のパスワードは config です。

      • cn=monitor は、OpenLDAP データベース、接続、リクエストを監視するために定義されています。こちらも cn=admin,cn=config で管理されます。
    3. slapd.conf を cn=config 形式に変換します。

      • cn=config 形式を保存するために、slapd.d ディレクトリーを作成します。

        # mkdir /etc/openldap/slapd.d/
        
      • slaptest を使用して、slapd.conf を cn=config に変換します。

        # slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
        
      • ldap ユーザーに slapd.d ディレクトリーへの読み書きを許可します。

        # chown ldap.ldap /etc/openldap/slapd.d
        # chown ldap.ldap /etc/openldap/slapd.d/* -R
        # chmod 700 /etc/openldap/slapd.d
        
      • 証明書を使用している場合は、その証明書がユーザー ldap によって読み取り可能であることを確認してください。

        # chown ldap.ldap /etc/pki/tls/certs/cacert.crt
        # chown ldap.ldap /etc/pki/tls/certs/ldap.crt
        # chown ldap.ldap /etc/pki/tls/certs/ldap.key
        
    4. N-Way MMR を設定するまで、selinux を一時的に permissive モードに設定します。これは、cn=config データベースが ldapadd/modify/delete を使用して動的に変更される場合、データベースの変更を/etc/openldap/slapd.d に保存し直す方が適切であるためです。 現在、SELinux が Permissive に設定されているか、SELinux ポリシーを作成して書き込み操作を許可していない限り、SELinux の設定により、「slapd」プロセスで slapd.d ディレクトリーに書き込むことはできません。

    5. LDAP サーバーでホストする接尾辞と、接尾辞に使用するデータベースを定義する必要があります。今回は、berkely DB を使用します。
      以下は、使用する環境の bdb 定義です。

      1.  dn: olcDatabase=bdb,cn=config
      2.  objectClass: olcDatabaseConfig
      3.  objectClass: olcBdbConfig
      4.  olcDatabase: {1}bdb
      5.  olcSuffix: dc=example,dc=org
      6.  olcDbDirectory: /var/lib/ldap
      7.  olcRootDN: cn=Manager,dc=example,dc=org
      8.  olcRootPW: redhat
      9.  olcDbCacheSize: 1000
      10. olcDbCheckpoint: 1024 10
      11. olcDbIDLcacheSize: 3000
      12  olcDbConfig: set_cachesize 0 10485760 0
      13. olcDbConfig: set_lg_bsize 2097152
      14. olcDbConfig: set_lg_dir /var/tmp/bdb-log
      15. olcDbConfig: set_flags DB_LOG_AUTOREMOVE
      16. olcLimits: dn.exact="cn=Manager,dc=example,dc=org" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited
      17. olcDbIndex: uid pres,eq
      18. olcDbIndex: cn,sn,displayName pres,eq,approx,sub
      19. olcDbIndex: uidNumber,gidNumber eq
      20. olcDbIndex: memberUid eq
      21. olcDbIndex: objectClass eq
      22. olcDbIndex: entryUUID pres,eq
      23. olcDbIndex: entryCSN pres,eq
      24. olcAccess: to attrs=userPassword by self write by anonymous auth by dn.children="ou=admins,dc=example,dc=org" write  by * none
      25. olcAccess: to * by self write by dn.children="ou=admins,dc=example,dc=org" write by * read
      

      上記の bdb 定義の簡単な説明:

      • 1 行目から 5 行目では、DIT のバックエンドとして berkely Database (bdb) を使用することを、接尾辞として dc=example,dc=org を指定します。
      • 6 行目では bdb ファイルの保存先を指定します。
      • 7 ~ 8 行目では、接尾辞 dc=example,dc=org の rootdn (管理者) とパスワードを指定します。
      • 行 9 ~ 11 では、接尾辞に必要な db キャッシュサイズ、チェックポイント、および IDLcachesize を指定します。
        これらの属性の詳細は、OpenLDAP 管理者ガイドから取得できます。

      • 行 12 ~ 15 では、bdb をより適切に管理するために必要な Berkely DB 環境変数を指定します。この例では、
        bdb キャッシュサイズを 10MB、トランザクションログサイズを 2MB に設定し、トランザクションログは /var/tmp/bdb-log に保存し、必要なくなった場合にログが自動削除されるように設定しています。
        この設定により、ディスクがトランザクションログでいっぱいになるのを防ぐことができます。

      • 行 16 では roodn の制限を指定します。この例では、rootdn を無制限に設定しています。

      • 17 ~ 21 行目では、パフォーマンスを向上させるために必要なインデックスを定義しています。
      • 22~23 行目ではレプリケーションに必要なインデックスを定義しています。

      • 行 24 では、接尾辞のアクセス制御リストです。上記の例では、基本的な ACL が使用されており、userPassword 属性を自身で変更できます。
        anonymous は認証の必要があり、ou=admins,dc=example,dc=org で作成されたエントリーは変更できます。

      • 行 25 では、ou=admins,dc=example,dc=com の下に作成されたエントリーに、すべてのエントリーを変更/削除/作成する権限を指定します。
        attributes under "dc=example,dc=org".

    6. 上記の bdb 定義を cn=config の下に追加する前に、上記のトランザクションログディレクトリーを作成し、olcdbDirectory の下に記載されているディレクトリーが存在し、空であることを確認します。デフォルトでは、openldap-servers パッケージがインストールされると、/var/lib/ldap に DB_CONFIG ファイルが作成されます。cn=config で berkely db 環境変数を定義しているため、これを削除する必要があります。

          # mkdir /var/tmp/bdb-log
          # chown ldap.ldap /var/tmp/bdb-log
          # chmod 700 /var/tmp/bdb-log    
          # rm -rf /var/lib/ldap/*
          # chown ldap.ldap /var/lib/ldap
      
    7. slapd サービスを開始します。

      [root@ldap1 ldap]# service slapd start
      Starting slapd:                                            [  OK  ]
      
    8. ldapsearch を実行して、cn=config データベースにクエリーできるかどうかを確認します。出力は次のようになります。

      [root@ldap1 ~]# ldapsearch -x -b "cn=config" -D "cn=admin,cn=config" -w config -h localhost dn -LLL | grep -v ^$
      dn: cn=config
      dn: cn=schema,cn=config
      dn: cn={0}corba,cn=schema,cn=config
      dn: cn={1}core,cn=schema,cn=config
      dn: cn={2}cosine,cn=schema,cn=config
      dn: cn={3}duaconf,cn=schema,cn=config
      dn: cn={4}dyngroup,cn=schema,cn=config
      dn: cn={5}inetorgperson,cn=schema,cn=config
      dn: cn={6}java,cn=schema,cn=config
      dn: cn={7}misc,cn=schema,cn=config
      dn: cn={8}nis,cn=schema,cn=config
      dn: cn={9}openldap,cn=schema,cn=config
      dn: cn={10}ppolicy,cn=schema,cn=config
      dn: cn={11}collective,cn=schema,cn=config
      dn: cn={12}samba,cn=schema,cn=config
      dn: olcDatabase={-1}frontend,cn=config
      dn: olcDatabase={0}config,cn=config
      dn: olcDatabase={1}monitor,cn=config
      
    9. 上記の bdb 定義 (手順 6) を ldif ファイル bdb.ldif に保存し、それを cn=config データベースに追加します。

      [root@ldap1 kcs]# ldapadd -x -D "cn=admin,cn=config" -w config -f bdb.ldif -h localhost
      adding new entry "olcDatabase=bdb,cn=config"
      
      • 上記のコマンドを実行すると、/var/lib/ldap に bdb ファイルが作成され、ステップ 9 で定義した bdb 環境変数を含む DB_CONFIG ファイルも作成されるはずです。
    10. ldapsearch を実行して、cn=config データベースをクエリーできるかどうか、bdb 定義が定義どおりに表示されているかどうかを確認します。

      [root@ldap1 kcs]# ldapsearch -x -b "cn=config" -D "cn=admin,cn=config" -w config -h localhost dn -LLL | grep -v ^$
      dn: cn=config
      dn: cn=schema,cn=config
      dn: cn={0}corba,cn=schema,cn=config
      dn: cn={1}core,cn=schema,cn=config
      dn: cn={2}cosine,cn=schema,cn=config
      dn: cn={3}duaconf,cn=schema,cn=config
      dn: cn={4}dyngroup,cn=schema,cn=config
      dn: cn={5}inetorgperson,cn=schema,cn=config
      dn: cn={6}java,cn=schema,cn=config
      dn: cn={7}misc,cn=schema,cn=config
      dn: cn={8}nis,cn=schema,cn=config
      dn: cn={9}openldap,cn=schema,cn=config
      dn: cn={10}ppolicy,cn=schema,cn=config
      dn: cn={11}collective,cn=schema,cn=config
      dn: cn={12}samba,cn=schema,cn=config
      dn: olcDatabase={-1}frontend,cn=config
      dn: olcDatabase={0}config,cn=config
      dn: olcDatabase={1}monitor,cn=config
      dn: olcDatabase={2}bdb,cn=config
      
      [root@ldap1 kcs]# ldapsearch -x -b "cn=config" -D "cn=admin,cn=config" -w config -h localhost objectClass=olcBdbConfig -LLL
      
      dn: olcDatabase={2}bdb,cn=config
      objectClass: olcDatabaseConfig
      objectClass: olcBdbConfig
      olcDatabase: {2}bdb
      olcDbDirectory: /var/lib/ldap
      olcSuffix: dc=example,dc=org
      olcAccess: {0}to attrs=userPassword by self write by anonymous auth by dn.chil
       dren="ou=admins,dc=example,dc=com" write  by * none
       olcAccess: {1}to * by self write by dn.children="ou=admins,dc=example,dc=com" 
        write by * read
        olcLimits: {0}dn.exact="cn=Manager,dc=example,dc=org" time.soft=unlimited time
         .hard=unlimited size.soft=unlimited size.hard=unlimited
         olcRootDN: cn=Manager,dc=example,dc=org
         olcRootPW: redhat
         olcDbCacheSize: 1000
         olcDbCheckpoint: 1024 10
         olcDbConfig: {0}set_cachesize 0 10485760 0
         olcDbConfig: {1}set_lg_bsize 2097152
         olcDbConfig: {2}set_lg_dir /var/tmp/bdb-log
         olcDbConfig: {3}set_flags DB_LOG_AUTOREMOVE
         olcDbIDLcacheSize: 3000
         olcDbIndex: uid pres,eq
         olcDbIndex: cn,sn,displayName pres,eq,approx,sub
         olcDbIndex: uidNumber,gidNumber eq
         olcDbIndex: memberUid eq
         olcDbIndex: objectClass eq
         olcDbIndex: entryUUID pres,eq
         olcDbIndex: entryCSN pres,eq
      
    11. /var/lib/ldap ディレクトリーをチェックして、ファイルが適切な LDAP ユーザー権限で作成されていることを確認します。

      [root@ldap1 kcs]# ls -l /var/lib/ldap/
      total 1580
      -rw-r--r--. 1 ldap ldap     2048 Mar 24 10:03 alock
      -rw-------. 1 ldap ldap    24576 Mar 24 10:03 __db.001
      -rw-------. 1 ldap ldap   737280 Mar 24 10:03 __db.002
      -rw-------. 1 ldap ldap 13115392 Mar 24 10:03 __db.003
      -rw-------. 1 ldap ldap  2162688 Mar 24 10:03 __db.004
      -rw-------. 1 ldap ldap   753664 Mar 24 10:03 __db.005
      -rw-------. 1 ldap ldap    32768 Mar 24 10:03 __db.006
      -rw-r--r--. 1 ldap ldap      104 Mar 24 10:03 DB_CONFIG
      -rw-------. 1 ldap ldap     8192 Mar 24 10:03 dn2id.bdb
      -rw-------. 1 ldap ldap    32768 Mar 24 10:03 id2entry.bdb
      
    12. 接尾辞 dc=example,dc=org の基本的な DIT を作成します。以下は ldif データの例です

      dn: dc=example,dc=org
      objectClass: top
      objectClass: dcObject
      objectclass: organization
      o: Example Organization
      dc: Example
      description: LDAP Example
      
      dn: ou=People,dc=example,dc=org
      objectClass: organizationalUnit
      ou: People
      
      dn: ou=Groups,dc=example,dc=org
      objectClass: organizationalUnit
      ou: Groups
      
      dn: ou=Admins,dc=example,dc=org
      objectClass: organizationalUnit
      ou: Admins
      
      dn: uid=student1,ou=People,dc=example,dc=org
      uid: student1
      cn: student1
      sn: 1
      objectClass: top
      objectClass: posixAccount
      objectClass: inetOrgPerson
      loginShell: /bin/bash
      homeDirectory: /home/student1
      uidNumber: 14583100
      gidNumber: 14564100
      userPassword: {SSHA}j3lBh1Seqe4rqF1+NuWmjhvtAni1JC5A
      mail: student1@example.org
      gecos: Student1 User
      
      dn: uid=student2,ou=People,dc=example,dc=org
      uid: student2
      cn: student2
      sn: 2
      objectClass: top
      objectClass: posixAccount
      objectClass: inetOrgPerson
      loginShell: /bin/bash
      homeDirectory: /home/student2
      uidNumber: 14583101
      gidNumber: 14564100
      userPassword: {SSHA}j3lBh1Seqe4rqF1+NuWmjhvtAni1JC5A
      mail: student2@example.org
      gecos: Student2 User
      
      dn: cn=students,ou=Groups,dc=example,dc=org
      objectClass: posixGroup
      objectClass: top
      cn: ldapusers
      userPassword: {crypt}x
      gidNumber: 14564100
      memberuid: uid=student1
      memberuid: uid=student2
      
      dn: cn=replicator,ou=Admins,dc=example,dc=org
      cn: replicator
      sn: user
      objectClass: person
      userPassword: Secret123
      
    13. ldif ファイルに上記のデータを保存して、このデータを ldapadd コマンドを使用して追加し、接尾辞が "dc=example,dc=org" の rootdn である、ユーザー "cn=Manager,dc=example,dc=com" をバインドします。

      [root@ldap1 kcs]# ldapadd -x -D "cn=Manager,dc=example,dc=org" -w redhat -h localhost -f data1.ldif 
      adding new entry "dc=example,dc=org"
      adding new entry "ou=People,dc=example,dc=org"
      adding new entry "ou=Groups,dc=example,dc=org"
      adding new entry "ou=Admins,dc=example,dc=org"
      adding new entry "uid=student1,ou=People,dc=example,dc=org"
      adding new entry "uid=student2,ou=People,dc=example,dc=org"
      adding new entry "cn=students,ou=Groups,dc=example,dc=org"
      adding new entry "cn=replicator,ou=Admins,dc=example,dc=org"
      
    14. ステップ 1 からステップ 13 は Master-2(m2) システムで実行する必要があります。上記の手順がすべて正常に実行されるまでは、先に進まないでください。

レプリケーションの設定

  • 以下の手順では、syncrepl を使用して両方のマスターでレプリケーションを有効にします。以下のような手順を踏んでいきます。
    * 両方のマスターに syncprov モジュールをロードします。
    * cn=config データベースの syncrepl を設定します。
    * berkely データベース用 (dn: olcDatabase={2}bdb,cn=config) に syncrepl を設定します。

    1. レプリケーションを設定する前に、すべてのサーバーの時間が NTP を使用して厳密に同期されている必要があります。

    2. 両方のマスターに対して Syncprov モジュールを有効にします。cn=config 形式では、すべてのモジュールが cn=modules,cn=config と属性で指定されます。
      モジュールをロードするのは olcModuleLoad です。以下の内容を ldif ファイルに保存し、両方のマスターに追加します。

      dn: cn=module,cn=config
      objectClass: olcModuleList
      cn: module
      olcModuleLoad: syncprov.la
      
      [root@ldap1 mmr]# ldapadd -x -D "cn=admin,cn=config" -w config -f sync.ldif -h master1
      adding new entry "cn=module,cn=config"[root@ldap1 mmr]# ldapadd -x -D "cn=admin,cn=config" -w config -f sync.ldif -h master2
      adding new entry "cn=module,cn=config"
      
    3. cn=config データベースの syncrepl を設定しています。

      [root@ldap1 kcs]# cat config-repl.ldif
      #Specify ServerID for both the masters
      dn: cn=config
      changetype: modify
      add: olcServerID
      olcServerID: 101 ldap://ldap1.example.org
      olcServerID: 201 ldap://ldap2.example.org
      
      #Enable Syncprov Overlay for config database    
      dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
      changetype: add
      objectclass: olcOverlayConfig
      objectclass: olcSyncProvConfig
      olcOverlay: syncprov
      
      #Configure SyncRepl for config database
      dn: olcDatabase={0}config,cn=config
      changetype: modify
      add: olcSyncRepl
      olcSyncRepl: rid=001 provider=ldap://ldap1.example.org binddn="cn=admin,cn=config" bindmethod=simple credentials=config searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1
      olcSyncRepl: rid=002 provider=ldap://ldap2.example.org binddn="cn=admin,cn=config" bindmethod=simple credentials=config searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1
      -
      add: olcMirrorMode
      olcMirrorMode: TRUE
      

      上記データの簡単な説明

      • 上記の ldif ファイルでは、各マスターに一意の ServerID とプロバイダー (マスター) URI を指定します。
      • レプリケーション合意ごとに cn=config の
      • 一意の rid の syncprov オーバーレイを有効化します。

      Master-1 の cn=config で上記を実行します。

      [root@ldap1 kcs]# ldapmodify -x -D "cn=admin,cn=config" -w config -f config-repl.ldif -h ldap1.example.org
      modifying entry "cn=config"
      adding new entry "olcOverlay=syncprov,olcDatabase={0}config,cn=config"
      modifying entry "olcDatabase={0}config,cn=config 
      

      次に マスター 2 の cn=config で実行します。

      [root@ldap1 kcs]# ldapmodify -x -D "cn=admin,cn=config" -w config -f config-repl.ldif -h ldap2.example.org
      modifying entry "cn=config"
      adding new entry "olcOverlay=syncprov,olcDatabase={0}config,cn=config"
      modifying entry "olcDatabase={0}config,cn=config"
      
    4. olcSyncRepl ディレクティブ (ステップ 2) で指定された URL は、複製元のサーバーの URL です。
      これらは、slapd がリッスンする URL (コマンドラインオプションの -h) と正確に一致する必要があります。そうしないと、slapd が自身の複製を試み、ループが発生する可能性があります。

      • /etc/sysconfig/ldap Master-1 (ldap1.example.org) を編集して、-h と URL ldap1.example.org を指定して slapd を実行します。

        SLAPD_LDAP=no
        SLAPD_LDAPI=no
        SLAPD_LDAPS=no
        SLAPD_URLS="ldap://ldap1.example.org:389 ldaps://ldap1.example.org ldapi:///"
        
      • slapd サービスを再起動し、slapd プロセスを確認します。

        [root@ldap1 ~]# service slapd restart
        Stopping slapd:                                            [  OK  ]
        Starting slapd:                                            [  OK  ]
        
        [root@ldap1 ~]# ps aux | grep slapd 
        ldap      3350  0.3  0.2 327928  5844 ?        Ssl  10:20   0:00 /usr/sbin/slapd -h ldap://ldap1.example.org:389 ldaps://ldap1.example.org ldapi:/// -u ldap
        root      3358  0.0  0.0 103228   808 pts/1    S+   10:21   0:00 grep slapd
        
      • Master-2 (ldap2.example.org) の/etc/sysconfig/ldap を変更して、-h および URL ldap2.example.org を指定して、slapd を実行します。

        [root@ldap2 ~]# cat /etc/sysconfig/ldap  | grep -v ^$ | grep -v ^#
        SLAPD_LDAP=no
        SLAPD_LDAPI=no
        SLAPD_LDAPS=no
        SLAPD_URLS="ldap://ldap2.example.org:389 ldaps://ldap2.example.org ldapi:///"[root@ldap2 ~]# service slapd restart
        Stopping slapd:                                            [  OK  ]
        Starting slapd:                                            [  OK  ]
        
        [root@ldap2 ~]# ps aux | grep slapd
        ldap      2348  0.0  0.3 302176  6804 ?        Ssl  10:27   0:00 /usr/sbin/slapd -h ldap://ldap2.example.org:389 ldaps://ldap2.example.org ldapi:/// -u ldap
        root      2356  0.0  0.0 103228   812 pts/1    S+   10:27   0:00 grep slapd
        
    5. 接尾辞 dc=example,dc=org をホストする berkely matabase の syncrepl を設定します。

      [root@ldap1 kcs]# cat bdb-repl.ldif 
      dn: olcDatabase={2}bdb,cn=config
      changetype: modify
      add: olcSyncRepl
      olcSyncRepl: rid=003 provider=ldap://ldap1.example.org binddn="cn=replicator,ou=Admins,dc=example,dc=org" bindmethod=simple credentials=Secret123 searchbase="dc=example,dc=org" type=refreshAndPersist retry="5 5 5 +" timeout=3
      olcSyncRepl: rid=004 provider=ldap://ldap2.example.org binddn="cn=replicator,ou=Admins,dc=example,dc=org" bindmethod=simple credentials=Secret123 searchbase="dc=example,dc=org" type=refreshAndPersist retry="5 5 5 +" timeout=3
      -
      add: olcMirrorMode
      olcMirrorMode: TRUE
      
      dn: olcOverlay=syncprov,olcDatabase={2}bdb,cn=config
      changetype: add
      objectClass: olcOverlayConfig
      objectClass: olcSyncProvConfig
      olcOverlay: syncprov
      

      上記データの簡単な説明

      * We create syncrepl agreement specifying the rid for each agreement.
      * binddn used for the replication should have appropriate rights to add/modify/delete the entries
      
      • Master-1 の olcDatabase={2}bdb,cn=config で上記を実行します。

        [root@ldap1 kcs]# ldapmodify -x -D "cn=admin,cn=config" -w config -f bdb-repl.ldif -h ldap1.example.org
        modifying entry "olcDatabase={2}bdb,cn=config"
        adding new qentry "olcOverlay=syncprov,olcDatabase={2}bdb,cn=config"
        
      • cn=config の syncrepl を作成したので、上記は Master-2 (ldap2.example.org) に複製される必要があります。

    6. Master-1 に追加するサンプルのユーザー情報を作成し、Master-2 に複製されるかどうかを確認します。

      [root@ldap1 kcs]# cat newuser.ldif 
      dn: uid=student3,ou=People,dc=example,dc=org
      uid: student3
      cn: student3
      sn: 3
      objectClass: top
      objectClass: posixAccount
      objectClass: inetOrgPerson
      loginShell: /bin/bash
      homeDirectory: /home/student3
      uidNumber: 14583102
      gidNumber: 14564100
      userPassword: {SSHA}j3lBh1Seqe4rqF1+NuWmjhvtAni1JC5A
      mail: student3@example.org
      gecos: Student3 User
      

    Master-1 (ldap1.example.org) にユーザーを追加します。

        [root@ldap1 kcs]# ldapadd -x -D "cn=replicator,ou=admins,dc=example,dc=org" -w Secret123 -f newuser.ldif -h ldap1.example.org
        adding new entry "uid=student3,ou=People,dc=example,dc=org"
    

    ユーザー Student3 を両方のマスターにレプリケートする必要があります

        [root@ldap1 kcs]# ldapsearch -LLL -x -b "ou=People,dc=example,dc=org" -D "cn=replicator,ou=admins,dc=example,dc=org" -w Secret123  uid=student3 -h ldap2.exampl
        e.org                                                                                                                                                          
        dn: uid=student3,ou=People,dc=example,dc=org
        uid: student3
        cn: student3
        sn: 3
        objectClass: top
        objectClass: posixAccount
        objectClass: inetOrgPerson
        loginShell: /bin/bash
        homeDirectory: /home/student3
        uidNumber: 14583102
        gidNumber: 14564100
        userPassword:: e1NTSEF9ajNsQmgxU2VxZTRycUYxK051V21qaHZ0QW5pMUpDNUE=
        mail: student3@example.org
        gecos: Student3 User
    

参考資料

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content