3.3. Fuse Online 環境の復元
コネクションまたはインテグレーションが作成されていない新しい Fuse Online 環境で、Fuse Online 環境のバックアップを復元できます。Fuse Online 環境の復元後、復元されたコネクションを編集してパスワードを更新する必要があります。その後、復元されたインテグレーションをパブリッシュできます。
前提条件
- OCP がオンサイトで稼働している必要があります。
-
oc
クライアントツールがインストール済みであり、Fuse Online 環境を復元する OCP クラスターに接続されている必要があります。 - クラスター管理者権限を持つユーザーは、該当ユーザーがクラスターでアクセス権限を持つプロジェクトに Fuse Online をインストールするための権限を付与済みである必要があります。
- データを定期的にバックアップし、Amazon S3 にデータをアップロードするよう設定された Fuse Online 環境が必要です。
- バックアップされた Fuse Online 環境と、バックアップを復元する Fuse Online 環境で、Fuse Online のリリース番号 (例: 7.6) が同じである必要があります。
- Fuse Online バックアップが含まれる AWS バケットにアクセスする権限が必要です。
- バックアップを復元する Fuse Online 環境は新しい Fuse Online インストールである必要があります。つまり、コネクションやインテグレーションは定義されていません。Fuse Online 環境にコネクションとインテグレーションがあるプロジェクトで復元する場合、Fuse Online 環境をアンインストールし、新しい Fuse Online 環境をインストールする必要があります。
手順
- Amazon S3 から必要なバックアップファイルをダウンロードします。詳細は、AWS ドキュメントの S3 バケットからオブジェクトをダウンロードする方法 を参照してください。
zip ファイルの内容を展開します。たとえば、以下のコマンドラインを実行すると、
7.6-2020-03-15-23:30:00.zip
ファイルが展開され、内容が/tmp/fuse-online-backup
フォルダーにコピーされます。unzip 7.6-2020-03-15-23:30:00.zip -d /tmp/fuse-online-backup
以下の例のように、Fuse Online データベースをデコードします。
base64 -d /tmp/fuse-online-backup/syndesis-db.dump > /tmp/fuse-online-backup/syndesis-db
新しい Fuse Online 環境を稼働している OpenShift プロジェクトに切り替えます。たとえば、新しい Fuse Online 環境が
my-fuse-online-project
にある場合は、以下のコマンドを実行します。oc project my-fuse-online-project
これ以降の手順では、新しい Fuse Online 環境が含まれるプロジェクトに切り替えたことを想定します。
データベース Pod の名前を取得します。
復元された Fuse Online 環境で、提供された内部 PostgreSQL データベースが使用される場合は、以下のコマンドを実行し、データベース Pod の名前を取得します。
oc get pods -l deploymentconfig=syndesis-db -o jsonpath='{.items[*].metadata.name}'
復元された Fuse Online 環境で外部データベースが使用される場合、そのデータベースの Pod の名前を取得する方法を知っている必要があります。
これ以降のコマンドでは、
DATABASE_POD_NAME
を復元された Fuse Online 環境のデータベース Pod の名前に置き換えます。データベースにアクセスしているコンポーネントをスケールダウンします。
syndesis-operator
をスケールダウンし、他のコンポーネントをスケールダウンできるようにします。oc scale dc syndesis-operator --replicas 0
syndesis-server
およびsyndesis-meta
コンポーネントをスケールダウンします。oc scale dc syndesis-server --replicas 0
oc scale dc syndesis-meta --replicas 0
データベースのバックアップファイルを Fuse Online データベース Pod に送信します。
oc cp /tmp/fuse-online-backup/syndesis-db DATABASE_POD_NAME:/tmp/syndesis-db
Fuse Online データベース Pod でリモートシェルセッションを開きます。
oc rsh DATABASE_POD_NAME
以下のコマンドを実行して Fuse Online データベースを復元します。
psql
コマンドによってデータベースのパスワードが要求され、復元された Fuse Online 環境で提供された内部 PostgreSQL データベースが使用される場合は、syndesis-db
デプロイメント設定のPOSTGRESQL_PASSWORD
環境変数でパスワードを確認できます。復元された Fuse Online 環境で外部データベースが使用される場合、パスワードを知っている必要があります。cd /tmp psql -c 'DROP database if exists syndesis_restore' psql -c 'CREATE database syndesis_restore' pg_restore -v -d syndesis_restore /tmp/syndesis-db psql -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'syndesis'" psql -c 'DROP database if exists syndesis' psql -c 'ALTER database syndesis_restore rename to syndesis'
Fuse Online が復元されるはずです。RSH セッションを終了できます。
exit
Fuse Online コンポーネントをスケールアップします。
oc scale dc syndesis-operator --replicas 1
syndesis-operator
を1
にスケールアップすると、スケールダウンされた他の Pod がスケールアップされます。スケールアップされない場合は手作業でスケールアップできます。oc scale dc syndesis-server --replicas 1
oc scale dc syndesis-meta --replicas 1
サーバーは復元された各インテグレーションを開始しようとしますが、最初にコネクションを更新する必要があります。したがって、復元されたインテグレーションが稼働していないことを確認します。
Fuse Online コンソールルートを取得します。
echo "https://$(oc get route/syndesis -o jsonpath='{.spec.host}' )"
- Fuse Online をインストールする権限を持つ OpenShift ユーザーアカウントで、Fuse Online コンソールにログインします。
- インテグレーションのリストを表示し、すべてのインテグレーションが停止したことを確認します。稼働しているインテグレーションがある場合は停止します。
パスワードのある各コネクションを更新し、この Fuse Online 環境の正しいパスワードを適用します。以下の手順は、提供された PostgresDB コネクションでこの作業を行う方法になります。
-
この復元された Fuse Online 環境が稼働しているプロジェクトの OpenShift コンソールで、PostgresDB コネクションのパスワードを取得します。
syndesis-db
では、パスワードは環境変数にあります。 - Fuse Online コンソールでコネクションを表示します。
- PostgresDB コネクションを編集します。
- PostgresDB コネクションのコネクション詳細で、取得したパスワードを Password フィールドに貼り付けます。
-
この復元された Fuse Online 環境が稼働しているプロジェクトの OpenShift コンソールで、PostgresDB コネクションのパスワードを取得します。
各インテグレーションで Configuration Required が表示されないことを確認します。表示される場合は、インテグレーションを編集して問題を解決します。インテグレーションのすべてのステップが正しいければ、インテグレーションをパブリッシュします。
Build ステップの直後に、インテグレーションが Stopped 状態にロールバックされ続ける場合は、デプロイメントを削除して、設定が必要ないことを確認し、再度インテグレーションのパブリッシュを試行します。
ログに記録された以下のメッセージは、無視しても問題はありません。
Error performing GET request to https://syndesis-my-fuse-online-project.my-cluster-url/api/v1/metrics/integrations