Google Cloud 向けAutoscale アーキテクチャ

NetScaler Consoleは、Googleネットワークロードバランサーを使用してクライアントのトラフィック分散を処理します。次の図は、トラフィックディストリビュータとして Google ネットワークロードバランサーを使用して自動スケーリングがどのように行われるかを示しています。

自動スケーリングのための Google Cloudアーキテクチャ

Google ネットワークロードバランサーは、クラスターノードへの分散層です。ネットワークロードバランサーは、クライアントトラフィックを管理し、NetScaler VPXクラスタに配信します。ネットワークロードバランサーは、ゾーン全体のNetScaler Console自動スケーリンググループで利用可能なNetScaler VPXクラスターノードにクライアントトラフィックを送信します。

NetScaler Consoleは、クラスターレベルでスケールアウトまたはスケールインアクションをトリガーします。スケールアウトがトリガーされると、登録された仮想マシンがプロビジョニングされ、クラスターに追加されます。同様に、スケールインがトリガーされると、NetScaler VPX クラスターからノードが削除され、プロビジョニングが解除されます。

NetScaler Console Autoscale eグループは、アプリケーションを1つのエンティティとして負荷分散し、構成されたしきい値パラメーター値に基づいて自動スケーリングをトリガーするNetScalerインスタンスのグループです。

オートスケーリングの仕組み

次のフローチャートは、自動スケーリングのワークフローを示しています。

CitrixAutoscaleフローチャート

NetScaler Consoleは、Autoscale eがプロビジョニングしたクラスターから1分ごとに統計情報(CPU、メモリ、スループット)を収集します。

統計情報は、設定しきい値に対して評価されます。統計に応じて、スケールアウトまたはスケールインがトリガーされます。統計が最大閾値を超えると、スケールアウトがトリガーされます。統計が最小閾値を下回ると、スケールインがトリガーされます。

スケールアウトがトリガーされた場合:

  1. 新しいノードがプロビジョニングされます。

  2. ノードがクラスタに接続され、構成がクラスタから新しいノードに同期されます。

  3. ノードはNetScalerコンソールに登録されています。

  4. 新しいノードの IP アドレスが Google ネットワークロードバランサーで更新されます。

スケールインがトリガーされた場合:

  1. 削除するノードが特定されました。

  2. 選択したノードへの新しい接続を停止します。

  3. ノードはクラスターから切り離され、NetScaler Consoleから登録が解除され、Google Cloudからプロビジョニングが解除されます。

アプリケーションをデプロイすると、すべてのアベイラビリティーゾーンのクラスターに IP セットが作成されます。次に、ドメインとインスタンスの IP アドレスが Google ネットワークロードバランサーに登録されます。アプリケーションを削除すると、ドメインとインスタンスの IP アドレスは Google ネットワークロードバランサーから登録解除されます。次に、IP セットが削除されます。

オートスケーリングのシナリオの例

次の設定を使用して、単一のアベイラビリティーゾーンに asg_arn という名前のAutoscaleグループを作成したとします。

  • 選択されたしきい値パラメータ — メモリ使用量。

  • メモリに設定されている閾値の上限:

    • 最小制限値:40

    • 最大制限:85

  • 総再生時間 — 2 分

  • クールダウン期間 — 10 分

  • プロビジョニング解除中の待機時間 — 10 分。

  • DNS の存続時間 — 10 秒。

[Autoscale] グループが作成されると、[Autoscale] グループから統計が収集されます。Autoscaleポリシーは、Autoscaleイベントが進行中かどうかも評価します。自動スケーリングが進行中の場合は、そのイベントが完了するのを待ってから、統計情報を収集します。

折れ線グラフ Citrix Autoscale

イベントのシーケンス

  1. メモリ使用量が T2のしきい値制限を超えています。ただし、スケールアウトは指定された総再生時間に対して違反しなかったため、トリガーされません。

  2. スケールアウトは、2 分間(総再生時間)にわたって最大しきい値を超過したあと、 T5 でトリガーされます。

  3. ノードプロビジョニングが進行中であるため、 T5 ~ T10 間の違反に対しては何の措置も取られませんでした。

  4. ノードは T10 でプロビジョニングされ、クラスタに追加されます。クールダウン期間が開始されました。

  5. クールダウン期間が原因で、 T10-T20 間の違反に対する処置は実行されていません。この期間により、Autoscale グループのインスタンスが有機的に増加することが保証されます。次のスケーリング決定をトリガーする前に、現在のトラフィックが安定し、現在のインスタンスのセットで平均化するのを待機します。

  6. メモリ使用量は T23で最小閾値制限を下回ります。ただし、スケールインは指定された総再生時間に対して違反しなかったため、トリガーされません。

  7. スケールインは、最小しきい値を2分間(総再生時間)連続して超過した後、 T26にトリガーされます 。クラスタ内のノードは、プロビジョニング解除のために識別されます。

  8. NetScaler Consoleは既存の接続の流出を待っているため、 T26-T36間の違反に対するアクションは実行されませんでした 。DNS ベースの自動スケーリングでは、TTL が有効です。

    :DNSベースの自動スケーリングでは、NetScaler Consoleは指定された有効期間(TTL)の間待機します。次に、ノードのプロビジョニング解除を開始する前に、既存の接続がドレインするのを待機します。

  9. ノードのプロビジョニング解除が進行中であるため、 T37-T39 間の違反に対しては何の措置も取られませんでした。

  10. ノードは T40 でクラスタから削除され、プロビジョニング解除されます。

ノードのプロビジョニング解除を開始する前に、選択したノードへのすべての接続がドレインされました。したがって、クールダウン期間は、ノードのプロビジョニング解除後にスキップされます。

Google Cloud 向けAutoscale アーキテクチャ