Apigee Edge 4.52.02 をロールバックする

Edge 4.52.02 への更新時にエラーが発生した場合、エラーの原因となったコンポーネントをロールバックしてから更新を再試行できます。

Edge 4.52.02 は次のメジャー リリース バージョンにロールバックできます。

  • バージョン 4.52.01
  • バージョン 4.52.00
  • バージョン 4.51.00

バージョンをロールバックするには、アップグレードした可能性のあるすべてのコンポーネントをロールバックする必要があります。また、開始したバージョンによっては、特定のソフトウェア コンポーネントをロールバックする前に特別な考慮事項を考慮する必要があります。次の表に、ロールバック中に特別な手順が必要になる可能性のあるソフトウェアを示します。

バージョンにロールバック ソフトウェアに関する特別な考慮事項
4.52.01 Cassandra
4.52.00 Cassandra、Zookeeper、Qpid
4.51.00 Cassandra、Zookeeper、Qpid、Postgres

ロールバックを行うシナリオには、次の 2 つがあります。

  1. 以前のメジャー リリースまたはマイナー リリースにロールバックする。たとえば、4.52.02 から 4.52.00 へのロールバックです。
  2. 同じリリースの前の修正プログラム リリースにロールバックする。たとえば、4.52.00.02 から 4.52.00.01 へのロールバックです。

詳細については、Apigee Edge リリース プロセスをご覧ください。

ロールバックの順序

コンポーネントのロールバックは、アップグレードされた順序の逆順で行う必要があります。ただし、Management Server は Cassandra の後にロールバックする必要があります。

Private Cloud 4.52.02 の一般的なロールバック順序は次のとおりです。

  1. Postgres、Qpid、その他の分析関連コンポーネントをロールバックする
  2. Router と Message Processor をロールバックする
  3. Cassandra、Zookeeper のロールバック
  4. ロールバック Management Server

たとえば、Cassandra クラスタ全体、すべての管理サーバー、いくつかの RMP をバージョン 4.52.01 からバージョン 4.52.02 にアップグレードし、ロールバックする場合を考えてみましょう。この場合は、次のようにします。

  1. すべての RMP を 1 つずつロールバックする
  2. バックアップを使用して Cassandra クラスタ全体をロールバックする
  3. Edge Management Server ノードを 1 つずつロールバックする

ロールバックを実施できるユーザー

ロールバックを行うユーザーは、Edge を更新したユーザーか、root として実行するユーザーである必要があります。

デフォルトでは、Edge コンポーネントはユーザー「apigee」として動作します。ただし、場合によっては別のユーザーとして Edge コンポーネントを実行することもあります。たとえば、Router が特権付きポート(1000 未満のポート)にアクセスする必要がある場合、Router を root として実行するか、これらのポートに対するアクセス権限が割り当てられたユーザーとして実行しなければなりません。あるいは、あるコンポーネントをあるユーザーとして実行し、別のコンポーネントを別のユーザーとして実行することもできます。

共通のコードを使用するコンポーネント

次の Edge コンポーネントは共通のコードを共有します。したがって、ノード上でこれらのコンポーネントのいずれかをロールバックする場合は、そのノード上でこれらのコンポーネントをすべてロールバックする必要があります。

  • edge-management-server(Management Server)
  • edge-message-processor(Message Processor)
  • edge-router(Router)
  • edge-postgres-server(Postgres Server)
  • edge-qpid-server(Qpid Server)

たとえば、あるノードに Management Server、Router、Message Processor がインストールされている場合、このうちのいずれかをロールバックするとしたら、これら 3 つのコンポーネントのすべてをロールバックする必要があります。

Cassandra のロールバック

特定の Cassandra ノードで Cassandra のメジャー アップグレードが実行されると、Cassandra はノードに保存されているデータのスキーマを変更するため、直接ロールバックできなくなります。ロールバックには 2 つの方法があります。ロールバック元のアップグレードの状態に基づいて、次のいずれかの方法を使用します。

ロールバックの方法

クラスタ内の既存のノードをワイプして使用し、ノードを再ビルドする

この手順は、クラスタ内に、古いバージョンの Cassandra(Cassandra 2.1.22)がまだ稼働しているデータセンターが 1 つ以上ある場合に行えます。Cassandra クラスタ全体をアップグレードしてロールバックする場合は、バックアップまたは VM スナップショットを消去して復元するの手順に沿って操作する必要があります。

ロールバックの手順

  1. ロールバックするノードから始めます。
    • ノードで Cassandra を停止します。
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
    • ノードの Cassandra ソフトウェアをアンインストールします。
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
    • ノードからデータ ディレクトリを削除します。
      rm -rf /opt/apigee/data/apigee-cassandra
    • ロールバック先の Edge for Private Cloud の古いバージョンのブートストラップをダウンロードして実行します。

    例: 4.52.01 にロールバックするには、次のコマンドを使用します。

    • 4.52.01 のブートストラップをダウンロードします。
      curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
    • 4.52.01 のブートストラップを実行します。
      sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord

    • ノードで Cassandra を設定します。
      /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
    • 機能するデータセンターの名前を指定して、ノードで再ビルドを実行します。
      /opt/apigee/apigee-cassandra/bin/nodetool rebuild -h <node-IP> <functional-dc>
    • ロールバックするノードごとに、上記の手順を 1 つずつ繰り返します。
  2. すべてのノードがロールバックされて再構築されたら:
    • 任意の Management Server ノードの設定を実行します。ロールバックされたバージョンの Management Server であることを確認します。ロールバックされていない場合は、管理サーバーもロールバックします。
    • Management Server を停止します。
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server stop
    • 収益化を使用している場合は、収益化もアンインストールします。
      /opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
    • management-server をアンインストールします。
      /opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
    • 古いバージョンのブートストラップをダウンロードして実行します。たとえば、次の手順でバージョン 4.52.01 のブートストラップをダウンロードして実行します。
      curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
      sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord
    • 1 つの Management Server ノードの設定を実行します。
      /opt/apigee/apigee-setup/bin/setup.sh -p mt -f configFile

再ビルド後の最適化

上記の手順では、再ビルド中にノードのすべてのデータがリモート データセンターからストリーミングされます。すべてのレプリカがローカル データセンターにストリーミングされたら、修復を使用してこのプロセスを最適化できます。これにより、DC 間のストリーミングを回避し、リモート DC からすべてのノードを再ビルドするよりも高速になります。

例: ローカル データセンターに 6 つの Cassandra ノードがあるとします。デフォルトでは、Apigee のレプリケーション係数は 3 であるため、すべてのノードがデータの 50% を保持します。この場合は、上記の手順に沿ってノード #1 と #4 を再ビルドできます。ノード #2、#3、#5、#6 の場合は、次の手順に沿ってバックアップを復元し、修復を実行します。

  1. ローカル データセンターでレプリカを再ビルドするには、手順に沿ってステップ 6 まで行います。
  2. 残りのノードについては、残りの各ノードで次の手順を 1 つずつ行います。
    • このノードでキャプチャしたバックアップを復元します(注: このバックアップは Cassandra のアップグレード開始前に取得されたため、古いデータが含まれている可能性があります)。
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backup_file
    • ノードの VM スナップショットがある場合は、Cassandra バックアップを復元する代わりにスナップショットを復元できます。
    • バックアップが復元されたら、ノードで Cassandra サービスを起動します。
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
    • 既存のデータセンターから最新のデータをストリーミングできるように、ノードで修復を実行します。
      /opt/apigee/apigee-cassandra/bin/nodetool -h <node-IP> repair -dc <local-dc-name>
    • 修復するノードごとに手順 3 ~ 6 を繰り返します。

バックアップ/VM スナップショットを消去して復元する

この手順は、Cassandra クラスタ全体をアップグレードしてロールバックする場合にのみ使用できます。

また、Apigee のバックアップはノード固有です。1 つのノードで取得したバックアップを別のノードに復元することはできません。Cassandra バックアップには、ノードのメタデータ情報(IP アドレス、リング位置など)が含まれます。

  1. クラスタ内の 1 つの Cassandra ノードから開始します。
    • ノードの Cassandra サービスを停止します。
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
    • ノードの Cassandra ソフトウェアをアンインストールします。
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra uninstall
    • ノードからデータ ディレクトリを削除します。
      rm -rf /opt/apigee/data/apigee-cassandra
    • ロールバック先の Edge for Private Cloud の旧バージョンのブートストラップをダウンロードして実行します。

    例: 4.52.01 にロールバックする

    • 4.52.01 のブートストラップをダウンロードします。
      curl https://software.apigee.com/bootstrap_4.52.01.sh -o /tmp/bootstrap_4.52.01.sh -u ‘uName:pWord’
    • 4.52.01 のブートストラップを実行します。
      sudo bash /tmp/bootstrap_4.52.01.sh apigeeuser=uName apigeepassword=pWord

    • ノードで Cassandra を設定します。
      /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
    • バックアップから復元するの手順に沿って、ノードでバックアップを復元します。
    • ノードで Cassandra を停止します。
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra stop
    • データ ディレクトリを削除します。
      rm -rf /opt/apigee/data/apigee-cassandra/data
    • バックアップを復元する:
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restore backup_file
    • ノードで Cassandra サービスを起動します。
      /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra start
    • 各 Cassandra ノードで手順を 1 つずつ繰り返します。
    • ノードを 1 つずつ修復します。
      /opt/apigee/apigee-cassandra/bin/nodetool -h <node-IP> repair -pr

Zookeeper 3.8.3 アップデートをロールバックする

バージョン 4.52.00 または 4.51.00 にロールバックする場合は、Zookeeper をロールバックする前に、特別な手順を参照する必要があります。これらの手順はロールバックに記載されています。

バージョン 4.52.01 にロールバックする場合は、下記の以前のメジャー リリースまたはマイナー リリースにロールバックするセクションに記載されているように、ソフトウェアをロールバックするように Zookeeper をロールバックします。

Qpid をロールバックする

バージョン 4.52.00 または 4.51.00 にロールバックする場合は、Qpid をロールバックする前に特別な手順を参照する必要があります。これらの手順はロールバックに記載されています。

バージョン 4.52.01 にロールバックする場合は、以前のメジャー リリースまたはマイナー リリースにロールバックするに記載されているように、ソフトウェアをロールバックするように Qpid をロールバックします。

Postgres 10.17 更新をロールバックする

バージョン 4.51.00 にロールバックする場合は、Postgres をロールバックする前に特別な手順を確認する必要があります。これらの手順はロールバックに記載されています。

バージョン 4.52.01 または 4.52.00 にロールバックする場合は、下記の以前のメジャー リリースまたはマイナー リリースにロールバックするセクションに記載されているように、ソフトウェアをロールバックするように Postgres をロールバックします。

以前のメジャー リリースまたはマイナー リリースにロールバックする

以前のメジャー リリースまたはマイナー リリースにロールバックするには、コンポーネントをホストしている各ノード上で次の操作を行います。

  1. ロールバック先のバージョンの bootstrap.sh ファイルをダウンロードします。

    • 4.51.00 にロールバックする場合は、bootstrap_4.51.00.sh をダウンロードします。
      curl https://software.apigee.com/bootstrap_4.51.00.sh -o /tmp/bootstrap_4.51.00.sh 
  2. ロールバックするコンポーネントを停止します。
    1. ノード上の共通のコードを使用するコンポーネントをロールバックする場合は、次の例に示すように、それらすべてのコンポーネントを停止する必要があります。
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server stop
      /opt/apigee/apigee-service/bin/apigee-service edge-router stop
      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor stop
      /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
    2. ノード上のそれ以外のコンポーネントをロールバックする場合は、そのコンポーネントのみを停止します。
      /opt/apigee/apigee-service/bin/apigee-service component stop
  3. Monetization をロールバックする場合は、すべての Management Server ノードと Message Processor ノードから Monetization をアンインストールします。
    /opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
  4. ロールバックするコンポーネントをノードからアンインストールします。
    1. ノード上の共通のコードを使用するコンポーネントをロールバックする場合は、次の例に示すように、edge-gateway コンポーネント グループをアンインストールして、それらすべてのコンポーネントをアンインストールする必要があります。
      /opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
    2. ノード上のそれ以外のコンポーネントをロールバックする場合は、そのコンポーネントのみをアンインストールします。
      /opt/apigee/apigee-service/bin/apigee-service component uninstall

      ここで、component はコンポーネント名です。

    3. Edge Router をロールバックする場合、edge-gateway コンポーネント グループをアンインストールするだけでなく、/opt/nginx/conf.d ファイルの内容を削除する必要もあります。
      cd /opt/nginx/conf.d
      rm -rf *
  5. 4.52.02 バージョンの apigee-setup をアンインストールします。
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
  6. 4.51.00 バージョンの apigee-service ユーティリティとその依存関係をインストールします。次の例では、4.51.00 バージョンの apigee-service をインストールします。
    sudo bash /tmp/bootstrap_4.51.00.sh apigeeuser=uName apigeepassword=pWord

    ここで、uNamepWord は Apigee から取得したユーザー名とパスワードです。pWord を省略すると、パスワードの入力を求められます。

    エラーが発生した場合は、手順 1 で bootstrap.sh ファイルをダウンロードしたことを確認してください。

  7. apigee-setup をインストールします。
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup install
  8. 古いバージョンのコンポーネントをインストールします。
    /opt/apigee/apigee-setup/bin/setup.sh -p component -f configFile

    ここで、component はインストールするコンポーネント、configFile は古いバージョンの構成ファイルです。

  9. Qpid をロールバックしている場合は、iptables を消去します。
    sudo iptables -F
  10. ロールバックするコンポーネントをホストしているノードのそれぞれで、上記のプロセスを繰り返します。

以前のパッチ リリースにロールバックする

コンポーネントを特定のパッチ リリースにロールバックするには、コンポーネントをホストしている各ノードで次の操作を行います。

  1. 該当するバージョンのコンポーネントをダウンロードします。
    /opt/apigee/apigee-service/bin/apigee-service component_version install

    ここで、component_version はインストールするコンポーネントとパッチ リリースです。例:

    /opt/apigee/apigee-service/bin/apigee-service edge-ui-4.51.05-0.0.3749 install

    Apigee オンライン リポジトリを使用している場合、次のコマンドを使用して、コンポーネントの利用可能なバージョンを確認できます。

    yum --showduplicates list comp

    次に例を示します。

    yum --showduplicates list edge-ui
  2. apigee-setup を使用してコンポーネントをインストールします。
    /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile

    次に例を示します。

    /opt/apigee/apigee-setup/bin/setup.sh -p ui -f configFile

    コンポーネントをインストールする際は、コンポーネント名のみを指定し、バージョンは指定しないことにご注意ください。

  3. ロールバックするコンポーネントをホストしているノードのそれぞれで、上記のプロセスを繰り返します。

mTLS をロールバックする

mTLS 更新をロールバックするには、すべてのホストで次の手順を行います。

  1. Apigee を停止します。
    apigee-all stop
  2. mTLS を停止します。
    apigee-service apigee-mtls uninstall
  3. mTLS を再インストールします。
    apigee-service apigee-mtls install
    apigee-service apigee-mtls setup -f /opt/silent.conf