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コマンドを実行すると、同期が行われ、メインサーバーからのデータベースがブランチサーバーに流されるため、同期後にベースは同じになります。



ありがとう



All Articles