LoginSignup
5
4

More than 5 years have passed since last update.

【OpenLDAP】今あるLDAPサーバーのレプリケーションサーバーをササッと作る

Posted at

なにこれ

  • OpenLDAPのサーバーがある
  • 冗長化のためにレプリケーションサーバーを立てたくなる

出来ること

  • ササッと脳死でLDAPレプリケーション環境が立つ
  • schema? 何も考えないで脳死コピー出来る
  • OpenLDAP完全に理解したおじさんになれる

環境

  • Ubuntu:18.04
  • OpenLDAP: 2.4.42
    • slapd.confが無い程度に新しいやつですあしからず。
      • 古いopenldapの人は早く更新してください。
  • マルチマスターではなく、簡単なマスター・スレーブ構成。

注意

  • 用語の解説などはしません。
  • とんでもなくササッとやりたい人がコピペする用だと思って下さい。

手順

1. マスターのサーバーでレプリケーションする準備を整える

ldifを書く

  • コピペする。パラメーターはウチの場合。アテにはしないように。
  • olcDatabase={1}hdb,cn=configの部分に関して
    • DBがhdbじゃない人、微妙に数字が違う人も居ると思う。適宜変更。

モジュール読み込み部分

mod_syncprov.ldif
n: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la

ldapaddで導入する。

~/
ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif 

モジュールの使用を宣言する部分

add_sync.ldif
dn: olcOverlay={0}syncprov,olcDatabase={1}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {0}syncprov
olcSpCheckpoint: 20 10
olcSpSessionlog: 100
structuralObjectClass: olcSyncProvConfig

ldapaddで導入する。

~/
ldapadd -Y EXTERNAL -H ldapi:/// -f add_sync.ldif

2. マスターのサーバーからconfigをぶっこ抜く

マスターのLDAPサーバーのコンフィグをぶっこ抜いて、スレーブサーバー用に一部改変する。

~/
slapcat -b cn=config > ldap_config_bak.ldif

主な改変ポイント

  • dn: olcOverlay={0}syncprov,olcDatabase={1}hdb,cn=config
    • さっき入れたばっかだけど消しとく。
  • dn: cn=config以下のolcTLSCertificateFile, olcTLSCertificateKeyFile
    • スレーブ側の正しい証明書のパスに変えとく

改変したldap_config_bak.ldifは何らかの手段で新しいスレーブサーバーに転送する。

3. スレーブのサーバーを構築する

基本的なサーバーの初期設定は当然済ませておく。

3.1 依存系・slapdのインストール

# apt-get install slapd ssl-cert
# dpkg-reconfigure slapd
  • dpkg-configureで求められるパスワードは空文字で。どうせ上書きするからなんでも良いです。
  • データベースの種類のみ、必ずマスターサーバーと揃える。

3.2 /etc/default

/etc/default/ldap.confをマスターのサーバーと同じ内容にしておく。

3.3 ldap_config_bak.ldifを打ち込む

3.3.1 初期データの削除

新しいldap1上で、まずはslapdを止める。

~/
service slapd stop

自動生成されるslapd.dを削除し、新しく作ってパーミッションを直しとく

~/
rm -fr /etc/ldap/slapd.d
mkdir -m 700 /etc/ldap/slapd.d
chown openldap:openldap /etc/ldap/slapd.d

DBの削除 もともと入ってるDB_CONFIGというファイルを再利用したいので退避させて使う。

~/
cd /var/lib
mv ldap ldap.bak
mkdir ldap
cp ldap.bak/DB_CONFIG ldap/
chown -R openldap:openldap ldap
rm -fr ldap.bak

3.3.1 持ってきたConfigをインポートする。

さっき持ってきたldifファイルをインポートする。
configのldifのみ。

# slapadd -n0 -F /etc/ldap/slapd.d -l ldap-config-bak.ldif 

最後に再度パーミッションをオーナを変更

# chown -R openldap:openldap /etc/ldap/slapd.d

# chown -R openldap:openldap /var/lib/ldap

3.4 スレーブサーバーにレプリケーションの設定を仕込む。

以下のファイルを作成する。
パラメーターはアテにしないで欲しいですが、とりあえずうちでは問題なく動いています。 もっとちゃんとしたドキュメントを参考に、環境にあわせてパラメーターを調整してください。

  • 注意点
    • rid=102の部分は各サーバーで一意になるなんらかの三桁の数。
    • "cn=admin,dc=example.com"はレプリケーションに使う、マスター側のレコードにある何らかのユーザー。
      • adminとは別にレプリケーション用のユーザーを別に作成するべき。
change_sync_2019.ldif
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcSyncrepl
olcSyncRepl: rid=102
  provider=ldap://ldap0.example.com:389/
  bindmethod=simple
  binddn="cn=admin,dc=example,dc=com"
  credentials=PASSWORD!!!!!
  searchbase="dc=example,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00

3.5

起動して確認する。
マスターサーバーと同じ結果になっていれば成功。
ある程度までのエントリであれば数十秒で終わるはず。

~/
service slapd start
slapcat

参考文献

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4