4.17.01 ロールバック プロセス

Edge for Private Cloud バージョン 4.17.01

Edge 4.17.01 へのアップデート中にエラーが発生した場合は、エラーの原因となったコンポーネントをロールバックしてから、アップデートを再試行できます。たとえば、Postgres 9.4 へのアップデートが失敗した場合は、Postgres ノードのみをロールバックして、アップデートを再試行できます。

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

  1. 古いリリースにロールバックします。例: 4.17.01 から 4.16.09 へ。
  2. 同じリリース内の古いバージョンにロールバックする。

両方のシナリオでロールバックを行うには、以下の手順を使用します。

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

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

デフォルトでは、Edge コンポーネントはユーザー「apigee」として実行されます。場合によっては、Edge コンポーネントを別のユーザーとして実行していることがあります。たとえば、Router が特権ポート(1000 未満など)にアクセスする必要がある場合は、root として、またはそれらのポートにアクセスできるユーザーとして Router を実行する必要があります。また、あるコンポーネントを 1 人のユーザーとして実行し、別のコンポーネントを別のユーザーとして実行することもできます。

ロールバックできるコンポーネント

ロールバックを行う場合は、次の条件に注意してください。

  • 以下に示す 5 つの Edge コンポーネントは、共通のコードを共有しています。したがって、ノード上の 5 つのコンポーネントのいずれかをロールバックするには、ノードにインストールされている 5 つのコンポーネントのいずれかをロールバックする必要があります。たとえば、Management Server、Router、Message Processor がノードにインストールされている場合、この 1 つをロールバックするには、3 つすべてをロールバックする必要があります。
    コードを共有する 5 つのコンポーネントは次のとおりです。
    • 管理サーバー
    • ルーター
    • Message Processor
    • Qpid サーバー
    • Postgres サーバー
  • Edge 4.16.01 から更新する場合は、Cassandra をロールバックしないでください。この Edge リリースには、Cassandra の更新版が含まれています。コンポーネントをロールバックする場合は、Cassandra のバージョンを 4.17.01 のままにしてください。

4.17.01 のロールバック

このセクションでは、Edge 4.17.01 を以前のバージョンにロールバックする手順について説明します。このセクションは、次の 2 つの部分に分かれています。

  • 4.16.01 または 4.16.05 からのみアップデートする場合 - Postgres の更新をバージョン 9.4 にロールバックする
    4.16.01 または 4.16.05 からのすべての更新手順の最後の部分は、Postgres ノードをバージョン 9.4 にアップデートすることです。この更新が失敗した場合は、次の手順で更新をロールバックできます。
  • 他のすべての Edge コンポーネントのロールバック
    他の Edge コンポーネントをロールバックするには、この手順を使用します。

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

マスター / スタンバイ構成で Postgres を更新する際に Postgres の更新をロールバックするには、次のようにします。

  • 新しいスタンバイ ノードを Postgres マスターに昇格させます。新しい Postgres マスターのバージョンは、以前の Edge インストール システムと同じです。
  • 旧スタンバイ ノードを新しいマスターのスタンバイ ノードとして構成する。旧スタンバイ ノードのバージョンは、以前の Edge インストール システムと同じになります。
  • 新しいマスターノードとスタンバイ ノードを分析グループとコンシューマ グループに登録します。

ロールバックが完了すると、古いマスターノードは不要になります。その後、古いマスターノードを廃止できます。

  1. 新しいスタンバイ Postgres ノードが実行中であることを確認します。
    > /opt/apigee/apigee-service/bin/apigee-all status

    Postgres が実行されていない場合は、次の手順で起動します。
    > /opt/apigee/apigee-service/bin/apigee-all start
  2. 旧マスターノードと旧スタンバイ ノードで Postgres が停止していることを確認します。
    > /opt/apigee/apigee-service/bin/apigee-all status

    Postgres が稼働している場合は、停止します。
    > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-serverstop
    > /opt/apigee/apigee-service/bin/apigee-servicestop
  3. 古いスタンバイ ノード(インストールされている場合)で Qpid を起動します。
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start

    : 多くの構成では、古いスタンバイ ノードは Postgres のみをホストし、Qpid はホストしません。
  4. 新しいスタンバイ ノードを Postgres マスターとして昇格させます。
    1. 新しいスタンバイ ノードを新しいマスターに昇格させます。
      > apigee-service apigee-postgresql accelerate-standby-to-master new_standby_IP

      入力を求められたら、「apigee」ユーザーの Postgres パスワードを入力します。パスワードはデフォルトの「postgres」です。
    2. 現在のバージョンの Edge のインストールに使用した構成ファイルを編集して、以下のように設定します。
      # 新しいマスターの IP アドレス:
      PG_MASTER=new_standby_IP
      # 旧スタンバイ ノードの IP アドレス
      PG_STANDBY=old_standby_IP
    3. 新しいマスターを構成します。
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFile
  5. 旧スタンバイ ノードを再ビルドします。
    1. 現在のバージョンの Edge のインストールに使用した構成ファイルを編集して、以下のように設定します。
      # 新しいマスターの IP アドレス:
      PG_MASTER=new_standby_IP
      # 旧スタンバイ ノードの IP アドレス
      PG_STANDBY=old_standby_IP
    2. 旧スタンバイ ノードからデータ ディレクトリを削除します。
      > cd /opt/apigee/data/apigee-postgresql/p'></
      > rm -rf *
    3. 旧スタンバイ ノードを再構成して、新しいマスターのスタンバイ ノードにします。
      > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
    4. Postgres が旧スタンバイ ノードで実行されていることを確認します。
      > /opt/apigee/apigee-service/bin/apigee-all status

      Postgres が起動していない場合は起動します。
      > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server start
  6. 新しいマスター上の /opt/apigee/apigee-postgresql/conf/pg_hba.conf ファイルを表示して、新しいスタンバイ ノードが追加されたことを確認します。
  7. Management Server で次のコマンドを実行して、現在の分析グループとコンシューマ グループの情報を表示します。
    > curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax

    このコマンドは、name フィールドに分析グループ名を返し、groups-consumer フィールドにコンシューマ グループ名を返します。また、postgres-server フィールドと datastores フィールドに、旧 Postgres のマスターノードとスタンバイ ノードの UUID が返されます。次の形式で出力が表示されます。

    {
    "name" : "axgroup-001 "















  8. 旧マスターノードで次の cURL コマンドを実行して、旧マスターの UUID アドレスを取得します。
    > curl -u sysAdminEmail:password http://<node_IP>:8084/v1/servers/self

    出力の最後に、ノードの UUID が "ecserver", type":" "server" という形式で表示されます。



    Postgres サーバーが実行していない場合は、Management Server で次のコマンドを実行して UUID を確認できます。
    > curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/servers?pod=analytics

    このコマンドの出力に、各 Postres ノードの IP アドレスの UUID がリストされます。
  9. 前の手順を繰り返して、古いスタンバイ ノードと新しいマスターの IP アドレスを取得します。
  10. 古いマスターノードとスタンバイ ノードをコンシューマ グループから削除します。
    > curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/UUID-group1 と consumer-consumer-groups0 の UUID と consumer-consumer-group-001

    masterUUID、standbyUUID は、上記の現在の分析グループとコンシューマ グループの情報を表示したときに表示される順序と同じです。standbyUUID,masterUUID として指定しなければならない場合があります。

    consumer-groupsdatastores プロパティは空になっています。
  11. 分析グループから古いマスターノードとスタンバイ ノードを削除します。
    > curl -u sysAdminEmail:password -X DELETE "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=masterUUID,standbyserver uuuid=masterUUID,standbyserver の下に uuid=

  12. 新しい PG マスター ノードとスタンバイ ノードをアナリティクス グループとコンシューマ グループに登録:
    > curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/?axserver id

  13. 分析グループを検証します。
    > curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax

    分析グループとコンシューマー グループに新しいマスターノードとスタンバイ ノードの UUID が表示されます。
  14. Edge Management Server を再起動します。
    > /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  15. すべての Qpid サーバーを再起動します。
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  16. すべての Postgres サーバーを再起動します。
    > /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
  17. 両方のサーバーで次のスクリプトを発行して、レプリケーションのステータスを確認します。両方のサーバーで同じ結果が表示されていれば、レプリケーションは正常に完了しています。

    新しいマスターで、次のコマンドを実行します。
    > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

    マスターと表示されることを確認します。

    旧スタンバイ ノードで、次の操作を行います。
    > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

    スタンバイ ノードが表示されていることを確認します。
  18. ノードが同期していることを確認するため、いくつかの API リクエストを送信した後、前の手順を繰り返します。
  19. Apigee Edge を 4.16.09 に更新するの手順に沿って、古い Postgres マスターを廃止します。

    : 旧マスターノードで Qpid が実行されていた場合は、そのサーバーを起動したまま Qpid を実行できます。実行されていることを確認してください。起動していない場合は、起動します。
    > /opt/apigee/apigee-service/bin/apigee-service edge-management-server start

    あるいは、以下で説明するように、古いマスターから Qpid をアンインストールして、新しいマスターノードに Qpid をインストールすることもできます。Qpid をアンインストールした後、古いマスターノードを廃止できます。

古いマスターから Qpid をインストールし、新しいマスターに Qpid をインストールします。

次の手順で、古いマスターから Qpid をアンインストールし、新しいマスターに Qpid をインストールします。

  1. すべての Message Processor で次のコマンドを実行して、古いマスター上の Qpid ポート 5672 へのアクセスを Message Processor からブロックします。
    > iptables -A OUTPUT -p tcp -d 10.233.147.20 --dport 5672 -j DROP
  2. 次のコマンドを実行して、Qpid メッセージ キューが空であることを確認します。保留中のメッセージがすべて処理されるまで、Qpid をアンインストールすることはできません。
    > qpid-stat -q

    このコマンドは、msg、msgIn、msgOut のカウントを含むテーブルを表示します。msg=0 および msgIn=msgOut の場合、すべてのメッセージは処理されます。
  3. 旧マスターで次のコマンドを実行して、旧マスター上の Qpid サーバーの UUID を確認します。後の手順で使用するために、この情報を保管しておきます。
    > curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self
  4. 旧マスターで Qpid を停止します。
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-serverstop
    > /opt/apigee/apigee-service/bin/apigee-service apigee-qpiddstop
  5. Qpid サーバーをアンインストールします。
    > /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server uninstall
    > /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall
  6. analytics/consumer グループから古い Qpid サーバーを削除します。
    > curl -u sysAdminEmail:password -X DELETE -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup-001

  7. Zookeeper から古い Qpid サーバーを削除します。
    > curl -u sysAdminEmail:password -X DELETE http://<ms_IP>:8080/v1/servers/qpid_UUID
  8. 新しいマスターに Qpid をインストールします。
    > /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile
  9. 新しいマスターで次のコマンドを実行して、新しいマスターで Qpid サーバーの UUID を確認します。後の手順で使用するために、この情報を保管しておきます。
    > curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self
  10. 新しい Qpid サーバーを analytics/consumer グループに登録します。
    > curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' "http://<ms_IP>:8080/v1/analytics/groups/ax/axgroup/server

  11. すべての Message Processor を再起動します。
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  12. 新しい Qpid サーバーで次のコマンドを実行して、キューが作成されたことを確認します。
    > qpid-stat -q

    Qpid サーバーがメッセージを処理するときに、msg、msgIn、msgOut が更新されていることを確認します。

4.17.01 から個々のコンポーネントをロールバックする手順

ロールバックを行う過程で、Edge の現在のバージョンに対応する bootstrap.sh ファイルをダウンロードする必要があります。

  • 4.16.09 にロールバックするには、bootstrap_4.16.09.sh をダウンロードします。
  • 4.16.05 にロールバックするには、bootstrap_4.16.05.sh をダウンロードします。
  • 4.16.01 にロールバックするには、bootstrap.sh をダウンロードします。

ロールバックするコンポーネントをホストするノードごとに、次の操作を行います。

  1. ロールバックするコンポーネントを停止します。
    1. ノード上のコンポーネント(Management Server、Router、Message Processor、Qpid Server、Postgres Server)のいずれかをロールバックする場合は、これらすべてのコンポーネントを停止する必要があります。
      • > apigee-service edge-management-server 停止
      • > apigee-service edge-router 停止
      • > apigee-service edge-message-processor の停止
      • > apigee-service edge-qpid-server 停止
      • > apigee-service edge-postgres-server 停止
    2. ノード上の他のコンポーネントをロールバックする場合は、そのコンポーネントのみを停止します。
      • > apigee-service comp 停止
  2. Monetization をロールバックする場合は、すべての Management Server ノードと Message Processor ノードから Monetization をアンインストールします。
    > apigee-service edge-mint-gateway uninstall
  3. ロールバックするコンポーネントをノードからアンインストールします。
    1. ノード上のコンポーネント(Management Server、Router、Message Processor、Qpid Server、Postgres Server)のいずれかをロールバックする場合は、これらをすべてアンインストールします。
      > apigee-service edge-gateway アンインストール
    2. ノード上の他のコンポーネントをロールバックする場合は、そのコンポーネントのみをアンインストールします。
      > apigee-service comp アンインストール
    3. Router をロールバックする場合は、/opt/nginx/conf.d の内容を削除する必要があります。
      > cd /opt/nginx/conf.d
      > rm -rf *
  4. コンポーネントをロールバックするには:
    1. 4.17.01 バージョンの apigee-setup をアンインストールします。
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
    2. 4.16.01、4.16.05、または 4.16.09 リリース用の bootstrap.sh をダウンロードします。

      例:4.16.09 の場合:
      > curl https://software.apigee.com/bootstrap_4.16.09.sh -o /tmp/bootstrap_4.16.09.sh -o /tmp/bootstrap_4.16.09
    3. 4.16.01、4.16.05、または 4.16.09 の apigee-service ユーティリティと依存関係をインストールします。

      たとえば、4.16.09 の場合:
      > sudo bash /tmp/bootstrap_4.16.09.sh apigeeuser=uName apigeepassword=pWord

      ここで、uNamepWord は Apigee から受け取ったユーザー名とパスワードです。pWord を省略すると、入力するように求められます。
    4. 4.16.01、4.16.05、または 4.16.09 バージョンの apigee-setup をインストールします。
      > /opt/apigee/apigee-service/bin/apigee-service apigee-setup install
    5. 4.16.01、4.16.05、または 4.16.09 バージョンのコンポーネントをインストールします。
      > /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile


      ここで、comp はインストールするコンポーネント、configFile.4.0.16、または 6.16.16 または configFile です。
    6. Qpid をロールバックする場合は、iptables をフラッシュします。
      > sudo iptables -F
  5. コンポーネントを 4.17.01 リリースの特定のバージョンにロールバックするには:
    1. 特定のコンポーネント バージョンをダウンロードします。
      > /opt/apigee/apigee-service/bin/apigee-service comp-version install

      ここで、comp-version はインストールするコンポーネントとバージョンです。次に例を示します。
      > /opt/apigee/apigee-service/bin/apigee-service edge-ui-4.17.01-0.0.3749 install

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



      例:
    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 を指定する場合にのみ指定します。

ロールバック時に問題が発生した場合は、Apigee サポートにお問い合わせください。