Déploiement d'une solution synthétique multi-locataires PoP
Grâce à un point de présence multi-locataires ( PoP ), vous pouvez surveiller plusieurs environnements clients via un seul déploiement du service de surveillance synthétique d' Instana. Chaque environnement est isolé des autres mais partage des ressources telles que le matériel et l'infrastructure réseau.
Architecture
L'architecture de l' PoP multi-locataires dans un cluster Kubernetes est illustrée dans le schéma suivant. 
Les modules du moteur de lecture etRedis pod sont déployés dans un espace de noms commun. Ils sont partagés par plusieurs logements locataires. Vous pouvez déployer plusieurs moteurs de lecture en fonction de la charge de travail de chaque type de test, par exemple X moteurs de lecture HTTP, Y moteurs de lecture JavaScript et Z moteurs de lecture BrowserScript.
Pour chaque unité de locataire, un seul pod de contrôleur d' PoP s doit être déployé dans l'espace de noms de l'unité de locataire afin de se connecter à son serveur backend Instana. Le pod de contrôleur d' PoP s d'une unité locataire peut se connecter au même serveur backend d' Instana ou à un serveur différent. Tous les pods de contrôleur « tenant- PoP » communiquent avec les moteurs de lecture partagés via le pod « Redis ».
Pour chaque unité de locataire, un seul pod de contrôleur d' PoP s doit être déployé dans l'espace de noms de l'unité de locataire afin de se connecter à son serveur backend Instana. Le pod de contrôleur « PoP » d'un autre tenant peut se connecter au même backend « Instana » ou à un autre backend « Instana ». Tous les pods de contrôleur d' PoP s des locataires communiquent avec les moteurs de lecture partagés via le pod d' Redis partagé.
Multi-locatairePoP présente les avantages suivants par rapport au logement à locataire uniquePoP:
- Déploiement rapide pour une unité locataire : un locataire uniquePoP le déploiement prend environ 5 minutes pour une unité locataire alors que vous pouvez déployer unPoP contrôleur en multi-tenantPoP en une minute.
- Rentabilité : un multi-locatairePoP La solution pour la même charge de travail coûte 50 % de moins.
- Facile à mettre à l’échelle : vous pouvez mettre à l’échelle les modules du moteur de lecture dans l’espace de noms commun pour toutes les unités locataires.
- Capacités de gestion centralisées : vous pouvez gérer tous les environnements clients à partir d’une seule interface.
Installation d'une instance multi-locataires d' PoP
Pour installer un multi-locatairePoP, effectuez les étapes suivantes :
- Installer partagéRedis et des moteurs de lecture pour toutes les unités locataires dans un espace de noms commun.
- Installer unPoP contrôleur dans l’espace de noms de l’unité locataire pour chaque unité locataire.
Installation des composants partagés
InstallerRedis et des moteurs de lecture dans un espace de noms commun, comme illustré dans l'exemple suivant :
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
Remarques :
- PoP Le module de contrôleur est désactivé.
- Redis La limite de ressources CPU/Mem du pod est augmentée.
- Le mode monothread est utilisé dans les moteurs de lecture de JavaScript et BrowserScript pour exécuter les scripts API et les tests de scripts du navigateur, afin de garantir l'isolation lorsque des scripts sont exécutés pour différents locataires au sein du même conteneur.
- BrowserScript Les demandes/limites de ressources CPU/Mem des moteurs de lecture sont réduites car un seul thread est appliqué à l'exécution des tests de script du navigateur,
- Évaluez la charge de travail totale et définissez le numéro de réplique pour chaque moteur de lecture.
- Redis le mot de passe est utilisé dans l'exemple. Vous pouvez également utiliser Redis TLS pour chiffrer la communication via Redis; les paramètres sont les mêmes que pour le déploiement à locataire unique PoP.
Installation d'un contrôleur d' PoP
Pour chaque logement locataire, installez lePoP pod de contrôleur dans un espace de noms spécifique à l'unité locataire, comme illustré dans l'exemple suivant :
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
Remarques :
- Installez uniquement le pod du contrôleur pop et désactivez tous les autres pods.
- Assurez-vous que le paramètre d'espace de noms commun correct est transmis
--set controller.redisNamespace. - Redis le mot de passe est utilisé dans l'exemple. Vous pouvez également utiliser Redis TLS pour chiffrer la communication via Redis; les paramètres sont les mêmes que pour le déploiement à locataire unique PoP.
Mise à niveau d'une instance multi-locataires d' PoP
Pour mettre à niveau un multi-locatairePoP, effectuez les étapes suivantes :
- Mettez à niveau les modules « Redis » et « playback engine » à l'aide de la commande « helm upgrade » dans l'espace de noms commun.
- Mettez à niveau le pod du contrôleur « PoP » par unité de locataire à l'aide de la commande « helm upgrade » dans l'espace de noms de l'unité de locataire.
Mise à l'échelle des moteurs de lecture
Le nombre de tests pris en charge avec un seul pod de moteur de lecture pour chaque type de test est répertorié dans le tableau suivant :
| Type de test | Fréquence | Durée | Complexité | nombre de tests |
|---|---|---|---|---|
| Test d'API simple | 1 minute | ~ 200 ms | 2 000 | |
| Test de script d'API | 5 minutes | ~ 800 ms | lancer 5 appels « HTTP » | 80 |
| Test de script de navigateur | 15 minutes | ~ 20 secondes | ouvrir 2 pages Web | 12 |
| Test ISM | 1 minute | ~ 240 ms | 2 000 |
En fonction de la charge de travail totale de chaque type de test, modifiez le nombre de moteurs de lecture de réplica pour prendre en charge l'évolutivité horizontale, comme indiqué dans l'exemple suivant :
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
Surveillance d'une PoP multi-locataires
Pour surveiller l' PoP, multi-locataires, installez l'agent hôte Instana sur le cluster Kubernetes où votre PoP est installé. Le capteur « Synthetic PoP » est installé automatiquement pour surveiller votre PoP une fois l'agent hôte Instana installé.
Les données de santé dans chaquePoP affiché dans le tableau de bord de surveillance est collecté à partir dePoP contrôleur dans l’espace de noms de l’unité locataire. Les données de charge de travail représentent les statistiques de lecture pour cette unité locataire.
Désinstallation d'une instance multi-locataires d' PoP
Pour désinstaller un multi-locatairePoP, effectuez les étapes suivantes :
- Désinstallez leRedis et les pods du moteur de lecture, exécutez la commande suivante dans l'espace de noms commun :
helm uninstall synthetic-pop -n "<common-namespace>" - Désinstallez lePoP pod de contrôleur de chaque unité locataire, exécutez la commande suivante dans l'espace de noms de l'unité locataire :
helm uninstall synthetic-pop -n "<tenant-unit-namespace>"
Migration d' PoP (mode mono-locataire) vers PoP (mode multi-locataire)
Pour migrer un client uniquePoPs à un multi-locatairePoP, effectuez les étapes suivantes :
- Installer partagéRedis et les pods du moteur de lecture en premier dans l'espace de noms commun avec le
helm installet définissez le nombre de répliques du moteur de lecture en fonction de la charge de travail totale de tous les locataires uniques.PoPs . - Pour chaque unité locataire, mettez à niveau son locataire uniquePoP à un seulPoP contrôleur du multi-tenantPoP avec le
helm upgradecommande. Assurez-vous de transmettre les paramètres appropriés.