Apigee Edge 4.19.01 のロールバック

Edge for Private Cloud v4.19.01

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

Edge 4.19.01 は次の機能リリース バージョンにロールバックできます。

  • バージョン 4.18.05
  • バージョン 4.18.01
  • バージョン 4.17.09*

* 4.19.01 から 4.17.09 にロールバックするには、各ノードのコンポーネントをロールバックするだけでなく、Postgres をロールバックする必要があります。4.18.01 または 4.18.05 にロールバックする場合は、アップグレード プロセスに Postgres の更新が含まれていないため、Postgres をロールバックする必要はありません。

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

  1. 以前の機能リリースにロールバックする。たとえば、4.19.01 から 4.18.05 です。
  2. 同じリリースの以前のアップデート バージョンにロールバック。たとえば、4.19.01.02 から 4.19.01.01 へ。

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

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

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

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

共通のコードを持つコンポーネント

次の 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 つすべてをロールバックする必要があります。

以前の機能リリースにロールバックする

4.19.01 から 4.17.09 にロールバックするには、各ノードのコンポーネントをロールバックするだけでなく、Postgres をロールバックする必要があります。4.18.01 または 4.18.05 からロールバックする場合は、アップグレード プロセスに Postgres の更新が含まれていないため、Postgres をロールバックする必要はありません。

以前の機能リリースにロールバックするには、コンポーネントをホストする各ノードで次の操作を行います。

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

    • 4.18.05 にロールバックするには、bootstrap_4.18.05.sh をダウンロードします。
      curl https://software.apigee.com/bootstrap_4.18.05.sh -o /tmp/bootstrap_4.18.05.sh 
    • 4.18.01 にロールバックするには、bootstrap_4.18.01.sh をダウンロードします。
      curl https://software.apigee.com/bootstrap_4.18.01.sh -o /tmp/bootstrap_4.18.01.sh 
    • 4.17.09 にロールバックするには、bootstrap_4.17.09.sh をダウンロードします。
      curl https://software.apigee.com/bootstrap_4.17.09.sh -o /tmp/bootstrap_4.17.09.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.19.01 の apigee-setup をアンインストールします。
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
  6. バージョン 4.18.05、4.18.01、または 4.17.09 の apigee-service ユーティリティとその依存関係をインストールします。次の例では、4.17.09 バージョンの apigee-service をインストールします。
    sudo bash /tmp/bootstrap_4.17.09.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. ロールバックするコンポーネントをホストするノードごとに、この手順を繰り返します。

4.19.01 から 4.17.09 にロールバックするには、各ノードのコンポーネントをロールバックするだけでなく、Postgres をロールバックする必要があります。4.18.01 または 4.18.05 からロールバックする場合は、アップグレード プロセスに Postgres の更新が含まれていないため、Postgres をロールバックする必要はありません。

前の更新バージョンにロールバックする

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

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

    ここで、component_version は、インストールするコンポーネントと更新バージョンです。例:

    /opt/apigee/apigee-service/bin/apigee-service edge-ui-4.17.09-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. ロールバックするコンポーネントをホストするノードごとに、この手順を繰り返します。

4.19.01 から 4.17.09 にロールバックするには、各ノードのコンポーネントをロールバックするだけでなく、Postgres をロールバックする必要があります。4.18.01 または 4.18.05 からロールバックする場合は、アップグレード プロセスに Postgres の更新が含まれていないため、Postgres をロールバックする必要はありません。

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

バージョン 4.17.09 から 4.19.01 にアップグレードした場合は、Edge コンポーネントに加えて、Postgres の更新もロールバックする必要があります。

マスター / スタンバイ構成の 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-server stop > /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop

  3. 古いスタンバイ ノード(インストールされている場合)で Qpid を起動します。
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start
  4. 新しいスタンバイ ノードを Postgres マスターとして昇格させます。
    1. 新しいスタンバイ ノードを新しいマスターに昇格させます。
      apigee-service apigee-postgresql promote-standby-to-master new_standby_IP

      プロンプトが表示されたら、「apigee」ユーザーの Postgres パスワードを入力します。パスワードはデフォルトの「postgres」です。

    2. 現在のバージョンの Edge のインストールに使用した構成ファイルを編集して、次の内容を指定します。
      # IP address of the new master:
      PG_MASTER=new_standby_IP
      # IP address of the old standby node
      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 address of the new master:
      PG_MASTER=new_standby_IP
      # IP address of the old standby node
      PG_STANDBY=old_standby_IP
    2. 古いスタンバイ ノードからデータ ディレクトリを削除します。
      cd /opt/apigee/data/apigee-postgresql/pgdata > 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

      実行されていない場合は、起動します。

      /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 フィールドに分析グループ名を返し、consumer-groups の下の name フィールドにコンシューマ グループ名を返します。また、古い Postgres のマスターノードとスタンバイ ノードの UUID を postgres-server フィールドと datastores フィールドに返します。出力は次の形式になります。

    {
      "name" : "axgroup-001",
      "properties" : {
      },
      "scopes" : [ "VALIDATE~test", "sgilson~prod" ],
      "uuids" : {
        "qpid-server" : [ "8381a053-433f-4382-bd2a-100fd37a1592", "4b6856ec-ef05-498f-bac6-ef5f0d5f6521" ],
        "postgres-server" : [
          "ab1158bd-1d59-4e2a-9c95-24cc2cfa6edc:27f90844-efab-4b32-8a23-8f85cdc9a256"
        ]
      },
      "consumer-groups" : [ {
        "name" : "consumer-group-001",
        "consumers" : [ "8381a053-433f-4382-bd2a-100fd37a1592", "4b6856ec-ef05-498f-bac6-ef5f0d5f6521" ],
        "datastores" :
          [ "ab1158bd-1d59-4e2a-9c95-24cc2cfa6edc:27f90844-efab-4b32-8a23-8f85cdc9a256" ],
          "properties" : {     }
        }
      ],
      "data-processors" : {
      }
    }

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

    出力の最後に、次の形式でノードの UUID が表示されます。

    "type" : [ "postgres-server" ],
    "uUID" : "599e8ebf-5d69-4ae4-aa71-154970a8ec75"
  9. 前の手順を繰り返して、古いスタンバイ ノードと新しいマスターの IP アドレスを取得します。
  10. 古いマスターノードとスタンバイ ノードをコンシューマ グループから削除します。
    curl -u sysAdminEmail:password -X DELETE \
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/datastores/masterUUID,standbyUUID" -v

    ここで、axgroup-001consumer-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,standbyUUID&type=postgres-server" -v

    uuids の下の postgres-server プロパティは空になっているはずです。

  12. 新しい PG マスターノードと PG スタンバイ ノードを、分析グループとコンシューマ グループに登録します。
    curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d ''
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=masterUUID,standbyUUID&type=postgres-server" -v
    curl -u sysAdminEmail:password -X POST -H "Content-Type:application/json" -d ''
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/datastores?uuid=masterUUID,standbyUUID" -v
  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.01/4.16.05 を 4.17.09 に更新する手順に沿って、古い Postgres マスターを廃止します。

    または、古いマスターから 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, and msgOut の数を含むテーブルを表示します。msg=0msgIn=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-server stop
    /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop
  5. Qpid サーバーをアンインストールします。
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server uninstall
    /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall
  6. 分析グループとコンシューマ グループから古い Qpid サーバーを削除します。
    curl -u sysAdminEmail:password -X DELETE -H "Content-Type: application/json" -d '' \
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/consumers/qpid_UUID" -v
    curl -u sysAdminEmail:password -X DELETE \
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=qpid_UUID&type=qpid-server" -v
  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 サーバーを分析グループとコンシューマ グループに登録します。
    curl -u sysAdminEmail:password -X POST -H "Content-Type: application/json" -d '' \
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/servers?uuid=qpid_UUID&type=qpid-server" -v
    curl -u sysAdminEmail:password -X POST -H "Content-Type:application/json" -d '' \
      "http://ms_IP:8080/v1/analytics/groups/ax/axgroup-001/consumer-groups/consumer-group-001/consumers?uuid=qpid_UUID" -v
  11. すべての Message Processor を再起動します。
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  12. 新しい Qpid サーバーで次のコマンドを実行して、キューが作成されたことを確認します。
    qpid-stat -q

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

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