質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.54%

  • Linux

    4375questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Amazon EC2

    167questions

    Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

  • LDAP

    88questions

    LDAPは、ディレクトリデータベースにアクセスするためのプロトコルです。ディレクトリデータベースとは、ネットワークに存在するメールアドレスや環境などさまざまな情報を一元的に管理するサービスのことで、クライアントはLDAPサーバにアクセスしてユーザ名から検索や追加などの操作することができます。

OpenLDAPのマルチマスタ構成でエラー

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,171

ami_chiki

score 5

前提・実現したいこと

Amazon Linux上に2台のOpenLDAPをマルチマスタ構成で構築しております。

発生している問題・エラーメッセージ

同期がうまくいっていないようで、下記エラーメッセージが出力されます。
サーバ1

Jan 26 11:19:32 ip-XX-XX-XX-XX slapd[26241]: =>do_syncrepl rid=001
Jan 26 11:19:32 ip-XX-XX-XX-XX slapd[26241]: slap_client_connect: URI=ldap://サーバ2のIPアドレスbindmethod=simple DN="cn=manager,dc=xxxx,dc=com" ldap_sasl_bind_s failed (-1)
Jan 26 11:19:32 ip-XX-XX-XX-XX slapd[26241]: do_syncrepl: rid=001 rc -1 retrying


サーバ2 (1/27 10:30 JST 追記)

Jan 26 11:19:38 ip-XX-XX-XX-XX slapd[28751]: =>do_syncrepl rid=001
Jan 26 11:19:38 ip-XX-XX-XX-XX slapd[28751]: slap_client_connect: URI=ldap://サーバ1のIPアドレスbindmethod=simple DN="cn=manager,dc=xxxx,dc=com" ldap_sasl_bind_s failed (-1)
Jan 26 11:19:38 ip-XX-XX-XX-XX slapd[28751]: do_syncrepl: rid=001 rc -1 retrying

ログレベル変更後
サーバ1

Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]: daemon: epoll: listen=7 active_threads=0 tvp=zero
Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]: daemon: epoll: listen=8 active_threads=0 tvp=zero
Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]: daemon: epoll: listen=9 active_threads=0 tvp=zero
Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]: =>do_syncrepl rid=001
Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]: slap_client_connect: URI=ldap://サーバ2のIPアドレスbindmethod=simple DN="cn=manager,dc=xxxx,dc=com" ldap_sasl_bind_s failed (-1)
Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]: do_syncrepl: rid=001 rc -1 retrying
Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]: daemon: activity on 1 descriptor
Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]: daemon: activity on:
Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]:
Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]: daemon: epoll: listen=7 active_threads=0 tvp=zero
Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]: daemon: epoll: listen=8 active_threads=0 tvp=zero
Jan 27 02:51:42 ip-XX-XX-XX-XX slapd[28305]: daemon: epoll: listen=9 active_threads=0 tvp=zero


サーバ2

Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]: daemon: epoll: listen=7 active_threads=0 tvp=zero
Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]: daemon: epoll: listen=8 active_threads=0 tvp=zero
Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]: daemon: epoll: listen=9 active_threads=0 tvp=zero
Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]: =>do_syncrepl rid=001
Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]: slap_client_connect: URI=ldap://サーバ1のIPアドレスbindmethod=simple DN="cn=manager,dc=xxxx,dc=com" ldap_sasl_bind_s failed (-1)
Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]: do_syncrepl: rid=001 rc -1 retrying
Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]: daemon: activity on 1 descriptor
Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]: daemon: activity on:
Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]:
Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]: daemon: epoll: listen=7 active_threads=0 tvp=zero
Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]: daemon: epoll: listen=8 active_threads=0 tvp=zero
Jan 27 02:51:45 ip-XX-XX-XX-XX slapd[31035]: daemon: epoll: listen=9 active_threads=0 tvp=zero

該当のソースコード

ミラーリングの設定は以下の通りです。
OpenLDAPの構築 を参考にしています。

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1 ※もう一方は"2"で登録

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov

dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://[相手のIPアドレス]:389
 bindmethod=simple binddn="cn=Manager,dc=xxxx,dc=com" credentials=xxxx
 searchbase="dc=xxxx,dc=com" schemachecking=on
 type=refreshAndPersist retry="60 +"
-
add: olcMirrorMode
olcMirrorMode: TRUE

dn: olcOverlay=syncprov,olcDatabase={2}bdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

試したこと

それぞれのサーバからお互いのサーバに対して認証ができることは確認しております。

サーバ1で実行
# ldapwhoami -x -D cn=Manager,dc=xxxx,dc=com -H ldap://[サーバ2IPアドレス] -W
Enter LDAP Password:
dn:cn=Manager,dc=xxxx,dc=com

サーバ2で実行
# ldapwhoami -x -D cn=Manager,dc=xxxx,dc=com -H ldap://[サーバ1IPアドレス] -W
Enter LDAP Password:
dn:cn=Manager,dc=xxxx,dc=com

補足情報(言語/FW/ツール等のバージョンなど)

OpenLDAP: 2.4.40-12.29.amzn1
他に何か必要な情報等あれば、教えてください。

どうぞよろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ami_chiki

    2017/01/27 14:11 編集

    改行を入れず一行指定で設定し直しても同様でした…「ldapsearch -Y EXTERNAL -H ldapi:// -b cn=config | grep olcSyncrepl」の該当部分は「olcSyncrepl: {0}rid=001 provider=ldap://[宛先IPアドレス]bindmethod=simple binddn=」でした。
    olcSyncReplの反映方法が間違っているのでしょうか…
    「ldapmodify -Y EXTERNAL -H ldapi:// -f mirror1.ldif -c 」で実行しております。

    キャンセル

  • TaichiYanagiya

    2017/01/27 15:05

    IPアドレスとbindmethodがくっついているように見えます。 文法エラーになると思うのですが、LDIFファイルに変なコードが入っていないでしょうか?

    キャンセル

  • ami_chiki

    2017/01/30 13:28

    修正用LDIFファイルを新たに作成して適用したところ、くっついているところが解消され無事同期されるようになりました。ありがとうございました。

    キャンセル

回答 1

checkベストアンサー

+1

OpenLDAPのLDIF(5)マニュアルページを見ると、LDIFの書式の説明に次のようなことが書いてあります。

A  line  may be continued by starting the next line with a single space
or tab, e.g.,

     dn: cn=Barbara J Jensen,dc=exam
      ple,dc=com

つまり、上の例は次のように解釈されるということですね。

     dn: cn=Barbara J Jensen,dc=example,dc=com

同様に、ご質問の設定の

add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://[相手のIPアドレス]:389
 bindmethod=simple binddn="cn=Manager,dc=xxxx,dc=com" credentials=xxxx
 searchbase="dc=xxxx,dc=com" schemachecking=on
 type=refreshAndPersist retry="60 +"

は、次のように解釈されます。

add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://[相手のIPアドレス]:389bindmethod=simple binddn="cn=Manager,dc=xxxx,dc=com" credentials=xxxxsearchbase="dc=xxxx,dc=com" schemachecking=ontype=refreshAndPersist retry="60 +"

これだとprovidercredentialsの設定値が意図したものになりませんから、レプリケーションが動作しません。

問題を避けるには、必要な空白が無視されてしまうような改行を入れずに、設定をしてやればいいです (すでに設定があるので、下記では置き換えるためのLDIFを書きます)。

dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://[相手のIPアドレス]:389 bindmethod=simple binddn="cn=Manager,dc=xxxx,dc=com" credentials=xxxx searchbase="dc=xxxx,dc=com" schemachecking=on type=refreshAndPersist retry="60 +"

あるいは、

dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://[相手のIPアドレス]:389 bindmethod
 =simple binddn="cn=Manager,dc=xxxx,dc=com" credentials=xxxx searchbase
 ="dc=xxxx,dc=com" schemachecking=on type
 =refreshAndPersist retry="60 +"

それと、なんでもそうですが、設定にあたって参考にするならまずは公式サイトの情報を参考にするべきです。他のサイトの情報は、公式サイトの抜粋か焼き直しと思って間違いないです。そういったものが役に立たないとまでは言いませんが、元の情報を読んでいなければ正確に理解することはできません。

OpenLDAP Software 2.4 Administrator's Guideでは「18. Replication」の章で、他の方法とともにマルチマスタレプリケーションについても説明しています。設定例も載っています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/30 13:26

    必要箇所に空白が入っていなかったことが直接的な原因だったのですが、その部分を修正したLDIFファイルを新規addした時と同じLDIFファイルを使用したために、ldapmodifyが失敗していたようです。。ldapmodify用に新たにLDIFファイルを作成したところ、無事修正内容が反映され、同期されました。
    英語を敬遠したために公式サイトを参照することを怠けておりました。。アドバイスありがとうございます。
    無事同期できてよかったです。最後まで丁寧に面倒を見ていただきありがとうございました。

    キャンセル

同じタグがついた質問を見る

  • Linux

    4375questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • Amazon EC2

    167questions

    Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

  • LDAP

    88questions

    LDAPは、ディレクトリデータベースにアクセスするためのプロトコルです。ディレクトリデータベースとは、ネットワークに存在するメールアドレスや環境などさまざまな情報を一元的に管理するサービスのことで、クライアントはLDAPサーバにアクセスしてユーザ名から検索や追加などの操作することができます。