はじめに
Ubuntuでの、OpenLDAP LDAPサーバーの冗長化の設定方法です。
本記事では、すでにLDAPサーバーが動作していることを前提に、LDAPサーバーのエントリを別のサーバに一方向で同期させる、レプリケーション機能を設定します。
なお、OpenLDAP では、データの同期元をプロバイダ、同期先をコンシューマといいます。以降ではその名称で記載しています。
プロバイダの設定
プロバイダ(同期元)での設定です。
OpenLDAP LDAPサーバーの冗長化に際し、すでにLDAPサーバが動作していることを本記事では前提としていて、そのすでに稼働しているLDAPサーバーをプロバイダとして設定します。
では、レプリケーションの設定手順です。
次の内容で mod_syncprov.ldif ファイルを作成します。
このファイル名は、後の手順で ldapadd実行時に指定しますので、その時に名前を合わせればファイル名はなんでも構いません。
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/ldap
olcModuleLoad: syncprov.la
olcModulePath には、syncprov.la があるパスを指定します。Ubuntuでは /usr/lib/ldap です。
次のコマンドを実行します。
ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif
次の内容で syncprov.ldif ファイルを作成します。
このファイル名は、後の手順で ldapadd実行時に指定しますので、その時に名前を合わせればファイル名はなんでも構いません。
dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100
次のコマンドを実行します。
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
これで、プロバイダ側の設定は完了です。
なお、このレプリケーション機能の設定では、コンシューマから TCP の389番ポートから接続してきます。その接続をファイアウォールで許可しておいてください。
ufw では次のコマンドで TCPの389番への接続を許可します。
ufw allow 389/tcp
コンシューマの設定
コンシューマ(同期先)での設定です。
OpenLDAP LDAPサーバーの冗長化に際し、すでにLDAPサーバが動作していることを本記事では前提としていて、すでに稼働しているLDAPサーバーは先の手順でプロバイダとして設定しました。
冗長化に際し、2台目となるLDAPサーバが必要なので、立ち上げてください。
DNSドメイン名やDN などは、LDAPサーバ(プロバイダ)と同じにして構築してください。
エントリについては、本記事の設定後に、プロバイダから同期されてきますので、設定不要です。
レプリケーションの設定です。
次の内容で syncrepl.ldif ファイルを作成します。
このファイル名は、後の手順で ldapadd実行時に指定しますのでファイル名はなんでも構いません。
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
provider=ldap://xx.xx.xx.xx:389/
bindmethod=simple
binddn="cn=admin,dc=xxxx,dc=xxx,dc=xxx"
credentials=XXXXX
searchbase="dc=xxxx,dc=xxx,dc=xxx"
scope=sub
schemachecking=on
type=refreshAndPersist
retry="30 5 300 3"
- type=refreshAndPersist
LDAPサーバ(プロバイダー)の 389/tcp への接続状態を維持し、エントリ変更をリアルタイムにプロバイダーへ反映する方式です。 - olcSyncRepl: rid=001
rid はLDAPサーバ(コンシューマ)の識別番号を 999以下の任意の値で指定します。複数LDAPサーバ(コンシューマ)を設定する場合は、重複しない値を設定してください。 - provider
xx.xx.xx.xx の箇所は、LDAPサーバ(プロバイダー)のアドレスを指定してください。 - binddn , searchbase
LDAPサーバ(プロバイダー)と同じ情報を設定してください。 - credentials
LDAPサーバ(プロバイダ)のLDAP管理者パスワードを指定してください。
コンシューマ側のパスワードではないことに注意してください。 - retry
レプリケーション失敗時のリトライ設定です。
[リトライ間隔(秒)] [リトライ回数] [リトライ回数試行後の再リトライまでの間隔(秒)] [再リトライ回数] の順に指定します。
次のコマンドを実行します。
ldapadd -Y EXTERNAL -H ldapi:/// -f syncrepl.ldif
これで、設定は完了です。
レプリケーションのテスト
コンシューマ側でldapに登録されているエントリを確認します。
例えば、次のような形式でコマンドを実行します。
ldapsearch -x -h localhost -b 'ou=people, dc=xxxx,dc=xxx,dc=xxx'
この状態で、プロバイダ側でエントリが登録されると、すぐにコンシューマ側にも反映されます。
上記のコマンドを実行して、確認してみてください。
なお、本記事でのレプリケーション機能の設定は、エントリの同期はプロバイダからコンシューマへの一方向です。
コンシューマ側でエントリを登録しようとしても出来ません。
LDAPクライアントの設定
すでにldapクライアントとしての設定は済んでいることとします。
/etc/nslcd.conf ファイルで、次のようにLDAPサーバの指定にプロバイダに加えて、コンシューマを追加します。
uri ldap://xx.xx.xx.xx ldap://yy.yy.yy.yy
設定を反映させます。
service nslcd restart
これで、設定は完了です。
参考
第20回 OpenLDAPの冗長化対策【2】 | gihyo.jp
LDAPサーバ間でのデータの同期をしよう! – 株式会社ネディア │ネットワークの明日を創る│群馬
Ubuntu 22.04 LTS : OpenLDAP : レプリケーション : Server World
コメント