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 つがあります。
- 前の機能リリースへのロールバック。たとえば、4.18.05 から 4.18.01 へのロールバックです。
- 同じリリースの前の更新バージョンへのロールバック。たとえば、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 の更新が含まれないためです。
前の機能リリースにロールバックするには、該当するコンポーネントをホストしている各ノード上で、次の手順を行います。
-
ロールバック先のバージョンの
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
- 4.18.01 にロールバックする場合は、
- ロールバックするコンポーネントを停止します。
- ノード上の共通のコードを使用するコンポーネントをロールバックする場合、次の例に示すように、それらすべてのコンポーネントを停止する必要があります。
/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
- ノード上のそれ以外のコンポーネントをロールバックする場合は、そのコンポーネントのみを停止します。
/opt/apigee/apigee-service/bin/apigee-service component stop
- ノード上の共通のコードを使用するコンポーネントをロールバックする場合、次の例に示すように、それらすべてのコンポーネントを停止する必要があります。
- Monetization をロールバックする場合、すべての Management Server ノードと Message Processor ノードから Monetization をアンインストールします。
/opt/apigee/apigee-service/bin/apigee-service edge-mint-gateway uninstall
- ロールバックするコンポーネトをノードからアンインストールします。
- ノード上の共通のコードを使用するコンポーネントをロールバックする場合、次の例に示すように、
edge-gateway
コンポーネント グループをアンインストールして、それらすべてのコンポーネントをアンインストールする必要があります。/opt/apigee/apigee-service/bin/apigee-service edge-gateway uninstall
- ノード上のそれ以外のコンポーネントをロールバックする場合は、そのコンポーネントのみをアンインストールします。
/opt/apigee/apigee-service/bin/apigee-service component uninstall
ここで、component はコンポーネント名です。
- Edge Router をロールバックする場合、
edge-gateway
コンポーネント グループをアンインストールするだけでなく、/opt/nginx/conf.d
ファイルの内容を削除する必要もあります。cd /opt/nginx/conf.d
rm -rf *
- ノード上の共通のコードを使用するコンポーネントをロールバックする場合、次の例に示すように、
- 4.18.05 バージョンの
apigee-setup
を削除します。/opt/apigee/apigee-service/bin/apigee-service apigee-setup uninstall
- 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
ここで、uName と pWord は Apigee から取得したユーザー名とパスワードです。pWord を省略した場合は、入力するよう求められます。
エラーが返された場合は、ステップ 1 で
bootstrap.sh
ファイルをダウンロードしたことを確認してください。 apigee-setup
をインストールします。/opt/apigee/apigee-service/bin/apigee-service apigee-setup install
- 古いバージョンのコンポーネントをインストールします。
/opt/apigee/apigee-setup/bin/setup.sh -p component -f configFile
ここで、component はインストールするコンポーネント、configFile は古いバージョンの構成ファイルです。
- Qpid をロールバックしている場合は、iptables を消去します。
sudo iptables -F
- ロールバックするコンポーネントをホストしているノードのそれぞれで、上記のプロセスを繰り返します。
4.18.05 から 4.17.09 または 4.17.05 にロールバックする場合、各ノード上のコンポーネントをロールバックするだけでなく、Postgres のロールバックも必要になります。4.18.01 からロールバックする場合は、Postgres をロールバックする必要はありません。この場合のアップグレード プロセスには Postgres の更新が含まれないためです。
前の更新バージョンへのロールバック
同じリリースの特定のバージョンにコンポーネントをロールバックするには、該当するコンポーネントをホストしている各ノード上で、次の手順を行います。
- 該当するバージョンのコンポーネントをダウンロードします。
/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
apigee-setup
を使用してコンポーネントをインストールします。/opt/apigee/apigee-setup/bin/setup.sh -p comp -f configFile
例:
/opt/apigee/apigee-setup/bin/setup.sh -p ui -f configFile
コンポーネントをインストールする際は、コンポーネント名のみを指定し、バージョンは指定しないことにご注意ください。
- ロールバックするコンポーネントをホストしているノードのそれぞれで、上記のプロセスを繰り返します。
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 インストール環境でのバージョンと同じです。
- 新しいマスターノードとスタンバイ ノードをアナリティクス グループとコンシューマ グループに登録します。
ロールバックが完了した後、旧マスターノードは不要になります。したがって、旧マスターノードを廃止できます。
- 新しいスタンバイ 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 マスターとして昇格させます。
- 新しいスタンバイ ノードを新しいマスターに昇格させます。
apigee-service apigee-postgresql promote-standby-to-master new_standby_IP
プロンプトが表示されたら、「apigee」ユーザーの Postgres パスワードを入力します。デフォルトのパスワードは「postgres」です。
- 現在のバージョンの Edge をインストールする際に使用した構成ファイルを編集し、次の内容を指定します。
# IP address of the new master: PG_MASTER=new_standby_IP # IP address of the old standby node PG_STANDBY=old_standby_IP
- 新しいマスターを構成します。
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFile
- 新しいスタンバイ ノードを新しいマスターに昇格させます。
- 旧スタンバイ ノードを再ビルドします。
- 現在のバージョンの Edge をインストールする際に使用した構成ファイルを編集し、次の内容を指定します。
# IP address of the new master: PG_MASTER=new_standby_IP # IP address of the old standby node 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 マスターノードとスタンバイ ノードの 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" : { } }
- 旧マスターノードで、次の
curl
コマンドを実行して、旧マスターの UUID アドレスを取得します。curl -u sysAdminEmail:password http://node_IP:8084/v1/servers/self
出力結果の最後の行に、次の形式でノードの UUID が表示されます。
"type" : [ "postgres-server" ], "uUID" : "599e8ebf-5d69-4ae4-aa71-154970a8ec75"
- 上記のステップを繰り返して、旧スタンバイ ノードと新しいマスターノードの 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 マスターノードと 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.01/4.16.05 から 4.17.09 への更新で説明している手順に沿って、旧 Postgres マスターを廃止します。
別の方法として、旧マスターから Qpid をアンインストールして新しいマスターノードに Qpid をインストールすることもできます。Qpid をインストールした後、旧マスターノードを廃止できます。
旧マスターから Qpid をアンインストールして新しいマスターノードに Qpid をインストールする
旧マスターから Qpid をアンインストールして新しいマスターノードに Qpid をインストールするには、次の手順に従います。
- すべての Message Processor で次のコマンドを実行して、旧マスターノード上の Qpid ポート 5672 への Message Processor からのアクセスをブロックします。
iptables -A OUTPUT -p tcp -d 10.233.147.20 --dport 5672 -j DROP
- 次のコマンドを実行して、Qpid メッセージ キューが空であることを確認します。保留中のメッセージがすべて処理されるまで、Qpid をアンインストールすることはできません。
qpid-stat -q
上記のコマンドにより、
msg, msgIn, and 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
- 旧 Qpid サーバーを Zookeeper から削除します。
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
が更新されていくことを確認します。
ロールバックの際に問題が発生した場合は、Apigee サポートにお問い合わせください。