今回は、ミラーモードを用いたOpenLDAPの冗長化を試してみました。
このミラーモードを用いると、冗長化しているどちらかのサーバに更新をかけは場合でも、もう一方のサーバにその更新が反映されるようになります。

はじめにOpenLDAPの設定ですが、ミラーモードのマルチマスター的使用方法の記事が大変良くまとまっており、参考にしながら、簡単に実現できました。

また、OpenLDAPのインストールはCentOS6.2のログインユーザー(認証)をOpenLDAPで管理(OpenLDAP編)の記事を前提としています。

具体的な設定は下記となります。

▼ Server 1

# cat /etc/openldap/slapd.conf
...
moduleload      syncprov.la

overlay syncprov

serverID 1

syncrepl rid=001
  provider=ldap://ha-a
  bindmethod=simple
  binddn="cn=Manager,dc=suz-lab,dc=com"
  credentials=secret
  searchbase="dc=suz-lab,dc=com"
  schemachecking=on
  type=refreshAndPersist
  retry="10 +"

syncrepl rid=002
  provider=ldap://ha-b
  bindmethod=simple
  binddn="cn=Manager,dc=suz-lab,dc=com"
  credentials=secret
  searchbase="dc=suz-lab,dc=com"
  schemachecking=on
  type=refreshAndPersist
  retry="10 +"

mirrormode on

▼ Server 2

# cat /etc/openldap/slapd.conf
...
moduleload      syncprov.la

overlay syncprov

serverID 2

syncrepl rid=001
  provider=ldap://ha-a
  bindmethod=simple
  binddn="cn=Manager,dc=suz-lab,dc=com"
  credentials=secret
  searchbase="dc=suz-lab,dc=com"
  schemachecking=on
  type=refreshAndPersist
  retry="10 +"

syncrepl rid=002
  provider=ldap://ha-b
  bindmethod=simple
  binddn="cn=Manager,dc=suz-lab,dc=com"
  credentials=secret
  searchbase="dc=suz-lab,dc=com"
  schemachecking=on
  type=refreshAndPersist
  retry="10 +"

mirrormode on

上記の設定を行い、OpenLDAPを再起動することで、ミラーモードが開始されます。

それでは、動作確認になります。
尚、初期状態は下記の通りです。

# ldapsearch -x -LLL -D "cn=Manager,dc=suz-lab,dc=com" -W -b "ou=user,dc=suz-lab,dc=com"
Enter LDAP Password:
dn: ou=user,dc=suz-lab,dc=com
objectClass: organizationalUnit
ou: user

次はServer1にてsuzuki1を追加してみます。

# cat suzuki1.ldif
dn: uid=suzuki1,ou=user,dc=suz-lab,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
uid: suzuki1
cn: suzuki1
uidNumber: 2001
gidNumber: 2000
homeDirectory: /home/suzuki1
loginShell: /bin/bash
userPassword: suzuki1

# ldapadd -x -D "cn=Manager,dc=suz-lab,dc=com" -w secret -f suzuki1.ldif
adding new entry "uid=suzuki1,ou=user,dc=suz-lab,dc=com"

# ldapsearch -x -LLL -D "cn=Manager,dc=suz-lab,dc=com" -W -b "ou=user,dc=suz-lab,dc=com"
Enter LDAP Password:
dn: ou=user,dc=suz-lab,dc=com
objectClass: organizationalUnit
ou: user

dn: uid=suzuki1,ou=user,dc=suz-lab,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
uid: suzuki1
cn: suzuki1
uidNumber: 2001
gidNumber: 2000
homeDirectory: /home/suzuki1
loginShell: /bin/bash
userPassword:: c3V6dWtpMQ==

Server2で確認すると、suzuki1の追加が反映していることがわかります。

# ldapsearch -x -LLL -D "cn=Manager,dc=suz-lab,dc=com" -W -b "ou=user,dc=suz-lab,dc=com"
Enter LDAP Password:
dn: ou=user,dc=suz-lab,dc=com
objectClass: organizationalUnit
ou: user

dn: uid=suzuki1,ou=user,dc=suz-lab,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
uid: suzuki1
cn: suzuki1
uidNumber: 2001
gidNumber: 2000
homeDirectory: /home/suzuki1
loginShell: /bin/bash
userPassword:: c3V6dWtpMQ==

次は、Server2でsuzuki2を追加してみます。

# cat suzuki2.ldif
dn: uid=suzuki2,ou=user,dc=suz-lab,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
uid: suzuki2
cn: suzuki2
uidNumber: 2002
gidNumber: 2000
homeDirectory: /home/suzuki2
loginShell: /bin/bash
userPassword: suzuki2

# ldapadd -x -D "cn=Manager,dc=suz-lab,dc=com" -w secret -f suzuki2.ldif
adding new entry "uid=suzuki2,ou=user,dc=suz-lab,dc=com"

# ldapsearch -x -LLL -D "cn=Manager,dc=suz-lab,dc=com" -W -b "ou=user,dc=suz-lab,dc=com"
Enter LDAP Password:
dn: ou=user,dc=suz-lab,dc=com
objectClass: organizationalUnit
ou: user

dn: uid=suzuki1,ou=user,dc=suz-lab,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
uid: suzuki1
cn: suzuki1
uidNumber: 2001
gidNumber: 2000
homeDirectory: /home/suzuki1
loginShell: /bin/bash
userPassword:: c3V6dWtpMQ==

dn: uid=suzuki2,ou=user,dc=suz-lab,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
uid: suzuki2
cn: suzuki2
uidNumber: 2002
gidNumber: 2000
homeDirectory: /home/suzuki2
loginShell: /bin/bash
userPassword:: c3V6dWtpMg==

Server1で確認しても、同様にsuzuki2が追加されていることがわかります。

# ldapsearch -x -LLL -D "cn=Manager,dc=suz-lab,dc=com" -W -b "ou=user,dc=suz-lab,dc=com"
Enter LDAP Password:
dn: ou=user,dc=suz-lab,dc=com
objectClass: organizationalUnit
ou: user

dn: uid=suzuki1,ou=user,dc=suz-lab,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
uid: suzuki1
cn: suzuki1
uidNumber: 2001
gidNumber: 2000
homeDirectory: /home/suzuki1
loginShell: /bin/bash
userPassword:: c3V6dWtpMQ==

dn: uid=suzuki2,ou=user,dc=suz-lab,dc=com
objectClass: top
objectClass: posixAccount
objectClass: account
uid: suzuki2
cn: suzuki2
uidNumber: 2002
gidNumber: 2000
homeDirectory: /home/suzuki2
loginShell: /bin/bash
userPassword:: c3V6dWtpMg==

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら