La suite de planification du trafic ASM offre une architecture évolutive et non intrusive pour la gestion centralisée du trafic au sein des systèmes distribués. Elle améliore la fiabilité des applications cloud-native tout en réduisant les coûts et en optimisant l'utilisation des ressources.
Qu'est-ce que la suite de planification du trafic ASM ?
La suite de planification du trafic ASM est une architecture centralisée de planification du trafic, construite sur ASM. Elle gère et planifie les requêtes entre les applications distribuées cloud-native.
Cette suite se compose d'un Agent et d'un contrôleur. Le contrôleur publie des politiques de planification du trafic prédéfinies vers l'Agent. Lorsqu'un proxy sidecar transfère les requêtes entrantes ou sortantes d'un pod, l'Agent applique les décisions de planification pour limiter le débit ou mettre en file d'attente les requêtes.
Activer la suite de planification du trafic ASM
ACK Serverless et Container Compute Service (ACS) ne prennent pas en charge la suite de planification du trafic ASM.
Pour utiliser la suite de planification du trafic ASM, assurez-vous que la version de votre instance ASM est 1.21.6.82 ou ultérieure et qu'un cluster Kubernetes a été ajouté à votre instance ASM. Pour plus d'informations, consultez la rubrique Ajouter un cluster à une instance ASM.
Pour activer la suite de planification du trafic ASM :
Console ASM
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez .
Cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez .
Sélectionnez l'onglet Advanced Traffic Scheduling et cliquez sur Enable Traffic Scheduling.
-
Configurez les paramètres suivants, puis cliquez sur OK.
Élément de configuration
Description
Storage Class
Classes de stockage valides pour l'échange de données entre les agents de planification et les métadonnées.
Configure Resource
Configuration des ressources pour les pods Agent.
Limit : 2 CPU, 1024 MiB par défaut.
Request : 0,5 CPU, 512 MiB par défaut.
Timeout Period
En cas de surcharge du système, les requêtes sont mises en file d'attente. Les requêtes dont le temps d'attente dépasse la période spécifiée sont rejetées.
Effective Scope
Par défaut, la portée est globale. Portées prises en charge :
-
Portée de la passerelle : s'applique aux ressources associées à une passerelle spécifique.
-
Portée de la charge de travail : s'applique à une charge de travail spécifique.
-
Portée du namespace : s'applique à un namespace spécifique.
-
kubectl
Utilisez kubectl pour vous connecter à l'instance ASM. Pour plus d'informations, consultez la rubrique Accéder aux ressources Istio avec kubectl.
-
Exécutez la commande suivante :
kubectl patch asmmeshconfig default --type=merge --patch='{"spec":{"adaptiveSchedulerConfiguration":{"enabled":true,"schedulerScopes":[{"namespace":"default"}]}}}'
Politiques de planification du trafic prises en charge
La suite de planification du trafic ASM prend en charge les politiques suivantes.
|**Politique**
|
**Description**
|
**Références**
| | --- | --- | --- | |
Limitation du débit du trafic
|
Utilise la CRD RateLimitingPolicy pour fournir une limitation globale du débit pour les services spécifiés. Par rapport à la limitation de débit Istio open source, cette CRD prend en charge la limitation spécifique à l'utilisateur, les fenêtres de trafic en rafale et les taux de consommation de jetons personnalisés.
|
[Utiliser RateLimitingPolicy pour implémenter la limitation de débit spécifique à l'utilisateur](t2734547.xdita#)
| |
Planification des requêtes basée sur la priorité selon la latence moyenne
|
Compare la latence en temps réel aux moyennes historiques pour détecter les surcharges. En cas de surcharge, utilise des mécanismes de bucket à jetons et de priorisation pour traiter d'abord les requêtes haute priorité.
|
[Utiliser AverageLatencySchedulingPolicy pour implémenter la planification des requêtes basée sur la priorité](t2734548.xdita#)
| |
Contrôle de la concurrence
|
Suit les requêtes en cours (envoyées mais n'ayant pas encore reçu de réponse). Lorsque le nombre dépasse la limite spécifiée, les requêtes suivantes sont rejetées.
|
[Utiliser ConcurrencyLimitingPolicy pour implémenter la limitation de la concurrence des requêtes](t2748365.xdita#)
| |
Planification des requêtes basée sur la priorité avec concurrence contrôlée
|
Détecte les surcharges en fonction des limites de requêtes concurrentes. Lorsque celles-ci sont dépassées, les requêtes suivantes sont mises en file d'attente et planifiées par ordre de priorité.
|
[Utiliser ConcurrencySchedulingPolicy pour implémenter la planification des requêtes basée sur la priorité avec concurrence contrôlée](t2748492.xdita#)
| |
Politique de déploiement progressif du service
|
Configure une politique de déploiement progressif qui augmente graduellement le trafic vers un service nouvellement déployé, garantissant ainsi des déploiements fluides.
|
[Utiliser LoadRampingPolicy pour implémenter le déploiement progressif du service](t2748369.xdita#)
| |
Planification des requêtes basée sur la priorité avec quota de requêtes spécifié
|
Lorsque le nombre de requêtes par unité de temps dépasse le quota spécifié, les requêtes suivantes sont mises en file d'attente, les requêtes haute priorité étant traitées en premier.
|
[Utiliser QuotaSchedulingPolicy pour implémenter la gestion des quotas d'appels de requêtes](t2748370.xdita#)
|
Collecter des métriques de surveillance
Si vos clusters Kubernetes utilisent Managed Service for Prometheus ou une instance Prometheus auto-gérée, configurez les éléments suivants pour collecter les métriques de l'agent de planification du trafic ASM. Cela vous permet de vérifier si une politique spécifique de la suite de planification du trafic ASM est effective.
Managed Service for Prometheus
Exécutez le code suivant pour ajouter une règle de collecte personnalisée. Pour plus d'informations, consultez la rubrique Autres méthodes de découverte de service Prometheus.
scrape_configs:
- job_name: asm-adaptive-scheduler-stats
scrape_interval: 30s
scrape_timeout: 30s
metrics_path: /metrics
scheme: http
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels:
- __meta_kubernetes_namespace
action: keep
regex: istio-system
- source_labels:
- __meta_kubernetes_pod_container_port_name
action: keep
regex: server
- source_labels:
- __meta_kubernetes_pod_container_name
action: keep
regex: aperture-agent
Instances Prometheus auto-gérées
Ajoutez le fichier JSON de Managed Service for Prometheus au nœud scrape_configs de votre instance Prometheus, comme décrit dans la documentation Configuration de Prometheus.