なにこれ
- 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