LinuCレベル3 300試験の出題範囲「390.1 OpenLDAPのレプリケーション」の技術的内容についての解説をまとめました。
重要度 3 説明 OpenLDAPで利用可能なサーバのレプリケーションに習熟していること。 主要な知識範囲 レプリケーションの概念Open LDAPのレプリケーションの設定レプリケーション ログファイルの分析レプリカ ハブの理解LDAPの参照LDAP同期のレプリケーション 重要なファイル、
用語、ユーティリティマスターサーバとスレーブサーバ
マルチマスターレプリケーション
コンシューマー
レプリカハブ
ワンショットモード
referral
syncrepl
PULL型レプリケーションとPUSH型レプリケーション
refreshOnlyとrefreshAndPersist
replog

LDAPとは
LDAPについての説明は、以下のLinuCの公式記事にて説明されています。
LDAPは、「Lightweight Directory Access Protocol」の略で、階層型のディレクトリデータベースにアクセスするためのプロトコルです。ディレクトリサービスとは、ユーザ名やホスト名などの情報を管理することが目的となっており、複数のコンピュータでユーザ情報を一元管理したいという場合に利用します。たとえば、教育機関や企業などで複数のコンピュータがあり、ユーザも複数存在するというケースでよく利用されます。

LDAPは上記に記載の通り、ユーザー名やホスト名などの情報を一元管理するのに使われます。
OpenLDAPの概要
OpenLDAPについてもLDAP同様の記事にて以下のように説明されています。
「OpenLDAP」は、LDAPによるディレクトリサービスを提供するオープンソースソフトウェアです。1998年に開発が始まり、現在ではオープンソースのシステムで利用される事実上のLDAP標準ソフトウェアとなっています。
OpenLDAPは、LDAPサービスはもちろんのこと、LDAPを利用する上で非常に重要になるSASL認証への対応やレプリケーション機能など、数多くの機能を持っています。さまざまなソフトウェアとの連携にも対応しており、たとえばSambaと連携させてドメインコントローラを構築することもできます。

OpenLDAPはオープンソースのLDAPのソフトウェアです。
OpenLDAPはSASL認証やレプリケーション機能に対応おり、Sambaと連携させてドメインコントローラを構築することも可能です。
SASL認証とは
本記事の「390.1 OpenLDAPのレプリケーション」ではなくその次の出題範囲「390.2 ディレクトリの保護」の例題の解説からSASL詳細についての解説を引用します。
SASL(Simple Authentication and Security Layer)とは、認証やセキュリティに関する処理を行うためのフレームワークです。
SASLは、OpenLDAPやpostfixなど様々なソフトウェアに対応しており、LDAPでもSASL認証が利用できるようになっています。
SASL認証では、認証時にエントリ名とパスワードが暗号化がされます。そのため、SASL認証を利用することで認証のセキュリティを強化することができます。

SASLはSimple Authentication and Security Layerの略で、認証やセキュリティに関するフレームワークと説明できます。
レプリケーションとは
OpenLDAPでのレプリケーションについては以下のようにLinuC公式の例題の解説で説明されています。
OpenLDAPにおいて、保持するデータを他のサーバへ複製することをレプリケーションと呼びます。
(中略)
OpenLDAPのレプリケーションについては、以下で詳細が確認できます。
https://www.openldap.org/doc/admin24/replication.html

レプリケーションは、マスターサーバーのデータをスレーブサーバーに同期し、冗長性を確保することができる技術です。負荷分散する目的でも使用でき、障害にも強くなります。
レプリケーションは、OpenLDAPの重要な機能の1つで、データをマスターサーバからスレーブサーバへ同期が可能です。これにより冗長性が確保でき、負荷分散を実現できます。レプリケーションは、データの可用性と信頼性を向上させ、障害時にデータの喪失を防ぐのに役立ちます。


https://lpi.or.jp/news/event/docs/20191207_linuc300.pdf
slurpdデーモン
slurpdデーモンは、slapdが提供する複製サービスを支援するデーモンです。デーモンは、常駐プログラムのことで、システムのバックグラウンドで常に動作しているプログラムのことを指します。
slurpd(8) は、slapd が提供する複製サービスを支援する デーモンです。slurpd の役割は、マスターの slapd データベース に起きた変更を他の複製の slapd に配送することです。slurpd では、変更を送るときに複製の slapd がダウンしていたり 通信できない場合はどうするかといった心配もありません。 なぜなら slurpd は失敗した要求の再トライを自動的に処理する からです。slapd と slurpd は変更を記録する単純なテキスト ファイルをとおして情報をやりとりします。
slurpdデーモンはマスターサーバ上で動作し、LDAPサーバの更新履歴(レプリケーションログファイル)を読み取り、スレーブサーバに更新情報を送信する役割を担います。
slurpdデーモンの起動とオプション
slurpdデーモンは以下の書式のコマンドを実行して起動します。
/usr/local/libexec/slurpd [-d debug-level] [-f slapd-config-file] [-r slapd-replog-file] [-t temp-dir] [-o] [-k srvtab-file]
起動時に指定できるオプションの詳細は以下です。
オプション
-d debug-level
デバッグモードを debug-level にします。このオプションを指定すると、そのデバッグ指定が 0 であっても、 slurpd はフォークせず、起動した端末から切り離されません。 一般的な操作と状態のメッセージが debug-level の値に応じて出力されます。 debug-level はビットストリングとして扱われます。 その各ビットは それぞれ行ったデバッグ情報に対応しています。 詳しくは <ldap.h> を参照 してください。
-f slapd-config-fileslapd
設定ファイルを指定します。デフォルトは /usr/local/etc/openldap/slapd.conf です。
-r slapd-replog-file
slapd 複製ログファイルの名前を指定します。 通常、複製ログファイルの名前は、 slapd 設定ファイルから読み取ります。このファイルは read/write/execute アクセス権を制限したディレクトリにあるべきです。 オプション -r は、この設定ファイルの指定に優先します。 オプション -o とともに指定して、複製ログを「ワンショット」モードで処理できます。 たとえば、 slurpd が複製ログの処理でエラーに遭遇した場合、複製が失敗の原因を解決した後、 拒絶ファイルの名前を -r オプションの引数に指定してワンショットモードで slurpd を起動できます。
-o
「ワンショット」モードで起動します。通常、 slurpd は複数ログファイルを処理し、さらに複製エントリが追加されるのを監視します。 ワンショットモードにおいて、 slurpd は単一の複製ログフを処理して終了します。
-t temp-dir
slurpd は、複製ログを処理する前に、そのログを作業ディレクトリにコピーします。 このディレクトリの利用権は、read/write/execute アクセスを制限すべきです。 なぜなら一時ファイルに機密情報が含まれる可能性があるからです。 このオプションでは、この一時ファイルの置き場所を指定できます。 デフォルトは /usr/local/var/openldap-slurp です。
-k srvtab-file
複製側の slapd のためのキーを持った Kerberos srvtab ファイルのある場所を指定します。 この指定は、 slapd 設定ファイルに指定する replica ディレクティブの srvtab 引数に優先します。
syncrepl
syncreplは、slurpdから新たに置き換えられて使われる技術です。詳細な違いについてはLinuC公式サイトの記載を引用して紹介します。
slurpdによるレプリケーション
複製元をマスターサーバ、複製先をスレーブサーバと呼びます。
マスターサーバで行われた更新の情報をファイルに書き出し、これをslurpdが定期的にチェックして、スレーブサーバ側に反映します。
(OpenLDAP 2.4以降はsyncreplに置き換えられて、slurpdは利用できません)syncreplによるレプリケーション
複製元をプロバイダ、複製先をコンシューマ呼びます。
syncreplではコンシューマがプロバイダに接続して複製を行います。コンシューマがプロバイダのディレクトリを参照して、コンシューマ側で必要な更新処理を決めるため、プロバイダとコンシューマが持つ情報が異なっていた場合でも適切な複製が行われます。
syncreplは同期処理用のcookieを管理・交換することで、複製内容の状態を管理します。

LPI 300の資料にも以下のようにsyncreplの詳細が紹介されています。

https://lpi.or.jp/news/event/docs/20161016_01.pdf 47スライド
参考資料
本記事の作成のために参考にした資料を掲載します。

