付録B オーバークラウドの復元
B.1. オーバークラウドのコントロールプレーンサービスの復元 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、オーバークラウドのデータベースと設定のバックアップをリストアします。このような場合には、ターミナルのウィンドウを 3 つ開いて、特定の操作を 3 つのコントローラーノードすべてで同時に実行できるようにすることを推奨します。また、高可用性の操作を実行するコントローラーノードを 1 台選択することもお勧めします。この手順では、このコントローラーノードを ブートストラップコントローラーノード と呼びます。
この手順では、コントロールプレーンサービスのみを復元します。コンピュートノードのワークロードや Ceph Storage ノード上のデータの復元は含まれません。
Red Hat は、Open vSwitch (OVS) およびデフォルトの Open Virtual Network (OVN) などのネイティブ SDN を使用する Red Hat OpenStack Platform のバックアップをサポートします。サードパーティーの SDN についての詳細は、サードパーティーの SDN ドキュメントを参照してください。
手順
Pacemaker を停止し、コンテナー化されたすべてのサービスを削除します。
ブートストラップコントローラーノードにログインし、Pacemaker クラスターを停止します。
# sudo pcs cluster stop --allクラスターが完全にシャットダウンするまで待ちます。
# sudo pcs statusすべてのコントローラーノードで、OpenStack サービスのコンテナーをすべて削除します。
# docker stop $(docker ps -a -q) # docker rm $(docker ps -a -q)
メジャーバージョンのアップグレードの失敗からリストアする場合には、全ノードで実行された
yumトランザクションをすべて元に戻さなければならない場合があります。これには、各ノードで以下の操作が必要です。以前のバージョンのリポジトリーを有効化します。以下に例を示します。
# sudo subscription-manager repos --enable=rhel-7-server-openstack-10-rpms # sudo subscription-manager repos --enable=rhel-7-server-openstack-11-rpms # sudo subscription-manager repos --enable=rhel-7-server-openstack-12-rpms以下の Ceph リポジトリーを有効にします。
# sudo subscription-manager repos --enable=rhel-7-server-rhceph-2-tools-rpms # sudo subscription-manager repos --enable=rhel-7-server-rhceph-2-mon-rpmsyum履歴をチェックします。# sudo yum history list allアップグレードプロセス中に発生したトランザクションを特定します。これらの操作の大半は、コントローラーノードの 1 台 (アップグレード中にブートストラップノードとして選択されていたコントローラーノード) で発生しているはずです。特定のトランザクションを確認する必要がある場合は、
history infoサブコマンドで表示してください。# sudo yum history info 25注記yum history list allで各トランザクションから実行したコマンドを表示するように強制するには、yum.confファイルでhistory_list_view=commandsを設定します。アップグレード以降に発生した
yumトランザクションをすべて元に戻します。以下に例を示します。# sudo yum history undo 25 # sudo yum history undo 24 # sudo yum history undo 23 ...最後のトランザクションから開始して、降順に操作を継続するようにしてください。また、
rollbackオプションを使用すると、複数のトランザクションを 1 回の実行で元に戻すこともできます。たとえば、以下のコマンドは最後のトランザクションから 23 までのトランザクションをロールバックします。# sudo yum history rollback 23重要各トランザクションの取り消しを確認できるようにするには、
rollbackではなくundoを使用することを推奨します。関連する
yumトランザクションが取り消されたら、全ノードで元の OpenStack Platform リポジトリーのみを有効化します。以下に例を示します。# sudo subscription-manager repos --disable=rhel-7-server-openstack-*-rpms # sudo subscription-manager repos --enable=rhel-7-server-openstack-10-rpms以下の Ceph リポジトリーを無効にします。
# sudo subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-rpms # sudo subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-rpms
データベースを復元します。
- ブートストラップコントローラーノードにデータベースのバックアップをコピーします。
全コントローラーノード上でデータベースポートへの外部接続を停止します。
# MYSQLIP=$(hiera -c /etc/puppet/hiera.yaml mysql_bind_host) # sudo /sbin/iptables -I INPUT -d $MYSQLIP -p tcp --dport 3306 -j DROPこれにより、ノードへのデータベーストラフィックがすべて分離されます。
一時的にデータベースのレプリケーションを無効にします。すべてのコントローラーノードで
/etc/my.cnf.d/galera.cnfファイルを編集します。# vi /etc/my.cnf.d/galera.cnf以下の変更を加えます。
-
wsrep_cluster_addressパラメーターをコメントアウトする -
wsrep_providerをnoneに設定する
-
-
/etc/my.cnf.d/galera.cnfファイルを保存します。 すべてのコントローラーノードで MariaDB データベースが無効になっていることを確認します。OpenStack Platform 13 へのアップグレード中に、以前の手順で無効にした MariaDB サービスがコンテナー化されたサービスに移行します。ホスト上でもサービスがプロセスとして実行されていないことを確認してください。
# mysqladmin -u root shutdown注記HAProxy から、データベースが無効になったという警告が表示される可能性があります。
既存の MariaDB データディレクトリーを移動し、全コントローラーノード上で新規データディレクトリーを準備します。
# mv /var/lib/mysql/ /var/lib/mysql.old # mkdir /var/lib/mysql # chown mysql:mysql /var/lib/mysql # chmod 0755 /var/lib/mysql # mysql_install_db --datadir=/var/lib/mysql --user=mysql # chown -R mysql:mysql /var/lib/mysql/ # restorecon -R /var/lib/mysqlすべてのコントローラーノードでデータベースを手動で起動します。
# mysqld_safe --skip-grant-tables --skip-networking --wsrep-on=OFF &古いパスワードを取得し、すべてのコントローラーノードでデータベースのパスワードを再設定します。
# OLDPASSWORD=$(sudo cat .my.cnf | grep -m1 password | cut -d'=' -f2 | tr -d "'") # mysql -uroot -e"use mysql;update user set password=PASSWORD($OLDPASSWORD)"すべてのコントローラーノードでデータベースを停止します。
# /usr/bin/mysqladmin -u root shutdownブートストラップコントローラーノードで、
--skip-grant-tablesオプションを指定せずに手動でデータベースを起動します。# mysqld_safe --skip-networking --wsrep-on=OFF &ブートストラップコントローラーノードで、OpenStack データベースを復元します。この後の手順で、このデータベースが他のコントローラーノードに複製されます。
# mysql -u root < openstack_database.sqlブートストラップコントローラーノードで、ユーザーとパーミッションを復元します。
# mysql -u root < grants.sql以下のコマンドを使用して、ブートストラップコントローラーノードをシャットダウンします。
# mysqladmin shutdownデータベースのレプリケーションを有効にします。すべてのコントローラーノードで
/etc/my.cnf.d/galera.cnfファイルを編集します。# vi /etc/my.cnf.d/galera.cnf以下の変更を加えます。
-
wsrep_cluster_addressパラメーターをコメント解除する -
wsrep_providerを/usr/lib64/galera/libgalera_smm.soに設定する
-
-
/etc/my.cnf.d/galera.cnfファイルを保存します。 ブートストラップノードでデータベースを実行します。
# /usr/bin/mysqld_safe --pid-file=/var/run/mysql/mysqld.pid --socket=/var/lib/mysql/mysql.sock --datadir=/var/lib/mysql --log-error=/var/log/mysql_cluster.log --user=mysql --open-files-limit=16384 --wsrep-cluster-address=gcomm:// &--wsrep-cluster-addressオプションにノードを含めないと、Galera により新しいクラスターが作成され、ブートストラップノードがマスターノードになります。ノードのステータスを確認します。
# clustercheckこのコマンドにより、
Galera cluster node is synced.という出力が表示されるはずです。エラーが発生した場合には、/var/log/mysql_cluster.logファイルを確認してください。残りのコントローラーノードでデータベースを起動します。
$ /usr/bin/mysqld_safe --pid-file=/var/run/mysql/mysqld.pid --socket=/var/lib/mysql/mysql.sock --datadir=/var/lib/mysql --log-error=/var/log/mysql_cluster.log --user=mysql --open-files-limit=16384 --wsrep-cluster-address=gcomm://overcloud-controller-0,overcloud-controller-1,overcloud-controller-2 &--wsrep-cluster-addressオプションにノードを含めると、新しいクラスターにノードが追加され、マスターからの内容と同期されます。定期的に各ノードのステータスを確認します。
# clustercheck全ノードの同期操作が完了したら、このコマンドにより、それぞれのノードについて
Galera cluster node is synced.という出力が表示されるはずです。すべてのノードのデータベースを停止します。
$ mysqladmin shutdown各ノードからファイアウォールルールを削除して、サービスがデータベースへのアクセスを回復するようにします。
# sudo /sbin/iptables -D INPUT -d $MYSQLIP -p tcp --dport 3306 -j DROP
Pacemaker の設定を復元します。
- Pacemaker のアーカイブをブートストラップノードにコピーします。
- ブートストラップノードにログインします。
設定の復元コマンドを実行します。
# pcs config restore pacemaker_controller_backup.tar.bz2
ファイルシステムを復元します。
各コントローラーノードのバックアップ
tarファイルを一時ディレクトリーにコピーして、圧縮された全データを展開します。# mkdir /var/tmp/filesystem_backup/ # cd /var/tmp/filesystem_backup/ # mv <backup_file>.tar.gz . # tar --xattrs --xattrs-include='*.*' -xvzf <backup_file>.tar.gz注記/ディレクトリーには直接展開しないでください。直接展開すると、現在のファイルシステムが上書きされてしまいます。ファイルを一時ディレクトリーで抽出することを推奨します。os-*-configファイルをリストアし、os-collect-configを再起動します。# cp -rf /var/tmp/filesystem_backup/var/lib/os-collect-config/* /var/lib/os-collect-config/. # cp -rf /var/tmp/filesystem_backup/usr/libexec/os-apply-config/* /usr/libexec/os-apply-config/. # cp -rf /var/tmp/filesystem_backup/usr/libexec/os-refresh-config/* /usr/libexec/os-refresh-config/. # systemctl restart os-collect-configPuppet hieradata ファイルを復元します。
# cp -r /var/tmp/filesystem_backup/etc/puppet/hieradata /etc/puppet/hieradata # cp -r /var/tmp/filesystem_backup/etc/puppet/hiera.yaml /etc/puppet/hiera.yaml- 設定ファイルが必要な場合には、このディレクトリーを保持します。
redis リソースを復元します。
- redis ダンプを各コントローラーノードにコピーします。
redis ダンプを各コントローラー上の本来の場所に移動します。
# mv dump.rdb /var/lib/redis/dump.rdbredis ディレクトリーへのアクセス権限を復元します。
# chown -R redis: /var/lib/redis
以下のすべてのディレクトリーの内容を削除します。
# rm -rf /var/lib/config-data/puppet-generated/* # rm /root/.ffu_workaroundOpenStack Object Storage (swift) サービスのアクセス権限を復元します。
# chown -R swift: /srv/node # chown -R swift: /var/lib/swift # chown -R swift: /var/cache/swift-
アンダークラウドにログインし、お使いの OpenStack Platform 10 デプロイメントから元の
openstack overcloud deployコマンドを実行します。元のデプロイメントに関連するすべての環境ファイルを必ず含めてください。 - デプロイメントが完了するまで待ちます。
オーバークラウドのコントロールプレーンのデータを復元した後には、関連する各サービスが有効化されて正しく実行されていることを確認します。
コントローラーノード上の高可用性サービスの場合:
# pcs resource enable [SERVICE] # pcs resource cleanup [SERVICE]コントローラーおよびコンピュートノード上のシステムサービスの場合:
# systemctl start [SERVICE] # systemctl enable [SERVICE]
以下の項には、有効にすべきサービスについての参考情報を記載します。