第2章 アンダークラウドの復元
本項では、Red Hat OpenStack Platform director で使用するアンダークラウドの復元方法を説明します。
2.1. アンダークラウドの復元
以下の復元プロセスは、アンダークラウドノードでエラーが発生して、回復不可能な状態であることを前提としています。この手順では、新規インストール環境でデータベースおよびクリティカルなファイルシステムの復元を行う必要があります。以下が前提条件です。
- Red Hat Enterprise Linux 7 の最新版を再インストール済みであること
- ハードウェアレイアウトが同じであること
- マシンのホスト名とアンダークラウドの設定が同じであること
-
バックアップアーカイブが
rootディレクトリーにコピー済みであること
手順
-
アンダークラウドに
rootユーザーとしてログインします。 stackユーザーを作成します。[root@director ~]# useradd stack
そのユーザーのパスワードを設定します。
[root@director ~]# passwd stack
sudoを使用する場合にパスワードを要求されないようにします。[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@director ~]# chmod 0440 /etc/sudoers.d/stack
コンテンツ配信ネットワークにシステムを登録します。プロンプトが表示されたら、カスタマーポータルのユーザー名とパスワードを入力します。
[root@director ~]# subscription-manager register
Red Hat OpenStack Platform のエンタイトルメントをアタッチします。
[root@director ~]# subscription-manager attach --pool=Valid-Pool-Number-123456
デフォルトのリポジトリーをすべて無効にしてから、必要な Red Hat Enterprise Linux リポジトリーを有効にします。
[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-rpms
システムで更新を実行して、ベースシステムパッケージを最新の状態にします。
[root@director ~]# yum update -y [root@director ~]# reboot
アンダークラウドの時刻が同期されていることを確認します。以下に例を示します。
[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 ntpd
バックアップ用に一時ディレクトリーを作成します。
[root@director ~]# mkdir /var/tmp/undercloud_backup
ファイルシステムのバックアップアーカイブを一時ディレクトリーに抽出します。
[root@director ~]# tar -xvf /root/undercloud-backup-[timestamp].tar -C /var/tmp/undercloud_backup --xattrs || true
rsyncをインストールします。[root@director ~]# yum -y install rsync
以下のディレクトリーをバックアップのコンテンツと同期します。
[root@director ~]# rsync -a -X /var/tmp/undercloud_backup/home/stack/ /home/stack [root@director ~]# rsync -a -X /var/tmp/undercloud_backup/etc/haproxy/ /etc/haproxy/ [root@director ~]# rsync -a -X /var/tmp/undercloud_backup/etc/pki/instack-certs/ /etc/pki/instack-certs/ [root@director ~]# mkdir -p /etc/puppet/hieradata/ [root@director ~]# rsync -a -X /var/tmp/undercloud_backup/etc/puppet/hieradata/ /etc/puppet/hieradata/ [root@director ~]# rsync -a -X /var/tmp/undercloud_backup/srv/node/ /srv/node/ [root@director ~]# rsync -a -X /var/tmp/undercloud_backup/var/lib/glance/ /var/lib/glance/
openstack-keystoneパッケージをインストールして、その設定データを同期します。[root@director ~]# yum -y install openstack-keystone [root@director ~]# rsync -a /var/tmp/undercloud_backup/etc/keystone/ /etc/keystone/
policycoreutils-pythonパッケージをインストールします。[root@director ~]# yum -y install policycoreutils-python
アンダークラウドで SSL を使用している場合には、CA 証明書をリフレッシュします。
[root@director ~]# semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?" [root@director ~]# restorecon -R /etc/pki/instack-certs [root@director ~]# update-ca-trust extract
データベースサーバーとクライアントツールをインストールします。
[root@director ~]# yum install -y mariadb mariadb-server python-tripleoclient
データベースを起動します。
[root@director ~]# systemctl start mariadb [root@director ~]# systemctl enable mariadb
データベースのバックアップのサイズに対応するように、許可されるパケット数を増やします。
[root@director ~]# mysql -uroot -e"set global max_allowed_packet = 1073741824;"
データベースのバックアップを復元します。
[root@director ~]# mysql -u root < /var/tmp/undercloud_backup/root/undercloud-all-databases.sql
Mariadb を再起動して、バックアップファイルからパーミッションをリフレッシュします。
[root@director ~]# systemctl restart mariadb
古いユーザーパーミッションの一覧を取得します。
[root@director ~]# mysql -e 'select host, user, password from mysql.user;'
リストされた各ホストの古いユーザーパーミッションを削除します。以下に例を示します。
[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 ~]# mysql -e 'flush privileges'
openstack-glanceパッケージをインストールして、そのファイルパーミッションを復元します。[root@director ~]# yum install -y openstack-glance [root@director ~]# chown -R glance: /var/lib/glance/images
openstack-swiftパッケージをインストールして、そのファイルパーミッションを復元します。[root@director ~]# yum install -y openstack-swift [root@director ~]# chown -R swift: /srv/node
新規作成した
stackユーザーに切り替えます。[root@director ~]# su - stack [stack@director ~]$
アンダークラウドのインストールコマンドを実行します。このコマンドは、
stackユーザーのホームディレクトリーから実行するようにしてください。[stack@director ~]$ openstack undercloud install
- インストールが完了するまで待ちます。アンダークラウドは、オーバークラウドへの接続を自動的に復元します。ノードは、保留中のタスクに対して、OpenStack Orchestration (heat) のポーリングを続けます。
コンテナーのデータをバックアップのコンテンツと同期します。
[root@director ~]$ sudo rsync -a -X /var/tmp/undercloud_backup/var/lib/docker/ /var/lib/docker/ [root@director ~]$ sudo rsync -a -X /var/tmp/undercloud_backup/var/lib/registry/ /var/lib/registry/ [root@director ~]$ sudo rsync -a -X /var/tmp/undercloud_backup/etc/docker/ /etc/docker/ [root@director ~]$ sudo rsync -a -X /var/tmp/undercloud_backup/etc/docker-distribution/ /etc/docker-distribution/ [root@director ~]$ sudo cp /var/tmp/undercloud_backup/etc/sysconfig/docker* /etc/sysconfig/. [root@director ~]$ sudo systemctl restart docker docker-distribution
2.2. 完了した復元の検証
以下のコマンドを使用して、新しく復元した環境のヘルスチェックを実行します。
2.2.1. Identity サービス (Keystone) の動作の確認
このステップでは、ユーザーの一覧をクエリーで取得して、Identity サービスの動作を検証します。
# source overcloudrc # openstack user list
コントローラーから実行する場合は、このコマンドの出力には、この環境で作成されたユーザーの一覧が含まれているはずです。このアクションでは、keystone が実行中でユーザーの要求を正常に認証していることが分かります。以下に例を示します。
# openstack user list +----------------------------------+------------+---------+----------------------+ | id | name | enabled | email | +----------------------------------+------------+---------+----------------------+ | 9e47bb53bb40453094e32eccce996828 | admin | True | root@localhost | | 9fe2466f88cc4fa0ba69e59b47898829 | ceilometer | True | ceilometer@localhost | | 7a40d944e55d422fa4e85daf47e47c42 | cinder | True | cinder@localhost | | 3d2ed97538064f258f67c98d1912132e | demo | True | | | 756e73a5115d4e9a947d8aadc6f5ac22 | glance | True | glance@localhost | | f0d1fcee8f9b4da39556b78b72fdafb1 | neutron | True | neutron@localhost | | e9025f3faeee4d6bb7a057523576ea19 | nova | True | nova@localhost | | 65c60b1278a0498980b2dc46c7dcf4b7 | swift | True | swift@localhost | +----------------------------------+------------+---------+----------------------+

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.