ミラーモードで2つのホストを使用してOpenLDAPを設定する方法

OpenLDAPは、OpenLDAPプロジェクトによって開発されたライトウェイトディレクトリアクセスプロトコル(LDAP)の無料のオープンソース実装です。 つまり、ファイルとディレクトリの階層を使用して、一元化された場所から関連情報を管理するためのプロトコルです。

これは、特定の方法でリレーショナルデータベースと同じように機能し、あらゆる種類の情報を整理および保存するために使用できます。 LDAPは、一般的に集中認証に使用されます。 この記事では、ミラーモードで2つのホストを使用するOpenLDAP構成について検討します。

OpenLDAPには3つの主要なコンポーネントがあります。

–slapd –スタンドアロンLDAPデーモンおよび関連するモジュールとツール
-LDAPプロトコルと基本符号化規則を実装するライブラリ
-クライアントソフトウェア:ldapsearch、ldapadd、ldapdeleteなど。

始める前に

LDAPは、電子メールやその他のプログラムがサーバーから連絡先情報を検索するために使用するインターネットプロトコルです。 OpenLDAPパブリックライセンスの下でリリースされ、すべての主要なLinuxディストリビューション、AIX、Android、HP-UX、OS X、Solaris、Windows、およびz / OSで使用できます。

LDAPは情報の保存に限定されず、ユーザーの1つのパスワードが多くのサービス間で共有される「シングルサインオン」のバックエンドデータベースとしても使用されます。 このチュートリアルでは、CentOS6.8にミラーモードレプリケーションと一緒にOpenLDAPをインストールして設定します。

1)Openldapのインストール

CentOSおよびRedHatでは、以下に示すようにyum installを使用して、openldap関連のパッケージをインストールします。

yum -y install openldap openldap-servers openldap-clients

-yフラグ–プロンプトが表示されたらyesと見なします
openldap-servers –これはメインのLDAPサーバーです
openldap-clients –これには必要なすべてのLDAPクライアントユーティリティが含まれています
openldap –このパッケージにはLDAPサポートライブラリが含まれています

ノート: Web UIの場合、phpldapadminパッケージをインストールする必要があります。 httpdデーモンがすでにマシンにインストールされていることを前提としています。 そうでない場合は、WebUIにアクセスするためにインストールしてください。

phpLDAPadmin(PLAとも呼ばれます)は、WebベースのLDAPクライアントです。 LDAPサーバーをどこからでも簡単にアクセスできる多言語管理を提供します。

その階層的なツリービューアと高度な検索機能により、LDAPディレクトリを直感的に参照および管理できます。 これはWebアプリケーションであるため、このLDAPブラウザーは多くのプラットフォームで動作し、LDAPサーバーをどこからでも簡単に管理できるようにします。

結論として、phpLDAPadminは、LDAPの専門家と初心者の両方にとって完璧なLDAPブラウザです。 そのユーザーベースは、主にLDAP管理の専門家で構成されています。 これをインストールするには、次のコマンドを実行する必要があります。

yum -y install phpldapadmin

2)Ldap構成

まず、/ etc / openldap /ldap.confファイルを更新します。 ldap.conf構成ファイルは、ldapクライアントの実行時に適用されるシステム全体のデフォルトを設定するために使用されます。 ユーザーは、システム全体のデフォルトファイルを上書きするために使用されるオプションの構成ファイルldaprcまたは.ldaprcをホームディレクトリに作成できます。

基本的な設定では、BASEとURIの2つのパラメーターのみを変更する必要があります。 都合の良いときに任意のエディターを使用できます。 これで example viを使用します。

vi /etc/openldap/ldap.conf
BASE dc=example,dc=com
URI ldap://localhost

BASE –LDAP操作を実行するときに使用するデフォルトのベースDNを指定します。 ベースは、LDAP形式の識別名として指定する必要があります。

URI-LDAPライブラリが接続するLDAPサーバーのURIを指定します。 URIスキームは、ldap、ldaps、またはldapiのいずれかであり、それぞれLDAP over TCP、LDAP over SSL(TLS)、およびLDAP over IPC(Unixドメインソケット)を参照します。 各サーバーの名前は、ドメインスタイルの名前またはIPアドレスリテラルとして指定できます。 オプションで、サーバー名の後に「:」とLDAPサーバーがリッスンしているポート番号を続けることができます。 ポート番号が指定されていない場合は、スキームのデフォルトのポートが使用されます(ldap://の場合は389、ldaps://の場合は636)。 LDAP over IPCの場合、nameはソケットの名前であり、ポートは不要であり、許可されていません。次に、slapd.conf.obsoleteファイルを/ etc / openldap /ディレクトリにコピーする必要があります。

後で、このファイルを更新します。

cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

slapd.confファイルは、グローバル、バックエンド固有、およびデータベース固有の3種類の構成情報で構成されています。 最初にグローバル情報が指定され、次に特定のバックエンドタイプに関連付けられた情報が指定され、次に特定のデータベースインスタンスに関連付けられた情報が続きます。 グローバルディレクティブはバックエンドおよび/またはデータベースディレクティブでオーバーライドでき、バックエンドディレクティブはデータベースディレクティブでオーバーライドできます。
‘#’文字で始まる空白行とコメント行は無視されます。 行が空白で始まる場合、前の行の続きと見なされます(前の行がコメントであっても)。

注:この手順はオプションです。

OpenLDAPのアドバイスは、他の構成属性またはslapd.confディレクティブよりもDB_CONFIGを使用することであるように思われます。 これが可能な場合は、各ディレクティブに記載されています。

DB_CONFIGファイルを使用するかどうかの決定は簡単です。パフォーマンスが気になる場合は、それを使用してください。 あなたが気にしないなら-それを忘れてください。 ただし、DB_CONFIGを使用しないことを選択した場合は、チェックポイントディレクティブを使用する必要があります。 OpenLDAPのアドバイスは、slapd.confを介してパラメータを渡すのではなく、DB_CONFIGを使用することであるように思われます。

cp /usr/share/openldap-servers/DB_CONFIG.example /etc/openldap/DB_CONFIG

次に、slappasswdコマンドを使用してLDAPルートパスワードを生成する必要があります。 単に実行します:

slappasswd

Slappasswdは、での使用に適したuserPassword値を生成するために使用されます ldapmodifyslapd.conf rootpw構成ディレクティブまたは slapd-config olcRootPW構成ディレクティブ。 コマンドを実行してパスワードの入力を求めると、SSHAパスワードが表示されます。 この記事では、このrootパスワードを使用します。 したがって、これをメモして脇に置いておきます。

次に、生成したDNとパスワードを使用して/etc/openldap/slapd.confファイルを修正する必要があります。 基本的に、ドメイン名が必要な2つの行があります。

vi /etc/openldap/slapd.conf

「データベース定義」セクションに移動し、サフィックスとrootdnをDNで更新し、rootpwの横に完全なSSHAパスワードを貼り付けます

suffix "dc=example,dc=com"
rootdn "cn=manager,dc=example,dc=com"
rootpw {SSHA}gHuk69PP7Hxh4mglbRdkg47GQrfBhlt6

次のステップでは、/ etc / phpldapadmin /config.phpファイルを修正してWebGUIにアクセスします。 次の行を見つけて、次のように更新してください。

// $servers->setValue('login','attr','dn');
$servers->setValue('login','attr','uid');
→
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');

ここでは、ログイン時に使用する属性を指定しています。デフォルトでは、phpLDAPadminはuid = usernameを検索します(usernameとしてログインした場合)。 空白のままにするか、先ほどのように「dn」を指定すると、phpLDAPadminは完全なDN(slapd.confで提供したもの)を使用します。

また、次の行のコメントを解除して、IPアドレスを追加してください。

$servers->setValue('server','host','127.0.0.1');

phpLDAPadmin Web UIにアクセスするために最後に行う必要があるのは、/ etc / httpd / conf.d / phpldapadmin.confファイルを更新して、WebUIへの接続が許可されているIPアドレスを一覧表示することです。 デフォルトでは、ファイルは次のようになります。

#
# Web-based tool for managing LDAP servers
#
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1

そうでない場合は、上記のように更新してください。

3)テストして実行する

次のコマンドセットを実行して、構成の完全なテストを実行してください。

rm -rf /etc/openldap/slapd.d/*
chown -R ldap. /etc/openldap/slapd.d/
chown -R ldap. /var/lib/ldap/
slaptest -u 
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/

テストが正常に実行された場合は、次の手順に進んでください–システム起動時のサービスの自動開始とLDAPサービスの開始に対してLDAPを有効にする

chkconfig slapd on
service httpd restart 
service slapd restart

LDAPがnetstatコマンドで実行されているかどうかを確認できます。

netstat -antup | grep -i 389

次に、LDAPにいくつかのオブジェクトを作成する必要があります。 次の内容の.ldifファイルをいくつか作成してください。

Organization.ldif
dn: dc=example,dc=com
dc: corp
o: corp
objectclass: dcObject
objectclass: organization

Department.ldif 
dn: ou=department,dc=example,dc=com
objectclass: organizationalUnit
objectclass: top
ou: hadoop

Groups.ldif
dn: ou=groups,ou=department,dc=example,dc=com
objectclass: organizationalUnit
objectclass: top
ou: groups

System_admin.ldif
dn: cn=system_admin,ou=groups,ou=department,dc=example,dc=com
cn: system_admin
gidnumber: 502
memberuid: admin1
memberuid: admin2
objectclass: posixGroup
objectclass: top

Users.ldif
dn: ou=users,ou=department,dc=example,dc=com
objectclass: organizationalUnit
objectclass: top
ou: users

Admin1.ldif
dn: uid=admin1,ou=users,ou=department,dc=example,dc=com
cn: admin1
gidnumber: 502
givenname: Admin1
homedirectory: /home/users/admin1
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: Admin1
uid: admin1
uidnumber: 5001
userpassword: password

Admin2.ldif
dn: uid=admin2,ou=users,ou=department,dc=example,dc=com
cn: admin2
gidnumber: 502
givenname: Admin2
homedirectory: /home/users/admin2
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: Admin2
uid: admin2
uidnumber: 5002
userpassword: password

次に、ファイルごとに次のコマンドを実行して、これらのオブジェクトをLDAPサーバーに追加する必要があります。

ldapadd -x -W -D “cn=manager,dc=example,dc=com” -f

4)ミラーモードレプリケーション

ミラーモードは、シングルマスターレプリケーションのすべての整合性保証を提供すると同時に、マルチマスターの高可用性を提供するハイブリッド構成です。 ミラーモードでは、2つのプロバイダーが(マルチマスター構成として)相互に複製するように設定されますが、外部フロントエンドを使用して、すべての書き込みを2つのサーバーの1つにのみ送信します。 2番目のプロバイダーは、最初のプロバイダーがクラッシュした場合にのみ書き込みに使用されます。クラッシュした時点で、フロントエンドはすべての書き込みを2番目のプロバイダーに送信するように切り替わります。 クラッシュしたプロバイダーを修復して再起動すると、実行中のプロバイダーの変更に自動的に追いつき、再同期します。

ミラーモードの引数

ディレクトリ書き込み(レプリカは読み取りを処理します)に高可用性(HA)ソリューションを提供します。
1つのプロバイダーが稼働している限り、書き込みは安全に受け入れることができます。
プロバイダーノードは相互に複製するため、常に最新であり、引き継ぐ準備ができています(ホットスタンバイ)。
Syncreplを使用すると、ダウンタイム後にプロバイダーノードを再同期することもできます。

ミラーモードに対する議論

ミラーモードは、マルチマスターソリューションと呼ばれるものではありません。 これは、書き込みが一度に1つのミラーノードにのみ送信される必要があるためです。
ミラーモードはアクティブ-アクティブホットスタンバイと呼ぶことができるため、現在アクティブなプロバイダーを管理するには、外部サーバー(プロキシモードでスラップ)またはデバイス(ハードウェアロードバランサー)が必要です。
バックアップの管理方法は少し異なります。

ミラーモードを開始する前に、この記事で提供されているのと同じインストールおよび構成手順を別のホストで実行する必要があります(* .ldif部分のある部分を除き、すべてのオブジェクトはミラーモードのセットアップ後に複製されます)。 これをスレーブホストと呼びます。

LDAPをスレーブホストに正常にインストールして構成したら、マスター(最初に構成されたホスト)の/etc/openldap/slapd.confファイルを次のように更新する必要があります。

a。 modueloadsyncprov.laのコメントを外します
b。 ファイルのに次の構成を追加します。

##### Mirror Mode
serverID    001

# Consumer
syncrepl rid=001
provider=ldap://slave.example.com
bindmethod=simple
binddn="cn=manager,dc=example,dc=com"
credentials="slave_userPassword_from_slappasswd"
searchbase="dc=example,dc=com"
attrs="*,+"
type=refreshAndPersist
interval=00:00:01:00
retry="60 +"
# Provider
overlay syncprov
syncprov-checkpoint 50 1
syncprov-sessionlog 50

mirrormode on

次に、スレーブ/etc/openldap/slapd.confを次のように更新する必要があります。

a。 moduleloadsyncprov.laのコメントを外します
b。 ファイルの最後に次の構成を追加します。

##### Mirror Mode
serverID    002

# Consumer
syncrepl rid=001
provider=ldap://master.example.com
bindmethod=simple
binddn="cn=Manager,dc=example,dc=com"
credentials="master_userPassword_from_slappasswd"
searchbase="dc=example,dc=com"
attrs="*,+"
type=refreshAndPersist
interval=00:00:01:00
retry="60 +"
# Provider
overlay syncprov
syncprov-checkpoint 50 1
syncprov-sessionlog 50

mirrormode on

それでおしまい! 提供されているコマンドセットを使用して完全なテストを実行し、スレーブオブジェクトを確認してください。

結論

これで、シングルマスターレプリケーションのすべての整合性保証を提供すると同時に、マルチマスターレプリケーションの高可用性を提供するディレクトリアーキテクチャが得られます。 本当に簡単です。 各ミラーモードノードは、serverIDが一意であり、各コンシューマーが他のサーバーを指していることを除いて、まったく同じようにセットアップされます。