アンダークラウドおよびコントロールプレーンノードのバックアップと復元
アンダークラウドおよびオーバークラウドコントロールプレーンノードのバックアップの作成と復元
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。
Jira でドキュメントのフィードバックを提供する
ドキュメントに関するフィードバックを提供するには、Create Issue フォームを使用します。Red Hat OpenStack Platform Jira プロジェクトで Jira Issue が作成され、フィードバックの進行状況を追跡できます。
- Jira にログインしていることを確認してください。Jira アカウントをお持ちでない場合は、アカウントを作成してフィードバックを送信してください。
- Create Issue をクリックして、Create Issue ページを開きます。
- Summary フィールドと Description フィールドに入力します。Description フィールドに、ドキュメントの URL、章またはセクション番号、および問題の詳しい説明を入力します。フォーム内の他のフィールドは変更しないでください。
- Create をクリックします。
第1章 アンダークラウドノードのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
アンダークラウドノードをバックアップするには、バックアップノードを設定し、アンダークラウドノードに Relax-and-Recover ツールをインストールし、バックアップイメージを作成します。バックアップは、通常の環境メンテナンスの一環として作成できます。
さらに、更新またはアップグレードを実行する前にアンダークラウドノードをバックアップする必要があります。バックアップを使用して、更新またはアップグレード時にエラーが発生した場合に、アンダークラウドノードを以前の状態に復元することができます。
1.1. サポート対象のバックアップ形式およびプロトコル リンクのコピーリンクがクリップボードにコピーされました!
アンダークラウドおよびバックアップ/復元プロセスは、オープンソースのツールである Relax-and-Recover (ReaR) を使用してブート可能なバックアップイメージを作成し、復元します。ReaR は Bash で記述されており、複数のイメージ形式と複数の転送プロトコルをサポートします。
次のリストは、ReaR を使用してアンダークラウドとコントロールプレーンをバックアップおよび復元するときに Red Hat OpenStack Platform がサポートするバックアップ形式とプロトコルを示しています。
- ブート可能なメディア形式
- ISO
- ファイルトランスポートプロトコル
- SFTP
- NFS
1.2. バックアップストレージの場所の設定 リンクのコピーリンクがクリップボードにコピーされました!
コントロールプレーンノードのバックアップを作成する前に、bar-vars.yaml 環境ファイルでバックアップの保存場所を設定します。このファイルには、バックアップの実行に渡す Key-Value パラメーターが格納されています。
手順
bar-vars.yamlファイルで、バックアップの保存場所を設定します。NFS サーバーまたは SFTP サーバーに適した手順を実行します。NFS サーバーを使用する場合は、以下のパラメーターを
bar-vars.yamlファイルに追加します。tripleo_backup_and_restore_server: <ip_address> tripleo_backup_and_restore_shared_storage_folder: <backup_server_dir_path> tripleo_backup_and_restore_output_url: "nfs://{{ tripleo_backup_and_restore_server }}{{ tripleo_backup_and_restore_shared_storage_folder }}" tripleo_backup_and_restore_backup_url: "nfs://{{ tripleo_backup_and_restore_server }}{{ tripleo_backup_and_restore_shared_storage_folder }}"tripleo_backup_and_restore_server: <ip_address> tripleo_backup_and_restore_shared_storage_folder: <backup_server_dir_path> tripleo_backup_and_restore_output_url: "nfs://{{ tripleo_backup_and_restore_server }}{{ tripleo_backup_and_restore_shared_storage_folder }}" tripleo_backup_and_restore_backup_url: "nfs://{{ tripleo_backup_and_restore_server }}{{ tripleo_backup_and_restore_shared_storage_folder }}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow <ip_address>と<backup_server_dir_path>を置き換えます。tripleo_backup_and_restore_serverパラメーターのデフォルト値は192.168.24.1です。SFTP サーバーを使用する場合は、
tripleo_backup_and_restore_output_urlパラメーターを追加し、SFTP サーバーの URL と認証情報の値を設定します。tripleo_backup_and_restore_output_url: sftp://<user>:<password>@<backup_node>/ tripleo_backup_and_restore_backup_url: iso:///backup/
tripleo_backup_and_restore_output_url: sftp://<user>:<password>@<backup_node>/ tripleo_backup_and_restore_backup_url: iso:///backup/Copy to Clipboard Copied! Toggle word wrap Toggle overflow <user>、<password>、および<backup_node>を、バックアップノードの URL および認証情報に置き換えます。
1.3. バックアップノードへの NFS サーバーのインストールと設定 リンクのコピーリンクがクリップボードにコピーされました!
バックアップファイルを保存するために、新しい NFS サーバーをインストールして設定できます。バックアップノードに NFS サーバーをインストールして設定するには、インベントリーファイルと SSH キーを順次作成し、NFS サーバーオプションを指定して openstack undercloud backup コマンドを実行します。
- NFS サーバーまたは SFTP サーバーをインストールして設定している場合は、この手順を実行する必要はありません。バックアップするノードに ReaR を設定するときに、サーバー情報を入力します。
-
デフォルトでは、NFS サーバーの Relax and Recover (ReaR) IP アドレスパラメーターは
192.168.24.1です。使用している環境に一致する IP アドレス値を設定するには、tripleo_backup_and_restore_serverパラメーターを追加する必要があります。
手順
アンダークラウドノードにおいて、source コマンドでアンダークラウドの認証情報を読み込みます。
source stackrc (undercloud) [stack@undercloud ~]$
[stack@undercloud ~]$ source stackrc (undercloud) [stack@undercloud ~]$Copy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドノードで、バックアップノードのインベントリーファイルを作成します。
(undercloud) [stack@undercloud ~]$ cat <<'EOF'> ~/nfs-inventory.yaml [BackupNode] <backup_node> ansible_host=<ip_address> ansible_user=<user> EOF
(undercloud) [stack@undercloud ~]$ cat <<'EOF'> ~/nfs-inventory.yaml [BackupNode] <backup_node> ansible_host=<ip_address> ansible_user=<user> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow <ip_address>および<user>を、実際の環境に該当する値に置き換えます。公開 SSH 鍵をアンダークラウドノードからバックアップノードにコピーします。
ssh-copy-id -i ~/.ssh/id_rsa.pub <backup_node>
(undercloud) [stack@undercloud ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub <backup_node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <backup_node>をバックアップノードのパスおよび名前に置き換えます。バックアップノードに NFS サーバーを設定します。
openstack undercloud backup --setup-nfs --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/nfs-inventory.yaml
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --setup-nfs --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/nfs-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. アンダークラウドノードへの ReaR のインストール リンクのコピーリンクがクリップボードにコピーされました!
アンダークラウドノードのバックアップを作成する前に、アンダークラウドに Relax and Recover (ReaR) をインストールして設定します。
前提条件
- バックアップノードに NFS または SFTP サーバーがインストールおよび設定されている。新しい NFS サーバーの作成方法は 「バックアップノードへの NFS サーバーのインストールと設定」 を参照してください。
手順
アンダークラウドノードにおいて、source コマンドでアンダークラウドの認証情報を読み込みます。
source stackrc
[stack@undercloud ~]$ source stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムのスタック名を使用する場合は、
--stack <stack_name>オプションをtripleo-ansible-inventoryコマンドに追加します。事前に実行していない場合は、インベントリーファイルを作成し、
tripleo-ansible-inventoryコマンドを使用して、すべてのオーバークラウドノードのホストおよび変数が含まれる静的なインベントリーファイルを生成します。tripleo-ansible-inventory \ --ansible_ssh_user heat-admin \ --static-yaml-inventory /home/stack/tripleo-inventory.yaml
(undercloud) [stack@undercloud ~]$ tripleo-ansible-inventory \ --ansible_ssh_user heat-admin \ --static-yaml-inventory /home/stack/tripleo-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドノードに ReaR をインストールします。
openstack undercloud backup --setup-rear --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --setup-rear --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/tripleo-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow システムで UEFI ブートローダーを使用している場合は、アンダークラウドノードで以下の手順を実施します。
以下のツールをインストールします。
sudo dnf install dosfstools efibootmgr
$ sudo dnf install dosfstools efibootmgrCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
USING_UEFI_BOOTLOADERパラメーターの値0を値1に置き換えて、/etc/rear/local.confにある ReaR 設定ファイルで UEFI バックアップを有効にします。
1.5. アンダークラウドノードのスタンドアロンデータベースバックアップの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform 環境を 13 から 16.2 にアップグレードする場合は、アンダークラウドのアップグレードを実行してから、アンダークラウドノードで Leapp によるアップグレードプロセスを実施する前に、スタンドアロンデータベースのバックアップを作成する必要があります。
オプションで、スタンドアロンのアンダークラウドデータベースバックアップを定期的なバックアップスケジュールに含めて、追加のデータセキュリティーを提供できます。アンダークラウドノードの完全バックアップには、アンダークラウドノードのデータベースバックアップが含まれます。ただし、完全なアンダークラウドの復元が失敗した場合、完全なアンダークラウドバックアップのデータベース部分にアクセスできなくなる可能性があります。この場合、スタンドアロンのアンダークラウドデータベースのバックアップからデータベースを復元できます。
手順
アンダークラウドノードのデータベースのバックアップを作成します。
openstack undercloud backup --db-only
openstack undercloud backup --db-onlyCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースのバックアップファイルは
/home/stack with the name openstack-backup-mysql-<timestamp>.sqlに保存されます。
1.6. バックアップ用の Open vSwitch (OVS) インターフェイスの設定 リンクのコピーリンクがクリップボードにコピーされました!
お使いの環境で Open vSwitch (OVS) ブリッジを使用する場合は、アンダークラウドまたはコントロールプレーンノードをバックアップする前に OVS インターフェイスを手動で設定する必要があります。復元プロセスでは、この情報を使用してネットワークインターフェイスを復元します。
手順
/etc/rear/local.confファイルに、以下の形式でNETWORKING_PREPARATION_COMMANDSパラメーターを追加します。NETWORKING_PREPARATION_COMMANDS=('<command_1>' '<command_2>' ...')NETWORKING_PREPARATION_COMMANDS=('<command_1>' '<command_2>' ...')Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;command_1> および<command_2> を、ネットワークインターフェイスを設定するコマンドに置き換えます。たとえば、ip link add br-ctlplane type bridgeコマンドを追加してコントロールプレーンのブリッジを作成するか、ip link set eth0 upコマンドを追加してeth0の状態を up に変更します。ネットワーク設定に基づいて、パラメーターにさらにコマンドを追加します。たとえば、アンダークラウドの設定が以下のように設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NETWORKING_PREPARATION_COMMANDSパラメーターは以下のようにフォーマットされます。NETWORKING_PREPARATION_COMMANDS=('ip link add br-ctlplane type bridge' 'ip link set br-ctlplane up' 'ip link set eth0 up' 'ip link set eth0 master br-ctlplane' 'ip addr add 172.16.9.1/24 dev br-ctlplane')NETWORKING_PREPARATION_COMMANDS=('ip link add br-ctlplane type bridge' 'ip link set br-ctlplane up' 'ip link set eth0 up' 'ip link set eth0 master br-ctlplane' 'ip addr add 172.16.9.1/24 dev br-ctlplane')Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. アンダークラウドノードのバックアップの作成 リンクのコピーリンクがクリップボードにコピーされました!
アンダークラウドノードのバックアップを作成するには、openstack undercloud backup コマンドを使用します。その後、ノードが破損したりアクセスできなくなったりした場合に備えて、バックアップを使用して、アンダークラウドノードを以前の状態に復元できます。アンダークラウドノードのバックアップには、アンダークラウドノードで実行されるデータベースのバックアップが含まれます。
Red Hat OpenStack Platform 環境を 13 から 16.2 にアップグレードする場合は、アンダークラウドのアップグレードを実行してから、オーバークラウドノードで Leapp によるアップグレードプロセスを実施する前に、データベースのバックアップを別に作成する必要があります。詳細は、「アンダークラウドノードのスタンドアロンデータベースバックアップの作成」 を参照してください。
アンダークラウドノードをバックアップする前に、アンダークラウドノードを停止して、ファイルシステムが破損していることを確認します。たとえば、アンダークラウドノードのディスク破損により、ノードのバックアップが実行されなくなります。
前提条件
- バックアップノードに NFS または SFTP サーバーがインストールおよび設定されている。新しい NFS サーバーの作成方法は 「バックアップノードへの NFS サーバーのインストールと設定」 を参照してください。
- アンダークラウドノードに ReaR がインストールされている。詳細は、「アンダークラウドノードへの ReaR のインストール」 を参照してください。
- ネットワークインターフェイスに OVS ブリッジを使用する場合は、OVS インターフェイスを設定している。詳細は、「バックアップ用の Open vSwitch (OVS) インターフェイスの設定」 を参照してください。
手順
-
アンダークラウドに
stackユーザーとしてログインします。 MySQL の root パスワードを取得します。
PASSWORD=$(sudo /bin/hiera -c /etc/puppet/hiera.yaml mysql::server::root_password)
[stack@undercloud ~]$ PASSWORD=$(sudo /bin/hiera -c /etc/puppet/hiera.yaml mysql::server::root_password)Copy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドノードのデータベースのバックアップを作成します。
sudo podman exec mysql bash -c "mysqldump -uroot -p$PASSWORD --opt --all-databases" | sudo tee /root/undercloud-all-databases.sql
[stack@undercloud ~]$ sudo podman exec mysql bash -c "mysqldump -uroot -p$PASSWORD --opt --all-databases" | sudo tee /root/undercloud-all-databases.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow source コマンドでアンダークラウドの認証情報を読み込みます。
source stackrc
[stack@undercloud ~]$ source stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 事前に実行していない場合は、インベントリーファイルを作成し、
tripleo-ansible-inventoryコマンドを使用して、すべてのオーバークラウドノードのホストおよび変数が含まれる静的なインベントリーファイルを生成します。tripleo-ansible-inventory \ --ansible_ssh_user heat-admin \ --static-yaml-inventory /home/stack/tripleo-inventory.yaml
(undercloud) [stack@undercloud ~]$ tripleo-ansible-inventory \ --ansible_ssh_user heat-admin \ --static-yaml-inventory /home/stack/tripleo-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドノードのバックアップを作成します。
openstack undercloud backup --inventory /home/stack/tripleo-inventory.yaml
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --inventory /home/stack/tripleo-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8. cron を使用したアンダークラウドノードバックアップのスケジューリング リンクのコピーリンクがクリップボードにコピーされました!
Ansible backup-and-restore ロールを使用して、ReaR でアンダークラウドノードのバックアップをスケジュールできます。/var/log/rear-cron ディレクトリーでログを確認できます。
前提条件
- バックアップノードに NFS または SFTP サーバーがインストールおよび設定されている。新しい NFS サーバーの作成方法は 「バックアップノードへの NFS サーバーのインストールと設定」 を参照してください。
- アンダークラウドおよびコントロールプレーンノードに ReaR がインストールされている。詳細は、「コントロールプレーンノードへの ReaR のインストール」 を参照してください。
- バックアップの保存用に、バックアップの場所に十分なディスク領域がある。
手順
コントロールプレーンノードのバックアップをスケジュールするには、以下のコマンドを実行します。デフォルトのスケジュールは日曜日の午前 0 時です。
openstack undercloud backup --cron
openstack undercloud backup --cronCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: デプロイメントに応じてスケジュールが設定されたバックアップをカスタマイズします。
デフォルトのバックアップスケジュールを変更するには、
tripleo_backup_and_restore_cronパラメーターに別の cron スケジュールを渡します。openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron": "0 0 * * 0"}'openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron": "0 0 * * 0"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow cron がスケジュールされたバックアップを実行する際にバックアップコマンドに追加されるパラメーターを定義するには、以下の例のように
tripleo_backup_and_restore_cron_extraパラメーターをバックアップコマンドに渡します。openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_extra":"--extra-vars bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml"}'openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_extra":"--extra-vars bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックアップを実行するデフォルトユーザーを変更するには、以下の例のように
tripleo_backup_and_restore_cron_userパラメーターを backup コマンドに渡します。openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_user": "root"}openstack undercloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_user": "root"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第2章 コントロールプレーンノードのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
コントロールプレーンノードをバックアップするには、バックアップノードを設定し、コントロールプレーンノードに Relax-and-Recover ツールをインストールし、バックアップイメージを作成します。バックアップは、通常の環境メンテナンスの一環として作成できます。
さらに、更新またはアップグレードを実行する前にコントロールプレーンノードをバックアップする必要があります。更新またはアップグレード時にエラーが発生した場合は、バックアップを使用して、コントロールプレーンノードを以前の状態に復元できます。
2.1. サポート対象のバックアップ形式およびプロトコル リンクのコピーリンクがクリップボードにコピーされました!
アンダークラウドおよびバックアップ/復元プロセスは、オープンソースのツールである Relax-and-Recover (ReaR) を使用してブート可能なバックアップイメージを作成し、復元します。ReaR は Bash で記述されており、複数のイメージ形式と複数の転送プロトコルをサポートします。
次のリストは、ReaR を使用してアンダークラウドとコントロールプレーンをバックアップおよび復元するときに Red Hat OpenStack Platform がサポートするバックアップ形式とプロトコルを示しています。
- ブート可能なメディア形式
- ISO
- ファイルトランスポートプロトコル
- SFTP
- NFS
2.2. バックアップノードへの NFS サーバーのインストールと設定 リンクのコピーリンクがクリップボードにコピーされました!
バックアップファイルを保存するために、新しい NFS サーバーをインストールして設定できます。バックアップノードに NFS サーバーをインストールして設定するには、インベントリーファイルと SSH キーを順次作成し、NFS サーバーオプションを指定して openstack undercloud backup コマンドを実行します。
- NFS サーバーまたは SFTP サーバーをインストールして設定している場合は、この手順を実行する必要はありません。バックアップするノードに ReaR を設定するときに、サーバー情報を入力します。
-
デフォルトでは、NFS サーバーの Relax and Recover (ReaR) IP アドレスパラメーターは
192.168.24.1です。使用している環境に一致する IP アドレス値を設定するには、tripleo_backup_and_restore_serverパラメーターを追加する必要があります。
手順
アンダークラウドノードにおいて、source コマンドでアンダークラウドの認証情報を読み込みます。
source stackrc (undercloud) [stack@undercloud ~]$
[stack@undercloud ~]$ source stackrc (undercloud) [stack@undercloud ~]$Copy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドノードで、バックアップノードのインベントリーファイルを作成します。
(undercloud) [stack@undercloud ~]$ cat <<'EOF'> ~/nfs-inventory.yaml [BackupNode] <backup_node> ansible_host=<ip_address> ansible_user=<user> EOF
(undercloud) [stack@undercloud ~]$ cat <<'EOF'> ~/nfs-inventory.yaml [BackupNode] <backup_node> ansible_host=<ip_address> ansible_user=<user> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow <ip_address>および<user>を、実際の環境に該当する値に置き換えます。公開 SSH 鍵をアンダークラウドノードからバックアップノードにコピーします。
ssh-copy-id -i ~/.ssh/id_rsa.pub <backup_node>
(undercloud) [stack@undercloud ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub <backup_node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <backup_node>をバックアップノードのパスおよび名前に置き換えます。バックアップノードに NFS サーバーを設定します。
openstack undercloud backup --setup-nfs --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/nfs-inventory.yaml
(undercloud) [stack@undercloud ~]$ openstack undercloud backup --setup-nfs --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/nfs-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. コントロールプレーンノードへの ReaR のインストール リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドコントロールプレーンのバックアップを作成する前に、各コントロールプレーンノードに Relax and Recover (ReaR) をインストールして設定します。
既知の問題が原因でコントローラーノードがダウンしても、オーバークラウドノードの ReaR バックアップは継続されます。ReR バックアップを実行する前に、すべてのコントローラーノードが実行されていることを確認してください。今後の Red Hat OpenStack Platform (RHOSP) リリースで修正される予定です。詳細は BZ#2077335 - Back up of the overcloud ctlplane keeps going even if one controller is unreachable を参照してください。
前提条件
- バックアップノードに NFS または SFTP サーバーがインストールおよび設定されている。新しい NFS サーバーの作成方法は 「バックアップノードへの NFS サーバーのインストールと設定」 を参照してください。
手順
アンダークラウドノードにおいて、source コマンドでアンダークラウドの認証情報を読み込みます。
source stackrc
[stack@undercloud ~]$ source stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 事前に実行していない場合は、インベントリーファイルを作成し、
tripleo-ansible-inventoryコマンドを使用して、すべてのオーバークラウドノードのホストおよび変数が含まれる静的なインベントリーファイルを生成します。tripleo-ansible-inventory \ --ansible_ssh_user heat-admin \ --static-yaml-inventory /home/stack/tripleo-inventory.yaml
(undercloud) [stack@undercloud ~]$ tripleo-ansible-inventory \ --ansible_ssh_user heat-admin \ --static-yaml-inventory /home/stack/tripleo-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow bar-vars.yamlファイルで、バックアップの保存場所を設定します。NFS サーバーまたは SFTP サーバーに適した手順を実行します。NFS サーバーを使用する場合は、以下のパラメーターを
bar-vars.yamlファイルに追加します。tripleo_backup_and_restore_server: <ip_address> tripleo_backup_and_restore_shared_storage_folder: <backup_server_dir_path> tripleo_backup_and_restore_output_url: "nfs://{{ tripleo_backup_and_restore_server }}{{ tripleo_backup_and_restore_shared_storage_folder }}" tripleo_backup_and_restore_backup_url: "nfs://{{ tripleo_backup_and_restore_server }}{{ tripleo_backup_and_restore_shared_storage_folder }}"tripleo_backup_and_restore_server: <ip_address> tripleo_backup_and_restore_shared_storage_folder: <backup_server_dir_path> tripleo_backup_and_restore_output_url: "nfs://{{ tripleo_backup_and_restore_server }}{{ tripleo_backup_and_restore_shared_storage_folder }}" tripleo_backup_and_restore_backup_url: "nfs://{{ tripleo_backup_and_restore_server }}{{ tripleo_backup_and_restore_shared_storage_folder }}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow <ip_address>`and `<backup_server_dir_path>を置き換えます。tripleo_backup_and_restore_serverパラメーターのデフォルト値は192.168.24.1です。SFTP サーバーを使用する場合は、
tripleo_backup_and_restore_output_urlパラメーターを追加し、SFTP サーバーの URL と認証情報の値を設定します。tripleo_backup_and_restore_output_url: sftp://<user>:<password>@<backup_node>/ tripleo_backup_and_restore_backup_url: iso:///backup/
tripleo_backup_and_restore_output_url: sftp://<user>:<password>@<backup_node>/ tripleo_backup_and_restore_backup_url: iso:///backup/Copy to Clipboard Copied! Toggle word wrap Toggle overflow <user>、<password>、および<backup_node>を、バックアップノードの URL および認証情報に置き換えます。
コントロールプレーンノードに ReaR をインストールします。
openstack overcloud backup --setup-rear --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml
(undercloud) [stack@undercloud ~]$ openstack overcloud backup --setup-rear --extra-vars /home/stack/bar-vars.yaml --inventory /home/stack/tripleo-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow システムで UEFI ブートローダーを使用している場合は、コントロールプレーンノードで以下の手順を実行します。
以下のツールをインストールします。
sudo dnf install dosfstools efibootmgr
$ sudo dnf install dosfstools efibootmgrCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
USING_UEFI_BOOTLOADERパラメーターの値0を値1に置き換えて、/etc/rear/local.confにある ReaR 設定ファイルで UEFI バックアップを有効にします。
2.4. バックアップ用の Open vSwitch (OVS) インターフェイスの設定 リンクのコピーリンクがクリップボードにコピーされました!
お使いの環境で Open vSwitch (OVS) ブリッジを使用する場合は、アンダークラウドまたはコントロールプレーンノードをバックアップする前に OVS インターフェイスを手動で設定する必要があります。復元プロセスでは、この情報を使用してネットワークインターフェイスを復元します。
手順
/etc/rear/local.confファイルに、以下の形式でNETWORKING_PREPARATION_COMMANDSパラメーターを追加します。NETWORKING_PREPARATION_COMMANDS=('<command_1>' '<command_2>' ...')NETWORKING_PREPARATION_COMMANDS=('<command_1>' '<command_2>' ...')Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;command_1> および<command_2> を、ネットワークインターフェイスを設定するコマンドに置き換えます。たとえば、ip link add br-ctlplane type bridgeコマンドを追加してコントロールプレーンのブリッジを作成するか、ip link set eth0 upコマンドを追加してeth0の状態を up に変更します。ネットワーク設定に基づいて、パラメーターにさらにコマンドを追加します。たとえば、アンダークラウドの設定が以下のように設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NETWORKING_PREPARATION_COMMANDSパラメーターは以下のようにフォーマットされます。NETWORKING_PREPARATION_COMMANDS=('ip link add br-ctlplane type bridge' 'ip link set br-ctlplane up' 'ip link set eth0 up' 'ip link set eth0 master br-ctlplane' 'ip addr add 172.16.9.1/24 dev br-ctlplane')NETWORKING_PREPARATION_COMMANDS=('ip link add br-ctlplane type bridge' 'ip link set br-ctlplane up' 'ip link set eth0 up' 'ip link set eth0 master br-ctlplane' 'ip addr add 172.16.9.1/24 dev br-ctlplane')Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. コントロールプレーンノードのバックアップの作成 リンクのコピーリンクがクリップボードにコピーされました!
コントロールプレーンノードのバックアップを作成するには、openstack overcloud backup コマンドを使用します。その後、ノードが破損したりアクセスできなくなったりした場合に備えて、バックアップを使用して、コントロールプレーンノードを以前の状態に復元できます。コントロールプレーンのバックアップには、コントロールプレーンノードで実行されるデータベースのバックアップが含まれます。
コントロールプレーンノードをバックアップする前に、各コントロールプレーンノードを停止し、ファイルシステムが破損していることを確認します。たとえば、コントロールプレーンノードのディスク破損により、ノードのバックアップが実行されなくなります。
前提条件
- バックアップノードに NFS または SFTP サーバーがインストールおよび設定されている。新しい NFS サーバーの作成方法は 「バックアップノードへの NFS サーバーのインストールと設定」 を参照してください。
- コントロールプレーンノードに ReaR がインストールされている。詳細は、「コントロールプレーンノードへの ReaR のインストール」 を参照してください。
- ネットワークインターフェイスに OVS ブリッジを使用する場合は、OVS インターフェイスを設定している。詳細は、「バックアップ用の Open vSwitch (OVS) インターフェイスの設定」 を参照してください。
手順
各コントロールプレーンノードで
config-driveパーティションを見つけます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
config-driveパーティションは、マウントされていない 1M パーティションです。
各コントロールプレーンノードで、各ノードの
config-driveパーティションをrootユーザーとしてバックアップします。dd if=<config_drive_partition> of=/mnt/config-drive
[root@controller-x ~]# dd if=<config_drive_partition> of=/mnt/config-driveCopy to Clipboard Copied! Toggle word wrap Toggle overflow <config_drive_partition>を、手順 1 で見つけたconfig-driveパーティションの名前に置き換えます。アンダークラウドノードにおいて、source コマンドでアンダークラウドの認証情報を読み込みます。
source stackrc
[stack@undercloud ~]$ source stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 事前に実行していない場合は、
tripleo-ansible-inventoryコマンドを使用して、すべてのオーバークラウドノードのホストおよび変数が含まれる静的なインベントリーファイルを生成します。tripleo-ansible-inventory \ --ansible_ssh_user heat-admin \ --static-yaml-inventory /home/stack/tripleo-inventory.yaml
(undercloud) [stack@undercloud ~]$ tripleo-ansible-inventory \ --ansible_ssh_user heat-admin \ --static-yaml-inventory /home/stack/tripleo-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールプレーンノードのバックアップを作成します。
openstack overcloud backup --inventory /home/stack/tripleo-inventory.yaml
(undercloud) [stack@undercloud ~]$ openstack overcloud backup --inventory /home/stack/tripleo-inventory.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow バックアッププロセスは、環境へのサービスを中断することなく、各コントロールプレーンノードで順番に実行されます。
2.6. cron を使用したコントロールプレーンノードバックアップのスケジューリング リンクのコピーリンクがクリップボードにコピーされました!
Ansible backup-and-restore ロールを使用して、ReaR でコントロールプレーンノードのバックアップをスケジュールできます。/var/log/rear-cron ディレクトリーでログを確認できます。
前提条件
- バックアップノードに NFS または SFTP サーバーがインストールおよび設定されている。新しい NFS サーバーの作成方法は 「バックアップノードへの NFS サーバーのインストールと設定」 を参照してください。
- アンダークラウドおよびコントロールプレーンノードに ReaR がインストールされている。詳細は、「コントロールプレーンノードへの ReaR のインストール」 を参照してください。
- バックアップの保存用に、バックアップの場所に十分なディスク領域がある。
手順
コントロールプレーンノードのバックアップをスケジュールするには、以下のコマンドを実行します。デフォルトのスケジュールは日曜日の午前 0 時です。
openstack overcloud backup --cron
openstack overcloud backup --cronCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: デプロイメントに応じてスケジュールが設定されたバックアップをカスタマイズします。
デフォルトのバックアップスケジュールを変更するには、
tripleo_backup_and_restore_cronパラメーターに別の cron スケジュールを渡します。openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron": "0 0 * * 0"}'openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron": "0 0 * * 0"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow cron がスケジュールされたバックアップを実行する際にバックアップコマンドに追加されるパラメーターを定義するには、以下の例のように
tripleo_backup_and_restore_cron_extraパラメーターをバックアップコマンドに渡します。openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_extra":"--extra-vars bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml"}'openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_extra":"--extra-vars bar-vars.yaml --inventory /home/stack/tripleo-inventory.yaml"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックアップを実行するデフォルトユーザーを変更するには、以下の例のように
tripleo_backup_and_restore_cron_userパラメーターを backup コマンドに渡します。openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_user": "root"}openstack overcloud backup --cron --extra-vars '{"tripleo_backup_and_restore_cron_user": "root"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第3章 アンダークラウドおよびコントロールプレーンノードの復元 リンクのコピーリンクがクリップボードにコピーされました!
アンダークラウドまたはコントロールプレーンノードが破損している場合、もしくは更新またはアップグレード中にエラーが発生した場合は、コントロールプレーンノードをバックアップから以前の状態に復元できます。復元プロセスが Galera クラスターまたは共存する Ceph モニターを持つノードを自動的に復元できない場合は、これらのコンポーネントを手動で復元できます。
3.1. 復元プロセス用に同じ場所に配置された Ceph モニターを備えたコントロールプレーンを準備する リンクのコピーリンクがクリップボードにコピーされました!
同じ場所に配置された Ceph モニターを使用してコントロールプレーンノードを復元する前に、Ceph モニターのバックアップファイルをノードファイルシステムにマウントするスクリプトと、ReaR がバックアップファイルを見つけるために使用する別のスクリプトを作成して、環境を準備します。
/var/lib/ceph ディレクトリーのバックアップが作成できない場合は、Red Hat テクニカルサポートチームに連絡して ceph-mon インデックスを再ビルドする必要があります。詳細は、Red Hat Technical Support Team を参照してください。
前提条件
- アンダークラウドノードのバックアップを作成している。詳細は、「アンダークラウドノードのバックアップの作成」 を参照してください。
- コントロールプレーンノードのバックアップを作成している。詳細は、「コントロールプレーンノードのバックアップの作成」 を参照してください。
- バックアップノードにアクセスできる。
-
NETWORKING_PREPARATION_COMMANDSパラメーターで設定したネットワーク設定情報にアクセスできる (ネットワークインターフェイスの OVS ブリッジを使用する場合)。詳細は、「バックアップ用の Open vSwitch (OVS) インターフェイスの設定」 を参照してください。
手順
復元する各ノードで、スクリプト
/usr/share/rear/setup/default/011_backup_ceph.shを作成し、次のコンテンツを追加します。mount -t <file_type> <device_disk> /mnt/local cd /mnt/local [ -d "var/lib/ceph" ] && tar cvfz /tmp/ceph.tar.gz var/lib/ceph --xattrs --xattrs-include='.' --acls cd / umount <device_disk>
mount -t <file_type> <device_disk> /mnt/local cd /mnt/local [ -d "var/lib/ceph" ] && tar cvfz /tmp/ceph.tar.gz var/lib/ceph --xattrs --xattrs-include='.' --acls cd / umount <device_disk>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <file_type>および<device_disk>は、バックアップファイルの種類と場所に置き換えてください。通常、ファイルタイプはxfsで、場所は/dev/vda2です。同じノードで、スクリプト
/usr/share/rear/wrapup/default/501_restore_ceph.shを作成し、以下の出力を追加します。if [ -f "/tmp/ceph.tar.gz" ]; then rm -rf /mnt/local/var/lib/ceph/* tar xvC /mnt/local -f /tmp/ceph.tar.gz var/lib/ceph --xattrs --xattrs-include='.' fi
if [ -f "/tmp/ceph.tar.gz" ]; then rm -rf /mnt/local/var/lib/ceph/* tar xvC /mnt/local -f /tmp/ceph.tar.gz var/lib/ceph --xattrs --xattrs-include='.' fiCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. アンダークラウドノードの復元 リンクのコピーリンクがクリップボードにコピーされました!
ReaR を使用して作成したバックアップの ISO イメージを使用し、アンダークラウドノードを以前の状態に復元できます。バックアップの ISO イメージは、バックアップノードにあります。ブート可能な ISO イメージを DVD に書き込むか、Integrated Lights-Out (iLO) リモートアクセスを通じてアンダークラウドノードにダウンロードします。
前提条件
- アンダークラウドノードのバックアップを作成している。詳細は、「コントロールプレーンノードのバックアップの作成」を参照してください。
- バックアップノードにアクセスできる。
-
NETWORKING_PREPARATION_COMMANDSパラメーターで設定したネットワーク設定情報にアクセスできる (ネットワークインターフェイスの OVS ブリッジを使用する場合)。詳細は、「バックアップ用の Open vSwitch (OVS) インターフェイスの設定」 を参照してください。
手順
- アンダークラウドノードの電源をオフにします。次のステップに進む前に、アンダークラウドノードの電源が完全にオフになっていることを確認します。
- バックアップの ISO イメージでアンダークラウドノードをブートします。
Relax-and-Recoverブートメニューが表示されたら、Recover <undercloud_node>を選択します。<undercloud_node>をアンダークラウドノードの名前に置き換えます。注記システムで UEFI を使用している場合は、
Relax-and-Recover (no Secure Boot)オプションを選択します。rootユーザーとしてログインし、ノードを復元します。以下のメッセージが表示されます。
Welcome to Relax-and-Recover. Run "rear recover" to restore your system! RESCUE <undercloud_node>:~ # rear recover
Welcome to Relax-and-Recover. Run "rear recover" to restore your system! RESCUE <undercloud_node>:~ # rear recoverCopy to Clipboard Copied! Toggle word wrap Toggle overflow アンダークラウドノードの復元プロセスが完了すると、コンソールに以下のメッセージが表示されます。
Finished recovering your system Exiting rear recover Running exit tasks
Finished recovering your system Exiting rear recover Running exit tasksCopy to Clipboard Copied! Toggle word wrap Toggle overflow ノードの電源を切ります。
RESCUE <undercloud_node>:~ # poweroff
RESCUE <undercloud_node>:~ # poweroffCopy to Clipboard Copied! Toggle word wrap Toggle overflow ノードをブートすると、以前の状態で再開されます。
3.3. コントロールプレーンノードの復元 リンクのコピーリンクがクリップボードにコピーされました!
更新またはアップグレード中にエラーが発生した場合は、ReaR を使用して作成したバックアップの ISO イメージを使用して、コントロールプレーンノードを以前の状態に復元できます。
コントロールプレーンを復元する場合は、状態の整合性を確保するために、すべてのコントロールプレーンノードを復元する必要があります。
バックアップの ISO イメージは、バックアップノードにあります。ブート可能な ISO イメージを DVD に書き込むか、Integrated Lights-Out (iLO) リモートアクセスを通じてアンダークラウドノードにダウンロードします。
Red Hat は、Open vSwitch (OVS) およびデフォルトの Open Virtual Network (OVN) などのネイティブ SDN を使用する Red Hat OpenStack Platform のバックアップをサポートします。サードパーティーの SDN の詳細は、サードパーティーの SDN ドキュメントを参照してください。
前提条件
- コントロールプレーンノードのバックアップを作成している。詳細は、「コントロールプレーンノードのバックアップの作成」 を参照してください。
- バックアップノードにアクセスできる。
-
NETWORKING_PREPARATION_COMMANDSパラメーターで設定したネットワーク設定情報にアクセスできる (ネットワークインターフェイスの OVS ブリッジを使用する場合)。詳細は、「バックアップ用の Open vSwitch (OVS) インターフェイスの設定」 を参照してください。
手順
- 各コントロールプレーンノードの電源をオフにします。次のステップに進む前に、コントロールプレーンノードの電源が完全にオフになっていることを確認します。
- 対応するバックアップの ISO イメージで各コントロールプレーンノードをブートします。
Relax-and-Recoverブートメニューが表示されたら、各コントロールプレーンノードでRecover <control_plane_node>を選択します。<control_plane_node>を対応するコントロールプレーンノードの名前に置き換えます。注記システムで UEFI を使用している場合は、
Relax-and-Recover (no Secure Boot)オプションを選択します。それぞれのコントロールプレーンノードで
rootユーザーとしてログインし、ノードを復元します。以下のメッセージが表示されます。
Welcome to Relax-and-Recover. Run "rear recover" to restore your system! RESCUE <control_plane_node>:~ # rear recover
Welcome to Relax-and-Recover. Run "rear recover" to restore your system! RESCUE <control_plane_node>:~ # rear recoverCopy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールプレーンノードの復元プロセスが完了すると、コンソールに以下のメッセージが表示されます。
Finished recovering your system Exiting rear recover Running exit tasks
Finished recovering your system Exiting rear recover Running exit tasksCopy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドラインコンソールが利用可能な場合は、各コントロールプレーンノードの
config-driveパーティションを復元します。once completed, restore the config-drive partition (which is ISO9660) RESCUE <control_plane_node>:~ $ dd if=/mnt/local/mnt/config-drive of=<config_drive_partition>
# once completed, restore the config-drive partition (which is ISO9660) RESCUE <control_plane_node>:~ $ dd if=/mnt/local/mnt/config-drive of=<config_drive_partition>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードの電源を切ります。
RESCUE <control_plane_node>:~ # poweroff
RESCUE <control_plane_node>:~ # poweroffCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ブートシーケンスを通常のブートデバイスに設定します。ノードをブートすると、以前の状態で再開されます。
サービスが正常に実行されていることを確認するには、pacemaker のステータスを確認します。
rootユーザーとしてコントローラーノードにログインし、以下のコマンドを入力します。pcs status
# pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow - オーバークラウドのステータスを確認するには、OpenStack Integration Test Suite (tempest) を使用します。詳細は、Validating your OpenStack cloud with the Integration Test Suite (tempest) を参照してください。
トラブルシューティング
-
pcs statusで表示されるリソースアラームを以下のコマンドで解除します。
pcs resource clean
# pcs resource clean
-
pcs statusで表示される STONITH フェンシングの動作エラーを以下のコマンドで解除します。
pcs resource clean pcs stonith history cleanup
# pcs resource clean
# pcs stonith history cleanup
3.4. Galera クラスターの手動による復元 リンクのコピーリンクがクリップボードにコピーされました!
復元手順の一環として Galera クラスターが復元されない場合は、Galera を手動で復元する必要があります。
以下の手順では、1 つのコントローラーノードでいくつかのステップを実施する必要があります。手順の実施と同じコントローラーノードで、これらのステップを実施してください。
手順
Controller-0で、Galera クラスターの仮想 IP を取得します。sudo hiera -c /etc/puppet/hiera.yaml mysql_vip
$ sudo hiera -c /etc/puppet/hiera.yaml mysql_vipCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで、仮想 IP を通じたデータベース接続を無効にします。
sudo iptables -I INPUT -p tcp --destination-port 3306 -d $MYSQL_VIP -j DROP
$ sudo iptables -I INPUT -p tcp --destination-port 3306 -d $MYSQL_VIP -j DROPCopy to Clipboard Copied! Toggle word wrap Toggle overflow Controller-0で MySQL の root パスワードを取得します。sudo hiera -c /etc/puppet/hiera.yaml mysql::server::root_password
$ sudo hiera -c /etc/puppet/hiera.yaml mysql::server::root_passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow Controller-0で、Galera リソースをunmanagedモードに設定します。sudo pcs resource unmanage galera-bundle
$ sudo pcs resource unmanage galera-bundleCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで、MySQL コンテナーを停止します。
sudo podman container stop $(sudo podman container ls --all --format "{{.Names}}" --filter=name=galera-bundle)$ sudo podman container stop $(sudo podman container ls --all --format "{{.Names}}" --filter=name=galera-bundle)Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで、現在のディレクトリーを移動します。
sudo mv /var/lib/mysql /var/lib/mysql-save
$ sudo mv /var/lib/mysql /var/lib/mysql-saveCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで、新規ディレクトリー
/var/lib/mysqを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで、MySQL コンテナーを起動します。
sudo podman container start $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle)$ sudo podman container start $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle)Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで、MySQL データベースを作成します。
sudo podman exec -i $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql_install_db --datadir=/var/lib/mysql --user=mysql --log_error=/var/log/mysql/mysql_init.log"$ sudo podman exec -i $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql_install_db --datadir=/var/lib/mysql --user=mysql --log_error=/var/log/mysql/mysql_init.log"Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで、データベースを起動します。
sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysqld_safe --skip-networking --wsrep-on=OFF --log-error=/var/log/mysql/mysql_safe.log" &$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysqld_safe --skip-networking --wsrep-on=OFF --log-error=/var/log/mysql/mysql_safe.log" &Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで、
.my.cnfGalera 設定ファイルを移動します。sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mv /root/.my.cnf /root/.my.cnf.bck"$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mv /root/.my.cnf /root/.my.cnf.bck"Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで、Galera root パスワードをリセットします。
sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql -uroot -e'use mysql;update user set password=PASSWORD(\"$ROOTPASSWORD\")where User=\"root\";flush privileges;'"$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql -uroot -e'use mysql;update user set password=PASSWORD(\"$ROOTPASSWORD\")where User=\"root\";flush privileges;'"Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノード上の Galera コンテナー内で、
.my.cnfGalera 設定ファイルを復元します。sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mv /root/.my.cnf.bck /root/.my.cnf"$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mv /root/.my.cnf.bck /root/.my.cnf"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Controller-0で、バックアップデータベースファイルを/var/lib/MySQLにコピーします。sudo cp $BACKUP_FILE /var/lib/mysql sudo cp $BACKUP_GRANT_FILE /var/lib/mysql
$ sudo cp $BACKUP_FILE /var/lib/mysql $ sudo cp $BACKUP_GRANT_FILE /var/lib/mysqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記これらのファイルへのパスは /home/heat-admin/ です。
Controller-0で、MySQL データベースを復元します。sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql -u root -p$ROOT_PASSWORD < \"/var/lib/mysql/$BACKUP_FILE\" " sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql -u root -p$ROOT_PASSWORD < \"/var/lib/mysql/$BACKUP_GRANT_FILE\" "$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql -u root -p$ROOT_PASSWORD < \"/var/lib/mysql/$BACKUP_FILE\" " $ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysql -u root -p$ROOT_PASSWORD < \"/var/lib/mysql/$BACKUP_GRANT_FILE\" "Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで、データベースをシャットダウンします。
sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysqladmin shutdown"$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "mysqladmin shutdown"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Controller-0で、ブートストラップノードを起動します。sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle) \ /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/mysql_cluster.log --user=mysql --open-files-limit=16384 \ --wsrep-cluster-address=gcomm:// &$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle) \ /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/mysql_cluster.log --user=mysql --open-files-limit=16384 \ --wsrep-cluster-address=gcomm:// &Copy to Clipboard Copied! Toggle word wrap Toggle overflow 検証: Controller-0 で、クラスターのステータスを確認します。
sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "clustercheck"$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "clustercheck"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Galera cluster node is synced のメッセージが表示されるのを確認してください。表示されない場合は、ノードを再作成する必要があります。
Controller-0で、設定からクラスターアドレスを取得します。sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "grep wsrep_cluster_address /etc/my.cnf.d/galera.cnf" | awk '{print $3}'$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "grep wsrep_cluster_address /etc/my.cnf.d/galera.cnf" | awk '{print $3}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 残りの各コントローラーノードでデータベースを起動し、クラスターを検証します。
データベースを起動します。
sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) /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/mysql_cluster.log --user=mysql --open-files-limit=16384 \ --wsrep-cluster-address=$CLUSTER_ADDRESS &$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) /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/mysql_cluster.log --user=mysql --open-files-limit=16384 \ --wsrep-cluster-address=$CLUSTER_ADDRESS &Copy to Clipboard Copied! Toggle word wrap Toggle overflow MYSQL クラスターのステータスを確認します。
sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "clustercheck"$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" \ --filter=name=galera-bundle) bash -c "clustercheck"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Galera cluster node is synced のメッセージが表示されるのを確認してください。表示されない場合は、ノードを再作成する必要があります。
すべてのコントローラーノードで MySQL コンテナーを停止します。
sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle) \ /usr/bin/mysqladmin -u root shutdown$ sudo podman exec $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle) \ /usr/bin/mysqladmin -u root shutdownCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで以下のファイアウォールルールを削除して、仮想 IP アドレス経由のデータベース接続を許可します。
sudo iptables -D INPUT -p tcp --destination-port 3306 -d $MYSQL_VIP -j DROP
$ sudo iptables -D INPUT -p tcp --destination-port 3306 -d $MYSQL_VIP -j DROPCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで MySQL コンテナーを再起動します。
sudo podman container restart $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle)$ sudo podman container restart $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=galera-bundle)Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのコントローラーノードで
clustercheckコンテナーを再起動します。sudo podman container restart $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=clustercheck)$ sudo podman container restart $(sudo podman container ls --all --format "{{ .Names }}" --filter=name=clustercheck)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Controller-0で、Galera リソースをmanagedモードに設定します。sudo pcs resource manage galera-bundle
$ sudo pcs resource manage galera-bundleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
サービスが正常に実行されていることを確認するには、pacemaker のステータスを確認します。
sudo pcs status
$ sudo pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow - オーバークラウドのステータスを確認するには、OpenStack Integration Test Suite (tempest) を使用します。詳細は、Validating your OpenStack cloud with the Integration Test Suite (tempest) を参照してください。
特定のノードで問題が疑われる場合は、
clustercheckでクラスターの状態を確認します。sudo podman exec clustercheck /usr/bin/clustercheck
$ sudo podman exec clustercheck /usr/bin/clustercheckCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. アンダークラウドのノードデータベースを手動で復元する リンクのコピーリンクがクリップボードにコピーされました!
アンダークラウドのデータベースがアンダークラウドの復元プロセスの一部として復元されない場合は、データベースを手動で復元できます。データベースを復元できるのは、以前にスタンドアロンのデータベースバックアップを作成した場合のみです。
前提条件
- アンダークラウドデータベースのスタンドアロンバックアップを作成している。詳細は、「アンダークラウドノードのスタンドアロンデータベースバックアップの作成」 を参照してください。
手順
-
director アンダークラウドノードに
rootユーザーとしてログインします。 すべての tripleo サービスを停止します。
systemctl stop tripleo_*
[root@director ~]# systemctl stop tripleo_*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、サーバーでコンテナーが実行していないことを確認します。
podman ps
[root@director ~]# podman psCopy to Clipboard Copied! Toggle word wrap Toggle overflow 実行中のコンテナーがある場合は、次のコマンドを入力してコンテナーを停止します。
podman stop <container_name>
[root@director ~]# podman stop <container_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在の
/var/lib/mysqlディレクトリーのバックアップを作成してから、そのディレクトリーを削除します。cp -a /var/lib/mysql /var/lib/mysql_bck rm -rf /var/lib/mysql
[root@director ~]# cp -a /var/lib/mysql /var/lib/mysql_bck [root@director ~]# rm -rf /var/lib/mysqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースディレクトリーを再作成し、新しいディレクトリーに SELinux の属性を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mariadbイメージのローカルタグを作成します。<image_id>および<undercloud.ctlplane.example.com>を、使用している環境の値に置き換えます。podman images | grep mariadb <undercloud.ctlplane.example.com>:8787/rh-osbs/rhosp16-openstack-mariadb 16.2_20210322.1 <image_id> 3 weeks ago 718 MB
[root@director ~]# podman images | grep mariadb <undercloud.ctlplane.example.com>:8787/rh-osbs/rhosp16-openstack-mariadb 16.2_20210322.1 <image_id> 3 weeks ago 718 MBCopy to Clipboard Copied! Toggle word wrap Toggle overflow podman tag <image_id> mariadb
[root@director ~]# podman tag <image_id> mariadbCopy to Clipboard Copied! Toggle word wrap Toggle overflow podman images | grep maria localhost/mariadb latest <image_id> 3 weeks ago 718 MB <undercloud.ctlplane.example.com>:8787/rh-osbs/rhosp16-openstack-mariadb 16.2_20210322.1 <image_id> 3 weeks ago 718 MB
[root@director ~]# podman images | grep maria localhost/mariadb latest <image_id> 3 weeks ago 718 MB <undercloud.ctlplane.example.com>:8787/rh-osbs/rhosp16-openstack-mariadb 16.2_20210322.1 <image_id> 3 weeks ago 718 MBCopy to Clipboard Copied! Toggle word wrap Toggle overflow /var/lib/mysqlディレクトリーをコンテナーで初期化します。podman run --net=host -v /var/lib/mysql:/var/lib/mysql localhost/mariadb mysql_install_db --datadir=/var/lib/mysql --user=mysql
[root@director ~]# podman run --net=host -v /var/lib/mysql:/var/lib/mysql localhost/mariadb mysql_install_db --datadir=/var/lib/mysql --user=mysqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースにインポートするデータベースのバックアップファイルをコピーします。
cp /root/undercloud-all-databases.sql /var/lib/mysql
[root@director ~]# cp /root/undercloud-all-databases.sql /var/lib/mysqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow データベースサービスを開始して、データをインポートします。
podman run --net=host -dt -v /var/lib/mysql:/var/lib/mysql localhost/mariadb /usr/libexec/mysqld
[root@director ~]# podman run --net=host -dt -v /var/lib/mysql:/var/lib/mysql localhost/mariadb /usr/libexec/mysqldCopy to Clipboard Copied! Toggle word wrap Toggle overflow データを読み込み、
max_allowed_packetパラメーターを設定します。コンテナーにログインし、設定を行います。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーを停止します。
podman stop <container_id>
[root@director ~]# podman stop <container_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテナーが動いていないことを確認します。
podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@director ~]# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@director ~]#Copy to Clipboard Copied! Toggle word wrap Toggle overflow
すべての tripleo サービスを再起動します。
systemctl start multi-user.target
[root@director ~]# systemctl start multi-user.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow