LDAPレプリケーション

複数のサーバー間でOpenLDAPレプリケーションを構成する方法について簡単なメモを書きたいと思います。 だから...

与えられた:
1.支社を持つ組織。 メインオフィスと各ブランチには、ユーザーログイン/パスワードを保存するLDAPサーバーがあります。

チャレンジ:
本社と支社の間に「単一の名前空間」があること、つまり、すべてのLDAPサーバーが他のすべての支社と本社のログイン/パスワードを「知っている」ことを確認してください。

解決策:
1. Linuxのインストール、OpenLDAP、OpenVPNの構成について説明しません(本社と支店はOpenVPNを介して接続されます)。 インストールおよび構成済みであると想定しています。
2. 3つのサーバーがあります。 主なものは192.168.1.1で、2つのブランチはそれぞれ192.168.1.2と192.168.1.3です。 それらはすべてOpenVPNを介して互いに接続されています。

2. OpenLDAPを構成します。 本社(192.168.1.1)では、必要なすべてのログイン/パスワードがLDAPに入力されます。

メインサーバーのslapd.confファイルで、とりわけ、最初に行ServerID 001を追加します。これはサーバー識別子です。
行moduleload syncprov.laのコメントを解除する必要があります。 これは、同期モジュールをロードするために実行する必要があります。

ブランチサーバーのslapd.confファイルでは、特に、最初にそれぞれServerID 002行とServerID 003行を追加する必要があります。 これはサーバー識別子であり、行moduleload syncprov.laのコメントを外します。 これは、同期モジュールをロードするために実行する必要があります。

次。 ファイルslapd-hdb-db01.conf(データベース自体の構成ファイル)で、データベースタイプの説明、データベースストレージディレクトリなどの後に、次の行を追加します。

#これはメインサーバーです。 アドレスは192.168.1.1です。 そして、そのような行を各サーバーに追加する必要があります(つまり、残りのブランチの行をメインサーバーファイルに追加する必要があります)。

#サーバー192.168.1.2のベース
syncrepl rid = 000
provider = ldap://192.168.1.2#ブランチサーバーのアドレス
type = refreshAndPersist#更新タイプ。 コンシューマとサプライヤを接続した後、同期が発生し、同期の終了時に通信が維持されます。 つまり、接続は永続的です
retry = "60 20 300 +"#接続を再試行します。 ここでは、20回の試行のために毎分再接続します。 20回失敗した後-5分ごとに新しい再接続を行います。
searchbase = "dc = test-1、dc = office、dc = com"#サーバー間で同期されるディレクトリ(この場合、ディレクトリ全体)
scope = sub#検索の深さ。 この場合、検索ベースに対して相対的に低い領域全体。
bindmethod = simple
binddn = "cn = admin、dc = test-1、dc = office、dc = com"#同期が実行されるユーザー。 この場合、以下のディレクティブで説明されているadminとそのパスワードです。
資格情報= xxxxxxxxxx

#サーバー192.168.1.3のベース
syncrepl rid = 001
provider = ldap://192.168.1.3#ブランチサーバーのアドレス
type = refreshAndPersist#更新タイプ。 コンシューマとサプライヤを接続した後、同期が発生し、同期の終了時に通信が維持されます。 つまり、接続は永続的です
retry = "60 20 300 +"#接続を再試行します。 ここでは、20回の試行のために毎分再接続します。 20回失敗した後-5分ごとに新しい再接続を行います。
searchbase = "dc = test-1、dc = office、dc = com"#サーバー間で同期されるディレクトリ(この場合、ディレクトリ全体)
scope = sub#検索の深さ。 この場合、検索ベースに対して相対的に低い領域全体。
bindmethod = simple
binddn = "cn = admin、dc = test-1、dc = office、dc = com"#同期が実行されるユーザー。 この場合、以下のディレクティブで説明されているadminとそのパスワードです。
資格情報= xxxxxxxxxx

すべてのサーバーの説明の後、行を追加します
mirrormode TRUE#コアサーバーへの変更を記録します。 このディレクティブを含めないと、変更をLDAPディレクトリーに保存できません。
オーバーレイsyncprov
syncprov-checkpoint 100 1
syncprov-sessionlog 100

それぞれアドレスが192.168.1.2のサーバーの場合、同期に関連する行は次のようになります。

#サーバー192.168.1.1のベース
syncrepl rid = 000
provider = ldap://192.168.1.1#メインサーバーのアドレス
type = refreshAndPersist#更新タイプ。 コンシューマとサプライヤを接続した後、同期が発生し、同期の終了時に通信が維持されます。 つまり、接続は永続的です
retry = "60 20 300 +"#接続を再試行します。 ここでは、20回の試行のために毎分再接続します。 20回失敗した後-5分ごとに新しい再接続を行います。
searchbase = "dc = test-1、dc = office、dc = com"#サーバー間で同期されるディレクトリ(この場合、ディレクトリ全体)
scope = sub#検索の深さ。 この場合、検索ベースに対して相対的に低い領域全体。
bindmethod = simple
binddn = "cn = admin、dc = test-1、dc = office、dc = com"#同期が実行されるユーザー。 この場合、以下のディレクティブで説明されているadminとそのパスワードです。
資格情報= xxxxxxxxxx

#サーバー192.168.1.3のベース
syncrepl rid = 001
provider = ldap://192.168.1.3#ブランチサーバーのアドレス
type = refreshAndPersist#更新タイプ。 コンシューマとサプライヤを接続した後、同期が発生し、同期の終了時に通信が維持されます。 つまり、接続は永続的です
retry = "60 20 300 +"#接続を再試行します。 ここでは、20回の試行のために毎分再接続します。 20回失敗した後-5分ごとに新しい再接続を行います。
searchbase = "dc = test-1、dc = office、dc = com"#サーバー間で同期されるディレクトリ(この場合、ディレクトリ全体)
scope = sub#検索の深さ。 この場合、検索ベースに対して相対的に低い領域全体。
bindmethod = simple
binddn = "cn = admin、dc = test-1、dc = office、dc = com"#同期が実行されるユーザー。 この場合、以下のディレクティブで説明されているadminとそのパスワードです。
資格情報= xxxxxxxxxx

オーバーレイsyncprov
syncprov-checkpoint 100 1
syncprov-sessionlog 100

サーバー192.168.1.3の場合:
#サーバー192.168.1.1のベース
syncrepl rid = 000
provider = ldap://192.168.1.1#メインサーバーのアドレス
type = refreshAndPersist#更新タイプ。 コンシューマとサプライヤを接続した後、同期が発生し、同期の終了時に通信が維持されます。 つまり、接続は永続的です
retry = "60 20 300 +"#接続を再試行します。 ここでは、20回の試行のために毎分再接続します。 20回失敗した後-5分ごとに新しい再接続を行います。
searchbase = "dc = test-1、dc = office、dc = com"#サーバー間で同期されるディレクトリ(この場合、ディレクトリ全体)
scope = sub#検索の深さ。 この場合、検索ベースに対して相対的に低い領域全体。
bindmethod = simple
binddn = "cn = admin、dc = test-1、dc = office、dc = com"#同期が実行されるユーザー。 この場合、以下のディレクティブで説明されているadminとそのパスワードです。
資格情報= xxxxxxxxxx

#サーバー192.168.1.2のベース
syncrepl rid = 001
provider = ldap://192.168.1.2#ブランチサーバーのアドレス
type = refreshAndPersist#更新タイプ。 コンシューマとサプライヤを接続した後、同期が発生し、同期の終了時に通信が維持されます。 つまり、接続は永続的です
retry = "60 20 300 +"#接続を再試行します。 ここでは、20回の試行のために毎分再接続します。 20回失敗した後-5分ごとに新しい再接続を行います。
searchbase = "dc = test-1、dc = office、dc = com"#サーバー間で同期されるディレクトリ(この場合、ディレクトリ全体)
scope = sub#検索の深さ。 この場合、検索ベースに対して相対的に低い領域全体。
bindmethod = simple
binddn = "cn = admin、dc = test-1、dc = office、dc = com"#同期が実行されるユーザー。 この場合、以下のディレクティブで説明されているadminとそのパスワードです。
資格情報= xxxxxxxxxx

オーバーレイsyncprov
syncprov-checkpoint 100 1
syncprov-sessionlog 100

すべてのようです。

PSしたがって、インターネットが正常に機能している場合、すべてのLDAPサーバーは同じデータベースを使用します。 任意のサーバーでユーザーを作成/変更すると、そのユーザーに関する情報は他のサーバーですぐに変更されます。
この同期を持つ各サーバーはMAINです。 提出なし。
また、データベースがメインサーバー上に作成されている場合は、データベースをブランチに転送する必要はありません。 設定後、ブランチサーバーでservice slapd restartコマンドを実行すると、同期が行われ、メインサーバーからのデータベースがブランチサーバーに流されるため、同期後にベースは同じになります。

ありがとう

Source: https://habr.com/ru/post/J270635/


All Articles