share facebook facebook twitter menu hatena pocket slack

2012.06.18 MON

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

鈴木 宏康

WRITTEN BY 鈴木 宏康

今回は、ミラーモードを用いた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)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。