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 環境をインストールする必要があります。

手順

  1. Amazon S3 から必要なバックアップファイルをダウンロードします。詳細は、AWS ドキュメントの S3 バケットからオブジェクトをダウンロードする方法 を参照してください。
  2. 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

  3. 以下の例のように、Fuse Online データベースをデコードします。

    base64 -d /tmp/fuse-online-backup/syndesis-db.dump > /tmp/fuse-online-backup/syndesis-db
  4. 新しい Fuse Online 環境を稼働している OpenShift プロジェクトに切り替えます。たとえば、新しい Fuse Online 環境が my-fuse-online-project にある場合は、以下のコマンドを実行します。

    oc project my-fuse-online-project

    これ以降の手順では、新しい Fuse Online 環境が含まれるプロジェクトに切り替えたことを想定します。

  5. データベース 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 の名前に置き換えます。

  6. データベースにアクセスしているコンポーネントをスケールダウンします。

    1. syndesis-operator をスケールダウンし、他のコンポーネントをスケールダウンできるようにします。

      oc scale dc syndesis-operator --replicas 0

    2. syndesis-server および syndesis-meta コンポーネントをスケールダウンします。

      oc scale dc syndesis-server --replicas 0
      oc scale dc syndesis-meta --replicas 0

  7. データベースのバックアップファイルを Fuse Online データベース Pod に送信します。

    oc cp /tmp/fuse-online-backup/syndesis-db DATABASE_POD_NAME:/tmp/syndesis-db
  8. Fuse Online データベース Pod でリモートシェルセッションを開きます。

    oc rsh DATABASE_POD_NAME

  9. 以下のコマンドを実行して 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

  10. Fuse Online コンポーネントをスケールアップします。

    oc scale dc syndesis-operator --replicas 1

    syndesis-operator1 にスケールアップすると、スケールダウンされた他の Pod がスケールアップされます。スケールアップされない場合は手作業でスケールアップできます。

    oc scale dc syndesis-server --replicas 1
    oc scale dc syndesis-meta --replicas 1

  11. サーバーは復元された各インテグレーションを開始しようとしますが、最初にコネクションを更新する必要があります。したがって、復元されたインテグレーションが稼働していないことを確認します。

    1. Fuse Online コンソールルートを取得します。

      echo "https://$(oc get route/syndesis -o jsonpath='{.spec.host}' )"
    2. Fuse Online をインストールする権限を持つ OpenShift ユーザーアカウントで、Fuse Online コンソールにログインします。
    3. インテグレーションのリストを表示し、すべてのインテグレーションが停止したことを確認します。稼働しているインテグレーションがある場合は停止します。
  12. パスワードのある各コネクションを更新し、この Fuse Online 環境の正しいパスワードを適用します。以下の手順は、提供された PostgresDB コネクションでこの作業を行う方法になります。

    1. この復元された Fuse Online 環境が稼働しているプロジェクトの OpenShift コンソールで、PostgresDB コネクションのパスワードを取得します。syndesis-db では、パスワードは環境変数にあります。
    2. Fuse Online コンソールでコネクションを表示します。
    3. PostgresDB コネクションを編集します。
    4. PostgresDB コネクションのコネクション詳細で、取得したパスワードを Password フィールドに貼り付けます。
  13. 各インテグレーションで Configuration Required が表示されないことを確認します。表示される場合は、インテグレーションを編集して問題を解決します。インテグレーションのすべてのステップが正しいければ、インテグレーションをパブリッシュします。

    Build ステップの直後に、インテグレーションが Stopped 状態にロールバックされ続ける場合は、デプロイメントを削除して、設定が必要ないことを確認し、再度インテグレーションのパブリッシュを試行します。

    ログに記録された以下のメッセージは、無視しても問題はありません。

    Error performing GET request to https://syndesis-my-fuse-online-project.my-cluster-url/api/v1/metrics/integrations