マルチテナント合成 PoP の展開

マルチテナント型ポイント・オブ・プレゼンス( PoP )を利用すれば、 Instana のSynthetic Monitoringサービスを1回展開するだけで、複数の顧客環境を監視することができます。 各環境は他の環境から分離されていますが、ハードウェアやネットワーク インフラストラクチャなどのリソースを共有します。

注: マルチテナント版 PoP は、Synthetic PoP 1.1.8 以降でサポートされています。

アーキテクチャー

Kubernetes クラスタ内のマルチテナント型 PoP のアーキテクチャは、次の図に示されています。 arch

再生エンジンポッドとRedisポッドは共通の名前空間にデプロイされます。 複数のテナントユニットで共有されます。 各テストタイプのワークロードに応じて、複数の再生エンジンをデプロイできます。例えば、X個の HTTP 再生エンジン、Y個の JavaScript 再生エンジン、Z個の BrowserScript 再生エンジンなどです。

各テナント・ユニットについて、その Instana バックエンド・サーバーに接続するために、テナント・ユニットのネームスペース内に PoP コントローラー・ポッドを1つデプロイする必要があります。 異なるテナントユニットの PoP コントローラーポッドは、同じ Instana バックエンドサーバーにも、異なるサーバーにも接続できます。 すべてのテナントの PoP コントローラーポッドは、共有の Redis ポッドを介して、共有の再生エンジンと通信します。

各テナント・ユニットについて、その Instana バックエンド・サーバーに接続するために、テナント・ユニットのネームスペース内に PoP コントローラー・ポッドを1つデプロイする必要があります。 別のテナントユニットの PoP コントローラーポッドは、同じ Instana バックエンド、あるいは別の Instana バックエンドに接続することができます。 すべてのテナントの PoP コントローラーポッドは、共有の Redis ポッドを介して、共有の再生エンジンと通信します。

マルチテナントPoPシングルテナントに比べて以下の利点がありますPoP:

  • テナントユニットの高速展開:単一テナントPoPテナントユニットの展開には約5分かかりますが、PoPマルチテナントのコントローラーPoP1分で。
  • コスト効率:マルチテナントPoP同じワークロードのソリューションのコストは 50% 削減されます。
  • 簡単に拡張可能: すべてのテナント ユニットの共通の名前空間で再生エンジン ポッドを拡張できます。
  • 集中管理機能: 単一のインターフェースからすべての顧客環境を管理できます。

マルチテナント型のSynthetic PoP のインストール

マルチテナントをインストールするにはPoP,次の手順を実行します。

  1. 共有インストールRedis共通の名前空間内のすべてのテナント ユニット用の再生エンジン。
  2. インストールPoP各テナント ユニットのテナント ユニットの名前空間内のコントローラー。

共有コンポーネントのインストール

インストールRedis次の例に示すように、共通の名前空間に再生エンジンを配置します。

helm install synthetic-pop \
    --repo https://agents.instana.io/helm  \
    --namespace "<common-namespace>" \
    --create-namespace \
    --set downloadKey="yourdownloadkey" \
    ## disable controller
    --set controller.enabled=false \
    ## redis server: need to have a large resource allocation
    --set redis.tls.enabled=false \
    --set redis.password="a1fc5d01bcbb" \
    --set redis.resources.requests.cpu="200m" \
    --set redis.resources.limits.cpu="1000m" \
    --set redis.resources.requests.memory="300Mi" \   
    --set redis.resources.limits.memory="1000Mi" \
    ## http playback engine, no need to change resource request/limit
    --set http.replicas=2 \
    ## javascript playback engine is using single-thread 
    ## In this example, 3 javascript playback engine pods and each of them is running test in single-thread
    ## so totally 3 API scripts can be run in parallel
    --set javascript.replicas=3 \
    --set javascript.maxConcurrentTests=1 \
    ## browserscript playback engine is using single-thread with reduced resource request/limit
    ## In this example, 3 browserscript playback engine pods and each of them is running test in single-thread
    ## so totally 4 browser scripts can be run in parallel
    --set browserscript.replicas=4 \
    --set browserscript.maxConcurrentTests=1 \
    --set browserscript.resources.requests.cpu="2000m" \
    --set browserscript.resources.limits.cpu="3500m" \
    --set browserscript.resources.requests.memory="1000Mi" \
    --set browserscript.resources.limits.memory="2000Mi" \
     ## ism playback engine, no need to change resource request/limit
    --set ism.replicas=2 \
 synthetic-pop

注:

  • PoPコントローラー ポッドが無効になっています。
  • Redisポッドの CPU/メモリ リソース制限が増加します。
  • JavaScript および BrowserScript の再生エンジンでは、シングルスレッド方式が採用されており、 API スクリプトやブラウザスクリプトのテストを実行する際、同一コンテナ内で異なるテナント向けのスクリプトが実行される際の分離性を確保しています。
  • BrowserScriptブラウザスクリプトテストの実行にシングルスレッドが適用されるため、再生エンジンのCPU/メモリリソース要求/制限が削減されます。
  • 全体のワークロードを評価し、各再生エンジンのレプリカ数を設定します。
  • Redis例ではパスワードが使用されています。 また、 Redis TLS を使用して、 Redis 経由の通信を暗号化することもできます。パラメータは、シングルテナントの PoP での展開時と同じです。

PoP コントローラーのインストール

各テナントユニットに、PoP次の例に示すように、テナント ユニット固有の名前空間内のコントローラー ポッド:

helm install synthetic-pop \
    --repo https://agents.instana.io/helm \
    --namespace "<tenant-unit-namespace>" \
    --set downloadKey="yourdownloadkey" \
    --set controller.location="MyPoP;My PoP;MyCounty;MyCity;0;0;This is a testing Synthetic Point of Presence" \
    --set controller.instanaKey="instanaAgentkey" \
    --set controller.instanaSyntheticEndpoint="https://synthetics-green-saas.instana.io" \
    # specify the common namespace where to deploy redis and playback engines
    --set controller.redisNamespace="<common-namespace>" \
    # use redis password for communication through redis
    --set redis.tls.enabled=false \
    --set redis.password="a1fc5d01bcbb" \
    # disable redis and playback engine pods
    --set redis.enabled=false  \
    --set http.enabled=false  \
    --set javascript.enabled=false  \
    --set browserscript.enabled=false  \
    --set ism.enabled=false  \
synthetic-pop

注:

  • POP コントローラー ポッドのみをインストールし、他のすべてのポッドを無効にします。
  • 正しい共通名前空間パラメータが渡されていることを確認してください--set controller.redisNamespace
  • Redis例ではパスワードが使用されています。 また、 Redis TLS を使用して、 Redis 経由の通信を暗号化することもできます。パラメータは、シングルテナントの PoP での展開時と同じです。

マルチテナントの PoP のアップグレード

マルチテナントをアップグレードするにはPoP,次の手順を実行します。

  1. 共通ネームスペースで「 helm upgrade」コマンドを実行し、 Redis および再生エンジンポッドをアップグレードします。
  2. テナント単位ごとに、テナント単位のネームスペース内で「 helm upgrade」コマンドを実行し、 PoP コントローラーポッドをアップグレードします。

再生エンジンのスケーリング

各テスト タイプで単一の再生エンジン ポッドでサポートされるテストの数は、次の表に示されています。

テスト・タイプ 頻度 期間 複雑性 テスト数
API シンプル・テスト 1 分 約200ミリ秒 2000 年
API スクリプト・テスト 5 分 約800ミリ秒 HTTP の呼び出しを5回実行する 80
ブラウザー・スクリプト・テスト 15 分間 約20秒 2つのWebページを開く 12
ISMテスト 1 分 約240ミリ秒 2000 年

各テスト タイプの合計ワークロードに応じて、次の例に示すように、レプリカ再生エンジンの数を変更して水平スケーラビリティをサポートします。

helm upgrade synthetic-pop \
    --repo https://agents.instana.io/helm  \
    --namespace "<common-namespace>" \
    --set http.replicas=2 \
    --set javascript.replicas=4 \
    --set browserscript.replicas=5 \
    --set ism.replicas=2 \
    synthetic-pop

マルチテナントの PoP の監視

マルチテナント版 PoP, を監視するには、 PoP がインストールされている Kubernetes クラスタに、 Instana ホストエージェントをインストールしてください。 Instana ホストエージェントのインストール後、 PoP を監視するために、 Syntheticの PoP センサーが自動的にインストールされます。

それぞれの健康データはPoP監視ダッシュボードに表示される情報は、PoPテナント ユニット名前空間内のコントローラー。 ワークロード データは、このテナント ユニットの再生統計を表します。

注: ワークロードグラフの「キュー入りタスク」メトリクスは、このテナントユニットではなく、 Redis 内のすべてのテナントユニットのキュー入りタスクの合計数を表示しています。

マルチテナントの PoP をアンインストールする

マルチテナントをアンインストールするにはPoP,次の手順を実行します。

  1. アンインストールRedis再生エンジン ポッドの場合は、共通の名前空間で次のコマンドを実行します。
    helm uninstall synthetic-pop -n "<common-namespace>"
    
  2. アンインストールPoP各テナント ユニットからコントローラー ポッドを削除するには、テナント ユニット名前空間で次のコマンドを実行します。
    helm uninstall synthetic-pop -n "<tenant-unit-namespace>"
    

シングルテナントの PoP からマルチテナントの PoP への移行

シングルテナントを移行するにはPoPsマルチテナントPoP,次の手順を実行します。

  1. 共有インストールRedis再生エンジンポッドを共通の名前空間に最初に配置し、helm installコマンドを実行し、すべてのシングルテナントからの合計ワークロードに基づいて再生エンジンのレプリカの数を設定します。PoPs 。
  2. 各テナントユニットごとに、その単一テナントをアップグレードするPoP単一のPoPマルチテナントのコントローラーPoPとともにhelm upgrade指示。 適切なパラメータを必ず渡してください。