2012年4月30日月曜日

OpenLDAPの冗長化(ミラーモード)

スズキです。

ミラーモードを用いた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==

OpenLDAPサーバの冗長化が実現できたので、次はクライアント側の予定です。
--------
http://www.suz-lab.com

0 コメント: