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
以上でリストア完了