LDAPのデータを手動でバックアップして、障害発生時に戻す手順を記す

oracle様でコールド・バックアップやオンライン・バックアップを試したことがあるが、テストマシンで何度も何度も
トレーニングして実践に臨んでいました. これも同じ感覚で進めたいものです.

bdb形式からmdb形式へ LDAP/upgrade

コールド・バックアップ

システムを完全停止させ、データベースに関連するファイルをコピー・tarにしてバックアップ
一番簡便かな. リストアもそのファイルを戻すだけで十分.

[root@ldap-server ~]# systemctl stop slapd
 
[root@ldap-server ~]# cd /var/lib/ldap/
[root@ldap-server ldap]# ls -l
total 160
-rw-------. 1 ldap ldap 155648 Nov 12 11:57 data.mdb
-rw-r--r--. 1 ldap ldap    845 Oct 11  2021 DB_CONFIG
-rw-------. 1 ldap ldap   8192 Nov 12 21:58 lock.mdb
 
[root@ldap-server ldap]# cd ..
 
[root@ldap-server lib]# tar cvf - ./ldap | ssh root@ldap-backup "cat > /backup/`date '+%Y%m%d-%H%M%S'`.var_lib_ldap.tar"
 
[root@ldap-server lib]# cd /etc/openldap
[root@ldap-server openldap]# ls -l
total 12
drwxr-xr-x. 2 root root   96 Nov 12 07:37 certs
-rw-r--r--. 1 root root  121 Oct 11  2021 check_password.conf
-rw-r--r--. 1 root root  918 Nov 12 07:35 ldap.conf
drwxr-xr-x. 2 root root 4096 Nov 12 07:28 schema
drwxr-x---. 3 ldap ldap   45 Nov 12 07:34 slapd.d
 
[root@ldap-server openldap]# cd ..
 
[root@ldap-server etc]# tar cvf - ./openldap | ssh root@ldap-backup "cat > /backup/`date '+%Y%m%d-%H%M%S'`.etc_openldap.tar"
 
[root@ldap-server etc]# systemctl start slapd

*事前にノーパスワードで「ldap-backup」にSSHログインできるように鍵交換などしておけば幸せかも.
この一連の流れをcronに登録すればokかな.

っでリストアテストですが、こちらは仮想化装置esxiでテストしてまして、OS組み上げ時点のスナップショットを撮ってます.
っでその時点まで戻ってリストア作業を行ってみる.

実際にはマシン自体の問題で、別マシンへのリストアかと思われます. その際はマシンのホスト名、ipアドレスはオリジナルに合わせることが必須.
何故ならクライアントがipやマシン名でldap-serverを求めているから.

OS組み上げ時点のスナップショットからスタート

[root@ldap-server ~]# dnf --enablerepo=powertools install openldap-servers openldap-clients
 
[root@ldap-server ~]# cd /var/lib/ldap/
[root@ldap-server ~]# ls -l /var/lib/ldap/
total 0
[root@ldap-server ~]# ls -l /etc/openldap/
total 12
drwxr-xr-x. 2 root root    6 Oct 11  2021 certs
-rw-r--r--. 1 root root  121 Oct 11  2021 check_password.conf
-rw-r--r--. 1 root root  900 Oct 11  2021 ldap.conf
drwxr-xr-x. 2 root root 4096 Nov 13 00:26 schema
drwxr-x---. 3 ldap ldap   45 Nov 13 00:26 slapd.d
[root@ldap-server ~]#

「/var/lib/ldap」には何もない. 「/etc/openldap」には初期設定ファイル群がある. ここにbackupしたファイルを展開します

[root@ldap-server ~]# cd /var/lib/ldap/
[root@ldap-server ldap]# cd ..
 
[root@ldap-server lib]# ssh root@ldap-backup cat /backup/20221112-230119.var_lib_ldap.tar | tar xf -
[root@ldap-server lib]# ls -l ldap/
total 164
-rw-------. 1 ldap ldap 155648 Nov 12 11:57 data.mdb
-rw-r--r--. 1 ldap ldap    845 Oct 11  2021 DB_CONFIG
-rw-------. 1 ldap ldap   8192 Nov 12 21:58 lock.mdb
[root@ldap-server lib]#
 
[root@ldap-server lib]# cd /etc/openldap/
[root@ldap-server openldap]# cd ..
 
[root@ldap-server etc]# ssh root@ldap-backup cat /backup/20221112-220655.etc_openldap.tar | tar xf -
[root@ldap-server etc]# ls -l openldap/
total 12
drwxr-xr-x. 2 root root   96 Nov 12 07:37 certs
-rw-r--r--. 1 root root  121 Oct 11  2021 check_password.conf
-rw-r--r--. 1 root root  918 Nov 12 07:35 ldap.conf
drwxr-xr-x. 2 root root 4096 Nov 12 07:28 schema
drwxr-x---. 3 ldap ldap   45 Nov 12 07:34 slapd.d
[root@ldap-server etc]#

とファイル関係は戻りました.
次に firewall の設定を施します

firewall-cmd --add-service=ldap --add-service=ldaps --zone=public --permanent
firewall-cmd --reload

最後に slapd を上げます

[root@ldap-server ~]# systemctl start slapd

っで重要な確認

[root@ldap-server ~]# ldapsearch -x -LLL -W -D cn=config -b cn=config dn
Enter LDAP Password:
dn: cn=config
 
dn: cn=schema,cn=config
 
dn: cn={0}core,cn=schema,cn=config
 
dn: cn={1}cosine,cn=schema,cn=config
 
dn: cn={2}nis,cn=schema,cn=config
 
dn: cn={3}inetorgperson,cn=schema,cn=config
 
dn: cn={4}samba,cn=schema,cn=config               <--- sambaスキーマも入っている
 
dn: olcDatabase={-1}frontend,cn=config
 
dn: olcDatabase={0}config,cn=config
 
dn: olcDatabase={1}monitor,cn=config
 
dn: olcDatabase={2}mdb,cn=config
 
[root@ldap-server ~]#
[root@ldap-server ~]# ldapsearch  -x -H ldaps://ldap-server -b dc=sybyl,dc=local
 :
(ユーザアカウントらを確認します
 :
[root@ldap-server ~]#

あとは他のマシン ldap-client からデータを引ければOKかな. 「LDAP Admin」からの確認できればなおいいかな.

オンライン・バックアップ / ホット・バックアップ

前段のコールドバックアップはメジャーではない様子. 一旦slapdデーモンを短時間でも停止していると、ログインできない瞬間が生じます. なのでLDAPサービスを稼働したまま必要なデータを抜き取る「オンライン・バックアップ」を取り上げます.

稼働中のLDAP-serverから「slapcat」コマンドを使って「データ コンテンツ」と「設定ファイル」を取得します.
あと、細かいけど DB_CONFIG も

[root@ldap-server ~]# slapcat -b dc=sybyl,dc=local | ssh root@ldap-backup "cat > /backup/`date '+%Y%m%d-%H%M%S'`.ldap_data.ldif"
 
(「slapcat -b dc=sybyl,dc=local」と「slapcat -n 2」の出力内容は同じ)
 
[root@ldap-server ~]# slapcat -b cn=config | ssh root@ldap-backup "cat > /backup/`date '+%Y%m%d-%H%M%S'`.ldap_condif.ldif"
 
[root@ldap-server ~]# scp /var/lib/ldap/DB_CONFIG root@ldap-backup:/backup/`date '+%Y%m%d-%H%M%S'`.DB_CONFIG
[root@ldap-server ~]# (cd /etc/openldap ; tar cf - ./certs | ssh root@ldap-backup "cat > /backup/`date '+%Y%m%d-%H%M%S'`.cert.tar" )

バックアップは他のマシンに移してなんぼの世界. ssh を使うので前段同様 ノーパスワード のキーを作る. そうすればcronで自動化可能

っでリストアを試みる. これも前段同様、OSインストール直後のスナップショットまで戻ってリストアを試してみたいと思います

では開始.

[root@ldap-server ~]# dnf -y --enablerepo=powertools install openldap-servers openldap-clients
 
[root@ldap-server ~]# ls -l /var/lib/ldap/
total 0
[root@ldap-server ~]# ls -l /etc/openldap/
total 12
drwxr-xr-x. 2 root root    6 Oct 11  2021 certs
-rw-r--r--. 1 root root  121 Oct 11  2021 check_password.conf
-rw-r--r--. 1 root root  900 Oct 11  2021 ldap.conf
drwxr-xr-x. 2 root root 4096 Nov 13 01:29 schema
drwxr-x---. 3 ldap ldap   45 Nov 13 01:29 slapd.d
 
[root@ldap-server ~]# 

とopenldapのパッケージを入れた直後の段階となります。 そしてslapdデーモンは停止のままです.

[root@ldap-server ~]# systemctl status slapd.service
● slapd.service - OpenLDAP Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:slapd
           man:slapd-config
           man:slapd-hdb
           man:slapd-mdb
           file:///usr/share/doc/openldap-servers/guide.html
[root@ldap-server ~]#

まずバックアップしていた「DB_CONFIG」を戻します

[root@ldap-server ~]# scp    root@ldap-backup:/backup/20221113-005906.DB_CONFIG     /var/lib/ldap/DB_CONFIG
 
[root@ldap-server ~]# ls -l /var/lib/ldap
total 4
-rw-r--r--. 1 root root 845 Nov 13 01:33 DB_CONFIG
 
[root@ldap-server ~]#
(所有権は後でldapに変更します)

次に「設定ファイル」を戻します. slapdデーモンは停止のままです.

[root@ldap-server ~]# ls -l /etc/openldap/slapd.d/
total 4
drwxr-x---. 3 ldap ldap 182 Nov 13 02:37 'cn=config'
-rw-------. 1 ldap ldap 366 Nov 13 02:37 'cn=config.ldif'
 
[root@ldap-server ~]# rm -rf /etc/openldap/slapd.d/*         <--- slapd.dフォルダの中身を消します.
 
[root@ldap-server ~]# ssh   root@ldap-backup   cat /backup/20221113-014648.ldap_condif.ldif  |  slapadd -F /etc/openldap/slapd.d -b cn=config
 
[root@ldap-server ~]# ls -l /etc/openldap/slapd.d
total 4
drwxr-x---. 3 root root 182 Nov 13 01:57 'cn=config'
-rw-------. 1 root root 523 Nov 13 01:57 'cn=config.ldif'
[root@ldap-server ~]#

次に「データ コンテンツ」を戻します. slapdデーモンは停止のままです.

[root@ldap-server ~]# ssh   root@ldap-backup   cat /backup/20221113-014633.ldap_data.ldif  |  slapadd -F /etc/openldap/slapd.d -b dc=sybyl,dc=local
[root@ldap-server ~]# ls -l /etc/openldap/slapd.d
total 4
drwxr-x---. 3 root root 182 Nov 13 01:57 'cn=config'
-rw-------. 1 root root 523 Nov 13 01:57 'cn=config.ldif'
[root@ldap-server ~]#

あとldaps設定を施していたら証明書も戻します. 新規に作り直しても問題ないみたい.

[root@ldap-server ~]# cd /etc/openldap/certs/
[root@ldap-server certs]# cd ..
[root@ldap-server openldap]# ssh root@ldap-backup cat /backup/20221113-022658.cert.tar | tar xf -
 
[root@ldap-server openldap]# echo "TLS_REQCERT never" >>  /etc/openldap/ldap.conf

所有者をrootからldapに移し替えます

[root@ldap-server ~]# chown -R ldap. /var/lib/ldap
[root@ldap-server ~]# chown -R ldap. /etc/openldap/slapd.d

firewall関係があれば有効にして、これですべての準備ができたのでLDAPサービスを開始します

[root@ldap-server ~]# firewall-cmd --add-service=ldap --add-service=ldaps --zone=public --permanent
[root@ldap-server ~]# firewall-cmd --reload
 
[root@ldap-server ~]# systemctl enable slapd --now
 
(確認)
[root@ldap-server ~]# ldapsearch  -x -H ldaps://ldap-server -b dc=sybyl,dc=local

以上でリストア完了


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-11-20 (日) 03:39:38 (8d)