Apigee Edge 4.18.05 のロールバック

Edge for Private Cloud v4.18.05

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

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

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

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

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

  1. 前の機能リリースへのロールバック。たとえば、4.18.05 から 4.18.01 へのロールバックです。
  2. 同じリリースの前の更新バージョンへのロールバック。たとえば、4.18.05.02 から 4.18.05.01 へのロールバックです。

詳しくは、Apigee Edge リリース プロセスをご覧ください。

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

ロールバックを行うユーザーは、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 つのコンポーネントのすべてをロールバックする必要があります。

前の機能リリースへのロールバック

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

前の機能リリースにロールバックするには、該当するコンポーネントをホストしている各ノード上で、次の手順を行います。

  1. ロールバック先のバージョンの bootstrap.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 
    • 4.17.05 にロールバックする場合は、bootstrap_4.17.05.sh をダウンロードします。
      curl https://software.apigee.com/bootstrap_4.17.05.sh -o /tmp/bootstrap_4.17.05.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.18.05 バージョンの apigee-setup を削除します。
    /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
  6. 4.18.01、4.17.09、または 4.17.05 バージョンの 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.18.05 から 4.17.09 または 4.17.05 にロールバックする場合、各ノード上のコンポーネントをロールバックするだけでなく、Postgres のロールバックも必要になります。4.18.01 からロールバックする場合は、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.18.05 から 4.17.09 または 4.17.05 にロールバックする場合、各ノード上のコンポーネントをロールバックするだけでなく、Postgres のロールバックも必要になります。4.18.01 からロールバックする場合は、Postgres をロールバックする必要はありません。この場合のアップグレード プロセスには Postgres の更新が含まれないためです。

Postgres 9.6 更新のロールバック

4.17.05 または 4.17.09 から 4.18.05 にアップグレードした場合、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-groupsname フィールドにコンシューマ グループ名を返します。また、旧 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

    uuidspostgres-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 をアンインストールして新しいマスターノードに 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. 旧 Qpid サーバーを Zookeeper から削除します。
    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 サポートにお問い合わせください。