director のアンダークラウドのバックアップとリストア
director のアンダークラウドのバックアップとリストア
概要
第1章 アンダークラウドのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
本ガイドでは、Red Hat OpenStack Platform director で使用するアンダークラウドのバックアップ方法を説明します。アンダークラウドとは、通常 OpenStack 環境のデプロイメントおよび管理に使用する単一の物理ノードのことを指します (ただし、仮想マシンで director を実行する、2 ノードタイプの Pacemaker クラスターを使用した高可用性オプションも存在します)。
1.1. バックアップに関する留意事項 リンクのコピーリンクがクリップボードにコピーされました!
データ損失やシステムのダウンタイムを最小限に抑えるため、強力なバックアップおよびリカバリーポリシーを策定します。バックアップストラテジーを決定するにあたっては、以下の質問事項への回答を明確にしておく必要があります。
- データ損失からどの程度迅速に復旧する必要がありますか。データ損失が一切許容されない場合には、デプロイメントストラテジーとして、バックアップの使用に加えて、高可用性に焦点を当てるべきです。物理バックアップメディアを取得する際にかかる時間 (例: オフサイトの場所を利用している場合はそのサイトからのメディア) やリストアの操作に利用可能なテープドライブがいくつあるかを考慮する必要があります。
- 保管が必要なバックアップの数はいくつですか。データの保管年数に影響を与える法的かつ規制上の要件を考慮する必要があります。
- バックアップはオフサイトに保管する必要がありますか。バックアップメディアをオフサイトに保管すると、物理的な場所に降りかかる災害のリスクを軽減するのに役立ちます。
- バックアップをテストする頻度はどの程度ですか。強固なバックアップストラテジーには、バックアップデータを定期的にリストアするテストが含まれます。これは、正しいデータが依然としてバックアップされており、バックアップやリストアプロセス中にデータの破損が発生していないことを検証するのに役立ちます。これらのテストは、実際の災害復旧の条件下で実行することを想定すべきです。
- バックアップの対象は何ですか。以下の項では、コンポーネントのデータベースとファイルシステムのバックアップのほか、バックアップの復旧についても説明します。
1.2. アンダークラウドノードの高可用性 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat は、アンダークラウドノードの高可用性 (HA) オプションに特定の要件を規定していないので、希望に応じて自由に検討することができます。たとえば、Red Hat Virtualization (RHV) 内の高可用性の仮想マシンとしてアンダークラウドノードを実行する設定を検討してください。また、必要なサービスを HA で提供する Pacemaker をインストールした物理ノードを使用することも検討することができます。
アンダークラウドノードの高可用性について検討する場合は、お使いの環境に最も有効であると判断したソリューションのドキュメントやグッドプラクティスを参照してください。
1.3. ベアメタルアンダークラウドのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
完全なアンダークラウドのバックアップには、以下のデータベースおよびファイルが含まれます。
- アンダークラウドノード上の MariaDB データベース
- (データベースを正確にリストアできるように) アンダークラウド上の MariaDB 設定ファイル
-
設定データ:
/etc -
ログデータ:
/var/log -
イメージデータ:
/var/lib/glance -
証明書生成データ (SSL を使用している場合):
/var/lib/certmonger -
コンテナーイメージデータ:
/var/lib/docker、/var/lib/registry -
swift の全データ:
/srv/node -
stack ユーザーのホームディレクトリー内の全データ:
/home/stack
バックアッププロセスを実行する前に、アンダークラウドに利用可能なディスク容量が十分にあることを確認します。アーカイブファイルは、少なくとも 3.5 GB となることが予想され、それ以上になる可能性があります。
手順
-
アンダークラウドに
rootユーザーとしてログインします。 データベースのバックアップを作成します。
mysqldump --opt --all-databases > /root/undercloud-all-databases.sql
[root@director ~]# mysqldump --opt --all-databases > /root/undercloud-all-databases.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow backupディレクトリーを作成して、そのディレクトリーを所有するユーザーをstackユーザーに変更します。mkdir /backup chown stack: /backup
[root@director ~]# mkdir /backup [root@director ~]# chown stack: /backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow このディレクトリーを使用して、アンダークラウドのデータベースおよびファイルシステムを含むアーカイブを保存します。
バックアップディレクトリーに移動します。cd /backup
[root@director ~]# cd /backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースのバックアップと設定ファイルをアーカイブします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
--ignore-failed-readオプションを指定すると、アンダークラウドに適用されないディレクトリーはスキップされます。 -
--xattrsおよび--xattrs-include='*.*'オプションには、Object Storage (swift) および SELinux のメタデータを保存するために必要な拡張属性が含まれます。
これで、
undercloud-backup-<date>.tar.gzという名前のファイルが作成されます。ここで、<date>はシステムの日付けです。このtarファイルをセキュアな場所にコピーします。-
1.4. 作成完了したバックアップの検証 リンクのコピーリンクがクリップボードにコピーされました!
リストアプロセスを実行/検証することでバックアッププロセスが正常に完了したことを検証できます。バックアップからのリストアの詳しい情報は、次の項を参照してください。
パート I. アンダークラウドのリストア リンクのコピーリンクがクリップボードにコピーされました!
本項では、Red Hat OpenStack Platform director で使用するアンダークラウドのリストア方法を説明します。
このプロセスでは、OpenStack Platform director のバックアップのデータをアンダークラウドの新規インストールにリストアする手順を説明します。これにより、リストアされたアンダークラウドでは最新のパッケージが使用されます。
第2章 アンダークラウドのリストア リンクのコピーリンクがクリップボードにコピーされました!
以下の復元の手順は、お使いのアンダークラウドノードでエラーが発生して、回復不能な状態であることを前提としています。この手順では、新規インストール環境でデータベースおよびクリティカルなファイルシステムの復元を行う必要があります。以下が前提条件です。
- Red Hat Enterprise Linux 7 の最新版を再インストール済みであること
- ハードウェアレイアウトが同じであること
- マシンのホスト名とアンダークラウドの設定が同じであること
-
バックアップアーカイブが
rootディレクトリーにコピー済みであること
手順
-
お使いのアンダークラウドに
rootユーザーとしてログインします。 コンテンツ配信ネットワークにシステムを登録します。プロンプトが表示されたら、カスタマーポータルのユーザー名とパスワードを入力します。
subscription-manager register
[root@director ~]# subscription-manager registerCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat OpenStack Platform のエンタイトルメントをアタッチします。
subscription-manager attach --pool=Valid-Pool-Number-123456
[root@director ~]# subscription-manager attach --pool=Valid-Pool-Number-123456Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトのリポジトリーをすべて無効にしてから、必要な Red Hat Enterprise Linux リポジトリーを有効にします。
subscription-manager repos --disable=* subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-openstack-13-rpms
[root@director ~]# subscription-manager repos --disable=* [root@director ~]# subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-openstack-13-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow システムで更新を実行して、ベースシステムパッケージを最新の状態にします。
yum update -y reboot
[root@director ~]# yum update -y [root@director ~]# rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドの時刻が同期されていることを確認します。以下に例を示します。
yum install -y ntp systemctl start ntpd systemctl enable ntpd ntpdate pool.ntp.org systemctl restart ntpd
[root@director ~]# yum install -y ntp [root@director ~]# systemctl start ntpd [root@director ~]# systemctl enable ntpd [root@director ~]# ntpdate pool.ntp.org [root@director ~]# systemctl restart ntpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
アンダークラウドのバックアップアーカイブをアンダークラウドの
rootディレクトリーにコピーします。これ以降のステップでは、ファイル名にundercloud-backup-$TIMESTAMP.tarを使用しています。ここで、$TIMESTAMP はアーカイブのタイムスタンプの Bash 変数です。 データベースサーバーとクライアントツールをインストールします。
yum install -y mariadb mariadb-server
[root@director ~]# yum install -y mariadb mariadb-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースを起動します。
systemctl start mariadb systemctl enable mariadb
[root@director ~]# systemctl start mariadb [root@director ~]# systemctl enable mariadbCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースのバックアップのサイズに対応するように、許可されるパケット数を増やします。
mysql -uroot -e"set global max_allowed_packet = 1073741824;"
[root@director ~]# mysql -uroot -e"set global max_allowed_packet = 1073741824;"Copy to Clipboard Copied! Toggle word wrap Toggle overflow アーカイブからデータベースおよびデータベース設定を抽出します。
tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/my.cnf.d/*server*.cnf tar -xvC / -f undercloud-backup-$TIMESTAMP.tar root/undercloud-all-databases.sql
[root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/my.cnf.d/*server*.cnf [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar root/undercloud-all-databases.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースのバックアップをリストアします。
mysql -u root < /root/undercloud-all-databases.sql
[root@director ~]# mysql -u root < /root/undercloud-all-databases.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow root 設定ファイルの一時バージョンを抽出します。
tar -xvf undercloud-backup-$TIMESTAMP.tar root/.my.cnf
[root@director ~]# tar -xvf undercloud-backup-$TIMESTAMP.tar root/.my.cnfCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースの古い root パスワードを取得します。
OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")
[root@director ~]# OLDPASSWORD=$(sudo cat root/.my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'")Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベースの root パスワードをリセットします。
mysqladmin -u root password "$OLDPASSWORD"
[root@director ~]# mysqladmin -u root password "$OLDPASSWORD"Copy to Clipboard Copied! Toggle word wrap Toggle overflow root 設定ファイルを一時ディレクトリーから
rootディレクトリーに移動します。mv ~/root/.my.cnf ~/. rmdir ~/root
[root@director ~]# mv ~/root/.my.cnf ~/. [root@director ~]# rmdir ~/rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 古いユーザー権限の一覧を取得します。
mysql -e 'select host, user, password from mysql.user;'
[root@director ~]# mysql -e 'select host, user, password from mysql.user;'Copy to Clipboard Copied! Toggle word wrap Toggle overflow リストされた各ホストの古いユーザー権限を削除します。以下に例を示します。
HOST="192.0.2.1" USERS=$(mysql -Nse "select user from mysql.user WHERE user != \"root\" and host = \"$HOST\";" | uniq | xargs) for USER in $USERS ; do mysql -e "drop user \"$USER\"@\"$HOST\"" || true ;done for USER in $USERS ; do mysql -e "drop user $USER" || true ;done mysql -e 'flush privileges'
[root@director ~]# HOST="192.0.2.1" [root@director ~]# USERS=$(mysql -Nse "select user from mysql.user WHERE user != \"root\" and host = \"$HOST\";" | uniq | xargs) [root@director ~]# for USER in $USERS ; do mysql -e "drop user \"$USER\"@\"$HOST\"" || true ;done [root@director ~]# for USER in $USERS ; do mysql -e "drop user $USER" || true ;done [root@director ~]# mysql -e 'flush privileges'Copy to Clipboard Copied! Toggle word wrap Toggle overflow ホスト IP および任意のホスト ("
%") からアクセスするすべてのユーザーに対して、この手順を実施します。注記HOST パラメーターの IP アドレスは、コントロールプレーン内のアンダークラウドの IP アドレスです。
データベースを再起動します。
systemctl restart mariadb
[root@director ~]# systemctl restart mariadbCopy to Clipboard Copied! Toggle word wrap Toggle overflow stackユーザーを作成します。useradd stack
[root@director ~]# useradd stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーのパスワードを設定します。
passwd stack
[root@director ~]# passwd stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudoを使用する場合にパスワードを要求されないようにします。echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack chmod 0440 /etc/sudoers.d/stack
[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@director ~]# chmod 0440 /etc/sudoers.d/stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow stackユーザーのホームディレクトリーをリストアします。tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stack
# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar home/stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow policycoreutils-pythonパッケージをインストールします。yum -y install policycoreutils-python
[root@director ~]# yum -y install policycoreutils-pythonCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack-glanceパッケージをインストールして、そのデータおよびファイルパーミッションをリストアします。yum install -y openstack-glance tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/glance/images chown -R glance: /var/lib/glance/images restorecon -R /var/lib/glance/images
[root@director ~]# yum install -y openstack-glance [root@director ~]# tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/glance/images [root@director ~]# chown -R glance: /var/lib/glance/images [root@director ~]# restorecon -R /var/lib/glance/imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack-swiftパッケージをインストールして、そのデータおよびファイルパーミッションをリストアします。yum install -y openstack-swift tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar srv/node chown -R swift: /srv/node restorecon -R /srv/node
[root@director ~]# yum install -y openstack-swift [root@director ~]# tar --xattrs --xattrs-include='*.*' -xvC / -f undercloud-backup-$TIMESTAMP.tar srv/node [root@director ~]# chown -R swift: /srv/node [root@director ~]# restorecon -R /srv/nodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack-keystoneパッケージをインストールして、その設定データをリストアします。yum -y install openstack-keystone tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/keystone restorecon -R /etc/keystone
[root@director ~]# yum -y install openstack-keystone [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/keystone [root@director ~]# restorecon -R /etc/keystoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack-heatをインストールして、設定をリストアします。yum install -y openstack-heat* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/heat restorecon -R /etc/heat
[root@director ~]# yum install -y openstack-heat* [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/heat [root@director ~]# restorecon -R /etc/heatCopy to Clipboard Copied! Toggle word wrap Toggle overflow Puppet をインストールして、その設定データをリストアします。
yum install -y puppet hiera tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/
[root@director ~]# yum install -y puppet hiera [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/puppet/hieradata/Copy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドで SSL を使用する場合は、CA 証明書を更新します。アンダークラウドの設定に応じて、ユーザー提供の証明書の手順または自動生成された証明書の手順のいずれかを使用します。
アンダークラウドがユーザー提供の証明書で設定されている場合は、次の手順を実行します。
証明書を抽出します。
tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/instack-certs/undercloud.pem tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
[root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/instack-certs/undercloud.pem [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux コンテキストを復元し、ファイルシステムのラベル付けを管理します。
restorecon -R /etc/pki semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?" restorecon -R /etc/pki/instack-certs
[root@director ~]# restorecon -R /etc/pki [root@director ~]# semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?" [root@director ~]# restorecon -R /etc/pki/instack-certsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書を更新します。
update-ca-trust extract
[root@director ~]# update-ca-trust extractCopy to Clipboard Copied! Toggle word wrap Toggle overflow
certmongerを使用してアンダークラウドの証明書を自動生成する場合は、以下の手順を実行します。証明書、CA 証明書、および certmonger ファイルを抽出します。
tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/certmonger/* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/tls/* tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*
[root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar var/lib/certmonger/* [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/tls/* [root@director ~]# tar -xvC / -f undercloud-backup-$TIMESTAMP.tar etc/pki/ca-trust/source/anchors/*Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux コンテキストを復元します。
restorecon -R /etc/pki restorecon -R /var/lib/certmonger
[root@director ~]# restorecon -R /etc/pki [root@director ~]# restorecon -R /var/lib/certmongerCopy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/certmonger/lockファイルを削除します。rm -f /var/lib/certmonger/lock
[root@director ~]# rm -f /var/lib/certmonger/lockCopy to Clipboard Copied! Toggle word wrap Toggle overflow
stackユーザーに切り替えます。su - stack
[root@director ~]# su - stack [stack@director ~]$Copy to Clipboard Copied! Toggle word wrap Toggle overflow python-tripleoclientパッケージをインストールします。sudo yum install -y python-tripleoclient
$ sudo yum install -y python-tripleoclientCopy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドのインストールコマンドを実行します。このコマンドは、
stackユーザーのホームディレクトリーから実行するようにしてください。openstack undercloud install
[stack@director ~]$ openstack undercloud installCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストールが完了すると、アンダークラウドは、オーバークラウドへの接続を自動的にリストアします。ノードは、保留中のタスクに対して、OpenStack Orchestration (heat) のポーリングを続けます。
root ユーザーに変更します。
sudo su -
$ sudo su -Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーのデータをバックアップのコンテンツと同期します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第3章 オーバークラウドノード用イメージのリストア リンクのコピーリンクがクリップボードにコピーされました!
新しいオーバークラウドノードのプロビジョニング用に、director には最新のディスクイメージが必要です。以下の手順に従って、これらのイメージをリストアします。
手順
source コマンドで
stackrcファイルを読み込み、director のコマンドラインツールを有効にします。source ~/stackrc
[stack@director ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow rhosp-director-imagesおよびrhosp-director-images-ipaパッケージをインストールします。sudo yum install rhosp-director-images rhosp-director-images-ipa
(undercloud) [stack@director ~]$ sudo yum install rhosp-director-images rhosp-director-images-ipaCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージのアーカイブを、
stackユーザーのホーム下のimagesディレクトリー (/home/stack/images) に展開します。cd ~/images for i in /usr/share/rhosp-director-images/overcloud-full-latest-13.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-13.0.tar; do tar -xvf $i; done
(undercloud) [stack@director ~]$ cd ~/images (undercloud) [stack@director images]$ for i in /usr/share/rhosp-director-images/overcloud-full-latest-13.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-13.0.tar; do tar -xvf $i; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのイメージを director にインポートします。
cd ~/images openstack overcloud image upload --image-path /home/stack/images/
(undercloud) [stack@director images]$ cd ~/images (undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいイメージを使用するように、環境内のノードを設定します。
for NODE in $(openstack baremetal node list -c UUID -f value) ; do openstack overcloud node configure $NODE ; done
(undercloud) [stack@director images]$ for NODE in $(openstack baremetal node list -c UUID -f value) ; do openstack overcloud node configure $NODE ; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 完了したリストアの検証 リンクのコピーリンクがクリップボードにコピーされました!
以下のコマンドを使用して、新しくリストアした環境のヘルスチェックを実行します。
4.1. Identity サービス (Keystone) の動作の確認 リンクのコピーリンクがクリップボードにコピーされました!
このステップでは、ユーザーの一覧をクエリーで取得して、Identity サービスの動作を検証します。
source stackrc openstack user list
# source stackrc
# openstack user list
コントローラーから実行する場合は、このコマンドの出力には、この環境で作成されたユーザーの一覧が含まれているはずです。このアクションでは、keystone が実行中でユーザーの要求を正常に認証していることが分かります。以下に例を示します。