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