Edge 4.16.09 への更新中にエラーが発生した場合は、エラーの原因となったコンポーネントをロールバックしてから、更新を再試行できます。たとえば、Postgres 9.4 へのアップデートが失敗した場合、Postgres ノードのみをロールバックして、アップデートを再試行できます。
ロールバックが必要になるシナリオは次の 2 つです。
- 古いリリースにロールバックする。たとえば、4.16.09 から 4.16.05 にダウングレードします。
- 同じリリースの古いバージョンにロールバックする。
以下の手順に沿って、両方のシナリオでロールバックを行います。
ロールバックを行えるユーザー
ロールバックを実行するユーザーは、Edge を最初に更新したユーザー、または root として実行しているユーザーと同じである必要があります。
デフォルトでは、Edge コンポーネントはユーザー「apigee」として実行されます。場合によっては、Edge コンポーネントを別のユーザーとして実行することがあります。たとえば、Router が 1000 未満の特権ポートにアクセスする必要がある場合は、Router を root として、またはそれらのポートにアクセスできるユーザーとして実行する必要があります。また、1 つのコンポーネントを 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.16.09 のままにします。
- このリリースには、新しいバージョンの qpidd は含まれていません。したがって、qpidd をロールバックする必要はありません。
4.16.09 のロールバック
このセクションでは、Edge 4.16.09 を以前のバージョンにロールバックする手順について説明します。このセクションは、次の 2 つの部分に分かれています。
- Postgres の更新をバージョン 9.4 にロールバックする
すべての更新手順の最後の部分は、Postgres ノードをバージョン 9.4 に更新することです。更新に失敗した場合は、この手順を使用して更新をロールバックできます。 - 他のすべての Edge コンポーネントのロールバック
この手順を使用して、他の Edge コンポーネントをロールバックします。
Postgres 9.4 の更新をロールバックするには
マスター / スタンバイ構成で Postgres を更新するときに Postgres の更新をロールバックするには、次の操作を行います。
- 新しいスタンバイ ノードを Postgres マスターにプロモートします。新しい Postgres マスターは、以前の Edge インストールと同じバージョンになります。
- 古いスタンバイ ノードを新しいマスターのスタンバイ ノードとして構成します。古いスタンバイ ノードは、以前の Edge インストールと同じバージョンになります。
- 新しいマスターノードとスタンバイ ノードを分析グループとコンシューマー グループに登録します。
ロールバックが完了すると、古いマスターノードは不要になります。その後、古いマスターノードをデコミッションできます。
- 新しいスタンバイ Postgres ノードが実行されていることを確認します。
> /opt/apigee/apigee-service/bin/apigee-all status
Postgres が実行されていない場合は、起動します。
> /opt/apigee/apigee-service/bin/apigee-all start - 古いマスターノードと古いスタンバイ ノードで 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 - インストールされている場合は、古いスタンバイ ノードで Qpid を起動します。
> /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server start
注: 多くの構成では、古いスタンバイ ノードは Postgres のみをホストし、Qpid はホストしません。 - 新しいスタンバイ ノードを Postgres マスターとして昇格させます。
- 新しいスタンバイ ノードを新しいマスターに昇格させます。
> apigee-service apigee-postgresql promote-standby-to-master new_standby_IP
プロンプトが表示されたら、「apigee」ユーザーの Postgres パスワードを入力します。デフォルトは「postgres」です。 - 現在のバージョンの Edge のインストールに使用した構成ファイルを編集して、次のように指定します。
# 新しいマスターの IP アドレス:
PG_MASTER=new_standby_IP
# 古いスタンバイ ノードの IP アドレス
PG_STANDBY=old_standby_IP - 新しいマスターを構成します。
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFile
- 新しいスタンバイ ノードを新しいマスターに昇格させます。
- 古いスタンバイ ノードを再ビルドします。
- 現在のバージョンの Edge のインストールに使用した構成ファイルを編集して、次のように指定します。
# 新しいマスターの IP アドレス:
PG_MASTER=new_standby_IP
# 古いスタンバイ ノードの IP アドレス
PG_STANDBY=old_standby_IP - 古いスタンバイ ノードのデータ ディレクトリを削除します。
> cd /opt/apigee/data/apigee-postgresql/pgdata
> rm -rf * - 古いスタンバイ ノードを新しいマスターのスタンバイ ノードとして再構成します。
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile - 古いスタンバイ ノードで Postgres が実行されていることを確認します。
> /opt/apigee/apigee-service/bin/apigee-all status
実行されていない場合は、起動します。
> /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server start
- 現在のバージョンの Edge のインストールに使用した構成ファイルを編集して、次のように指定します。
- 新しいマスターの /opt/apigee/apigee-postgresql/conf/pg_hba.conf ファイルを表示して、新しいスタンバイ ノードが追加されたことを確認します。
- Management Server で次のコマンドを実行して、現在の分析グループとコンシューマ グループの情報を表示します。
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax
このコマンドは、name フィールドに分析グループ名を返し、consumer-groups の name フィールドにコンシューマ グループ名を返します。また、postgres-server フィールドと datastores フィールドに、古い Postgres マスターノードとスタンバイ ノードの UUID も返されます。出力は次の形式になります。
{
"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" : {
}
} - 古いマスターノードで次の cURL コマンドを実行して、古いマスターの UUID アドレスを取得します。
> curl -u sysAdminEmail:password http://<node_IP>:8084/v1/servers/self
出力の最後に、次の形式でノードの UUID が表示されます。
"type" : [ "postgres-server" ],
"uUID" : "599e8ebf-5d69-4ae4-aa71-154970a8ec75"
注: edge-postgres-server サービスが実行されている必要があります。Postgres サーバーが実行されていない場合は、Management Server で次のコマンドを実行して UUID を特定できます。
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/servers?pod=analytics
このコマンドの出力には、各 Postres ノードの IP アドレスの UUID が一覧表示されます。 - 前の手順を繰り返して、古いスタンバイ ノードと新しいマスターの IP アドレスを取得します。
- コンシューマ グループから古いマスターノードとスタンバイ ノードを削除します。
> 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-001 と consumer-group-001 は、アナリティクス グループとコンシューマ グループのデフォルト名です。 masterUUID,standbyUUID は、現在の分析情報とコンシューマ グループ情報を表示したときに上記に表示された順序と同じです。standbyUUID,masterUUID として指定する必要がある場合があります。
consumer-groups の datastores プロパティが空になっているはずです。 - 古いマスターノードとスタンバイ ノードを分析グループから削除します。
> 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 プロパティが空になります。 - 新しい 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 - 分析グループを検証します。
> curl -u sysAdminEmail:password http://<ms_IP>:8080/v1/analytics/groups/ax
分析グループとコンシューマ グループに、新しいマスターノードとスタンバイ ノードの UUID が表示されます。 - Edge Management Server を再起動します。
> /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart - すべての Qpid サーバーを再起動します。
> /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart - すべての Postgres サーバーを再起動します。
> /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart - 両方のサーバーで次のスクリプトを実行して、レプリケーション ステータスを確認します。レプリケーションが成功したことを確認するために、システムは両方のサーバーで同じ結果を表示する必要があります。
新しいマスターで、次のコマンドを実行します。
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
マスターであることが示されていることを確認します。
古いスタンバイ ノードで、次のコマンドを実行します。
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby
スタンバイであることが示されていることを確認します。 - いくつかの API リクエストを行った後、前の手順を繰り返して、ノードが同期していることを確認します。
- 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 をアンインストールし、新しいマスターにインストールします。
- すべての Message Processor で次のコマンドを実行して、Message Processor から古いマスターの Qpid ポート 5672 へのアクセスをブロックします。
> iptables -A OUTPUT -p tcp -d 10.233.147.20 --dport 5672 -j DROP - 次のコマンドを実行して、Qpid メッセージ キューが空であることを確認します。保留中のすべてのメッセージが処理されるまで、Qpid をアンインストールすることはできません。
> qpid-stat -q
このコマンドは、msg、msgIn、msgOut の数を含むテーブルを表示します。msg=0、msgIn=msgOut の場合、すべてのメッセージが処理されます。 - 古いマスターで次のコマンドを実行して、古いマスター上の Qpid サーバーの UUID を確認します。この情報は、後で手順で使用するために保存しておきます。
> curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self - 古いマスターで Qpid を停止します。
> /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
> /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop - Qpid サーバーをアンインストールします。
> /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server uninstall
> /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall - 古い 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 - ZooKeeper から古い Qpid サーバーを削除します。
> curl -u sysAdminEmail:password -X DELETE http://<ms_IP>:8080/v1/servers/qpid_UUID - 新しいマスターに Qpid をインストールします。
> /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile - 新しいマスターで次のコマンドを実行して、新しいマスター上の Qpid サーバーの UUID を確認します。この情報は、後で手順で使用するために保存しておきます。
> curl -u sysAdminEmail:password http://<node_IP>::8083/v1/servers/self - 新しい 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 - すべての Message Processor を再起動します。
> /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart - 新しい Qpid サーバーで次のコマンドを実行して、キューが作成されたことを確認します。
> qpid-stat -q
Qpid サーバーがメッセージを処理するときに、msg、msgIn、msgOut が更新されていることを確認します。
4.16.09 から個々のコンポーネントをロールバックするには
ロールバックを実行する一環として、現在のバージョンの Edge の bootstrap.sh ファイルをダウンロードする必要があります。
- 4.16.05 にロールバックする場合は、bootstrap_4.16.05.sh をダウンロードします。
- 4.16.01 にロールバックするには、bootstrap.sh をダウンロードします。
ロールバックするコンポーネントをホストするノードごとに、次の操作を行います。
- ロールバックするコンポーネントを停止します。
-
ノード上の次のコンポーネント(Management Server、Router、Message Processor、Qpid Server、Postgres Server)のいずれかをロールバックする場合は、それらをすべて停止する必要があります。
- > apigee-service edge-management-server stop
- > apigee-service edge-router stop
- > apigee-service edge-message-processor stop
- > apigee-service edge-qpid-server stop
- > apigee-service edge-postgres-server stop
-
ノード上の他のコンポーネントをロールバックする場合は、そのコンポーネントのみを停止します。
- > apigee-service comp stop
-
ノード上の次のコンポーネント(Management Server、Router、Message Processor、Qpid Server、Postgres Server)のいずれかをロールバックする場合は、それらをすべて停止する必要があります。
- Monetization をロールバックする場合は、すべての Management Server ノードと Message Processor ノードからアンインストールします。
> apigee-service edge-mint-gateway uninstall - ノードでロールバックするコンポーネントをアンインストールします。
- ノード上の次のコンポーネント(Management Server、Router、Message Processor、Qpid Server、Postgres Server)のいずれかをロールバックする場合は、それらをすべてアンインストールします。
> apigee-service edge-gateway uninstall - ノード上の他のコンポーネントをロールバックする場合は、そのコンポーネントのみをアンインストールします。
> apigee-service comp uninstall
- ノード上の次のコンポーネント(Management Server、Router、Message Processor、Qpid Server、Postgres Server)のいずれかをロールバックする場合は、それらをすべてアンインストールします。
- ルーターをロールバックする場合は、/opt/nginx/conf.d:
の内容を削除する必要があります。 > cd /opt/nginx/conf.d
> rm -rf * -
コンポーネントをロールバックするには:
- 4.16.09 バージョンの apigee-setup をアンインストールします。
> /opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall - 4.16.01 または 4.16.05 リリースの bootstrap.sh をダウンロードします。
4.16.01 の場合:
> curl https://software.apigee.com/bootstrap.sh -o /tmp/bootstrap.sh
4.16.05 の場合:
> curl https://software.apigee.com/bootstrap_4.16.05.sh -o /tmp/bootstrap.sh - 4.16.01 または 4.16.05 の apigee-service ユーティリティと依存関係をインストールします。
> sudo bash /tmp/bootstrap.sh apigeeuser=uName apigeepassword=pWord
ここで、uName と pWord は Apigee から受け取ったユーザー名とパスワードです。pWord を省略すると、入力を求められます。 - 4.16.01 または 4.16.05 バージョンの apigee-setup をインストールします。
> /opt/apigee/apigee-service/bin/apigee-service apigee-setup install - コンポーネントの 4.16.01 または 4.16.05 バージョンをインストールします。
> /opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile
ここで、comp はインストールするコンポーネント、configFile は 4.16.01 または 4.16.05 の構成ファイルです。
- 4.16.09 バージョンの apigee-setup をアンインストールします。
-
コンポーネントを 4.16.05 リリースの特定のバージョンにロールバックするには:
- 特定のコンポーネント バージョンをダウンロードします。
> /<instal_dir>/apigee/apigee-service/bin/apigee-service comp-version install
ここで、comp-version は、インストールするコンポーネントとバージョンです。例:
> /<instal_dir>/apigee/apigee-service/bin/apigee-service edge-ui-4.16.05-0.0.3649 install
Apigee オンライン リポジトリを使用している場合は、次のコマンドを使用して、使用可能なコンポーネントのバージョンを確認できます。
> yum --showduplicates list comp
例:
> yum --showduplicates list edge-ui - apigee-setup を使用してコンポーネントをインストールします。
> /<install_dir>/apigee/apigee-setup/bin/setup.sh -p comp -f configFile
例:
> /<install_dir>/apigee/apigee-setup/bin/setup.sh -p ui -f configFile
インストール時にコンポーネント名のみを指定する方法に注意してください。
- 特定のコンポーネント バージョンをダウンロードします。
ロールバック時に問題が発生した場合は、Apigee サポートにお問い合わせください。