2.2. オンプレミス型 3scale のスケールアップ
APIcast デプロイメントの規模が大きくなると、利用可能なストレージの量を増やす必要が生じる可能性があります。ストレージをスケールアップする方法は、永続ストレージに使用しているファイルシステムのタイプによって異なります。
ネットワークファイルシステム (NFS) を使用している場合は、以下のコマンドを使用して永続ボリューム (PV) をスケールアップできます。
$ oc edit pv <pv_name>
他のストレージ手段を使用している場合は、以降のセクションに挙げる方法のいずれかを使用して、永続ボリュームを手動でスケールアップする必要があります。
2.2.1. 方法 1: 永続ボリュームをバックアップしてスワップする
手順
- 既存の永続ボリューム上のデータをバックアップします。
- 新しいサイズ要件に合わせて、ターゲット永続ボリュームを作成し、アタッチします。
-
事前バインド型の永続ボリューム要求を作成し、新しい PVC (PersistentVolumeClaim) のサイズと永続ボリュームの名前を指定します。永続ボリューム名には
volumeName
フィールドを使用します。 - 新しく作成した PV に、バックアップからデータを復元します。
新しい PV の名前でデプロイメント設定を変更します。
$ oc edit dc/system-app
- 新しい PV が設定され正常に機能していることを確認します。
- 以前の PVC を削除して、それが要求していたリソースを解放します。
2.2.2. 方法 2: 3scale をバックアップして再デプロイする
手順
- 既存の永続ボリューム上のデータをバックアップします。
- 3scale Pod をシャットダウンします。
- 新しいサイズ要件に合わせて、ターゲット永続ボリュームを作成し、アタッチします。
- 新しく作成した PV に、バックアップからデータを復元します。
事前バインド型の永続ボリューム要求を作成します。以下の項目を指定します。
- 新しい PVC のサイズ
-
永続ボリューム名 (
volumeName
フィールドを使用)
- amp.yml をデプロイします。
- 新しい PV が設定され正常に機能していることを確認します。
- 以前の PVC を削除して、それが要求していたリソースを解放します。
2.2.3. オンプレミス型 3scale デプロイメントの設定
3scale でスケーリングされる主要なデプロイメント設定項目は以下のとおりです。
- 実稼働環境用 APIcast
- バックエンドリスナー
- バックエンドワーカー
2.2.3.1. OCP によるスケーリング
APIManager CR を使用する OpenShift Container Platform (OCP) を介して、デプロイメント設定をスケールアップまたはスケールダウンできます。
特定のデプロイメント設定をスケーリングするには、以下を使用します。
次の APIManager CR を使用して APIcast 実稼働デプロイメント設定をスケールアップします。
apiVersion: apps.3scale.net/v1alpha1 kind: APIManager metadata: name: example-apimanager spec: apicast: productionSpec: replicas: X
次の APIManager CR を使用して、デプロイメント設定のバックエンドリスナー、バックエンドワーカー、およびバックエンド cron コンポーネントをスケールアップします。
apiVersion: apps.3scale.net/v1alpha1 kind: APIManager metadata: name: example-apimanager spec: backend: listenerSpec: replicas: X workerSpec: replicas: Y cronSpec: replicas: Z
適切な環境変数に、希望する Pod ごとのプロセス数を設定します。
backend-listener
Pod のPUMA_WORKERS
:$ oc set env dc/backend-listener --overwrite PUMA_WORKERS=<number_of_processes>
system-app
Pod のUNICORN_WORKERS
:$ oc set env dc/system-app --overwrite UNICORN_WORKERS=<number_of_processes>
2.2.3.2. ハードウェアの垂直スケーリングと水平スケーリング
リソースを追加することで、OpenShift 上の 3scale デプロイメントのパフォーマンスを高めることができます。水平スケーリングとして OpenShift クラスターにより多くのコンピュートノードを Pod として追加することや、垂直スケーリングとして既存のコンピュートノードにより多くのリソースを割り当てることができます。
水平スケーリング
コンピュートノードを Pod として OpenShift に追加することができます。追加のコンピュートノードがクラスター内の既存ノードと一致する場合には、環境変数を再設定する必要はありません。
垂直スケーリング
既存のコンピュートノードに割り当てるリソースを増やすことができます。割り当てるリソースを増やす場合は、追加のプロセスを Pod に追加してパフォーマンスを高める必要があります。
3scale デプロイメントにおいて、仕様や設定の異なるコンピュートノードを使用しないでください。
2.2.3.3. ルーターのスケールアップ
トラフィックの増加に応じて、OCP ルーターがリクエストを適切に処理できるようにしてください。ルーターがリクエストのスループットを制限している場合には、ルーターノードをスケールアップする必要があります。