Guide de dimensionnement
Vue d’ensemble du guide de dimensionnement
Lors de la planification du déploiement des services de données Azure Arc, planifiez la quantité correcte de :
- Compute
- Mémoire
- Stockage
Ces ressources sont requises pour :
- Contrôleur de données
- Instances managées SQL
- Serveurs PostgreSQL
Étant donné que les services de données avec Azure Arc sont déployés sur Kubernetes, vous avez la possibilité d’ajouter plus de capacité à votre cluster Kubernetes au fil du temps par des nœuds de calcul ou un stockage. Ce guide décrit les exigences minimales et recommande des tailles pour certaines exigences courantes.
Spécifications générales de dimensionnement
Remarque
Si vous n’êtes pas familiarisé avec les concepts de cet article, vous pouvez en apprendre davantage sur la gouvernance des ressources Kubernetes et la notation de taille de Kubernetes.
Le nombre de cœurs doit être une valeur entière supérieure ou égale à un.
Lorsque vous déployez avec Azure CLI (az), utilisez une puissance de deux nombres pour définir les valeurs de mémoire. Plus précisément, utilisez les suffixes :
Ki
Mi
Gi
Les valeurs limites doivent toujours être supérieures à la valeur de la requête, si elles sont spécifiées.
Les valeurs limites pour les cœurs sont la métrique facturable sur les serveurs SQL Managed Instance et PostgreSQL.
Configuration de déploiement requise
Une taille minimale pour le déploiement des services de données activés pour Azure Arc peut être considérée comme étant le contrôleur de données Azure Arc, plus une instance SQL Managed Instance, plus un serveur PostgreSQL. Pour cette configuration, vous avez besoin d’au moins 16 Go de RAM et de 4 cœurs de capacité disponibles sur votre cluster Kubernetes. Vous devez vous assurer que vous disposez d’une taille minimale de nœud Kubernetes de 8 Go de RAM et de 4 cœurs et d’une capacité totale de 16 Go de RAM disponible sur tous vos nœuds Kubernetes. Par exemple, vous pouvez avoir 1 nœud à 32 Go de RAM et 4 cœurs, ou vous pouvez avoir 2 nœuds avec 16 Go de RAM et 4 cœurs chacun.
Pour plus d’informations sur le dimensionnement du stockage, consultez l’article Configuration du stockage.
Détails de la taille du contrôleur de données
Le contrôleur de données est une collection de pods déployés sur votre cluster Kubernetes pour fournir une API, le service de contrôleur, le programme d’amorçage et les bases de données de surveillance et les tableaux de bord. Ce tableau décrit les valeurs par défaut pour les demandes et les limites de mémoire et d’UC.
Nom du pod | Demande d’UC | Demande de mémoire | Limite UC | Limite de mémoire |
---|---|---|---|---|
bootstrapper |
100m |
100Mi |
200m |
200Mi |
control |
400m |
2Gi |
1800m |
2Gi |
controldb |
200m |
4Gi |
800m |
6Gi |
logsdb |
200m |
1600Mi |
2 |
1600Mi |
logsui |
100m |
500Mi |
2 |
2Gi |
metricsdb |
200m |
800Mi |
400m |
2Gi |
metricsdc |
100m |
200Mi |
200m |
300Mi |
metricsui |
20m |
200Mi |
500m |
200Mi |
metricsdc
est un daemonset
, qui est créé sur chacun des nœuds Kubernetes de votre cluster. Les nombres de la table sont par nœud. Si vous définissez allowNodeMetricsCollection = false
dans votre fichier de profil de déploiement avant de créer le contrôleur de données, cette daemonset
n’est pas créée.
Vous pouvez remplacer les paramètres par défaut des pods controldb
et de contrôle dans votre fichier YAML du contrôleur de données. Exemple :
resources:
controller:
limits:
cpu: "1000m"
memory: "3Gi"
requests:
cpu: "800m"
memory: "2Gi"
controllerDb:
limits:
cpu: "800m"
memory: "8Gi"
requests:
cpu: "200m"
memory: "4Gi"
Pour plus d’informations sur le dimensionnement du stockage, consultez l’article Configuration du stockage.
Détails de dimensionnement d’une instance gérée SQL
Chaque instance gérée SQL doit répondre aux limites et exigences de ressources minimales suivantes :
Niveau de service | Usage général | Critique pour l’entreprise |
---|---|---|
Demande d’UC | Minimum : 1 Maximum : 24 Valeur par défaut : 2 |
Minimum : 3 Maximum : illimité Valeur par défaut : 4 |
Limite UC | Minimum : 1 Maximum : 24 Valeur par défaut : 2 |
Minimum : 3 Maximum : illimité Valeur par défaut : 4 |
Demande de mémoire | Minimum : 2Gi Maximum : 128Gi Valeur par défaut : 4Gi |
Minimum : 2Gi Maximum : illimité Valeur par défaut : 4Gi |
Limite de mémoire | Minimum : 2Gi Maximum : 128Gi Valeur par défaut : 4Gi |
Minimum : 2Gi Maximum : illimité Valeur par défaut : 4Gi |
Chaque pod d’instance gérée SQL créé comporte trois conteneurs :
Nom du conteneur | Demande UC | Demande de mémoire | Limite UC | Limite de mémoire | Notes |
---|---|---|---|---|---|
fluentbit |
100m |
100Mi |
Non spécifié(e) | Non spécifié(e) | Les demandes de ressources de conteneur fluentbit sont en plus de les requêtes spécifiées pour l’instance managée SQL. |
arc-sqlmi |
Utilisateur spécifié ou non spécifié. | Utilisateur spécifié ou non spécifié. | Utilisateur spécifié ou non spécifié. | Utilisateur spécifié ou non spécifié. | |
collectd |
Non spécifié(e) | Non spécifié(e) | Non spécifié(e) | Non spécifié(e) |
La taille du volume par défaut pour tous les volumes persistants est 5Gi
.
Détails de dimensionnement du serveur PostgreSQL
Chaque nœud de serveur PostgreSQL doit avoir les ressources minimales suivantes :
- Mémoire :
256Mi
- Cœurs : 1
Chaque pod de serveurs PostgreSQL créé a trois conteneurs :
Nom du conteneur | Demande UC | Demande de mémoire | Limite UC | Limite de mémoire | Notes |
---|---|---|---|---|---|
fluentbit |
100m |
100Mi |
Non spécifié(e) | Non spécifié(e) | Les demandes de ressources de conteneur fluentbit sont en plus de les requêtes spécifiées pour le serveur PostgreSQL. |
postgres |
Utilisateur spécifié ou non spécifié. | Utilisateur spécifié ou 256Mi (valeur par défaut). |
Utilisateur spécifié ou non spécifié. | Utilisateur spécifié ou non spécifié. | |
arc-postgresql-agent |
Non spécifié(e) | Non spécifié(e) | Non spécifié(e) | Non spécifié(e) |
Dimensionnement cumulatif
La taille globale d’un environnement requis pour les services de données avec Azure Arc est principalement une fonction du nombre et de la taille des instances de base de données. La taille globale peut être difficile à prédire à l’avance, sachant que le nombre d’instances peut augmenter et réduire et la quantité de ressources requises pour chaque instance de base de données peut changer.
La taille de base d’un environnement de services de données avec Azure Arc donné est la taille du contrôleur de données, qui nécessite 4 cœurs et 16 Go de RAM. À partir de là, ajoutez le total cumulé des cœurs et de la mémoire requis pour les instances de base de données. SQL Managed Instance nécessite un pod pour chaque instance. Le serveur PostgreSQL crée un pod pour chaque serveur.
En plus des cœurs et de la mémoire que vous demandez pour chaque instance de base de données, vous devez ajouter 250m
de cœurs et 250Mi
de RAM pour les conteneurs d’agent.
Exemple de calcul de dimensionnement
Conditions requises :
- « SQL1 »: 1 instance managée SQL avec 16 Go de RAM, 4 cœurs
- « SQL2 » : 1 instance managée SQL avec 256 Go de RAM, 16 cœurs
- « Postgres1 »: 1 serveur PostgreSQL à 12 Go de RAM, 4 cœurs
Calculs de dimensionnement :
La taille de « SQL1 » est la suivante :
1 pod * ([16Gi RAM, 4 cores] + [250Mi RAM, 250m cores])
. Pour les agents par pod, utilisez16.25 Gi
RAM et 4,25 cœurs.La taille de « SQL2 » est la suivante :
1 pod * ([256Gi RAM, 16 cores] + [250Mi RAM, 250m cores])
. Pour les agents par pod, utilisez256.25 Gi
RAM et 16,25 cœurs.La taille totale de SQL 1 et de SQL 2 est la suivante :
(16.25 GB + 256.25 Gi) = 272.5-GB RAM
(4.25 cores + 16.25 cores) = 20.5 cores
La taille de « Postgres1 » est la suivante :
1 pod * ([12Gi RAM, 4 cores] + [250Mi RAM, 250m cores])
. Pour les agents par pod, utilisez12.25 Gi
RAM et4.25
cœurs.Capacité totale requise :
- Pour les instances de base de données :
- RAM DE 272,5 GO
- 20,5 cœurs
- Pour SQL :
- RAM DE 12,25 GO
- 4,25 cœurs
- Pour le serveur PostgreSQL
- RAM DE 284,75 GO
- 24,75 cœurs
- Pour les instances de base de données :
La capacité totale requise pour les instances de base de données et le contrôleur de données est la suivante :
- Pour l’instance de base de données
- RAM DE 284,75 GO
- 24,75 cœurs
- Pour le contrôleur de données
- 16 Go de RAM
- 4 cœurs
- Au total :
- RAM DE 300,75 GO
- 28,75 cœurs.
- Pour l’instance de base de données
Pour plus d’informations sur le dimensionnement du stockage, consultez l’article Configuration du stockage.
Autres considérations
Gardez à l’esprit qu’une requête particulière de taille d’instance de base de données pour les cœurs ou la RAM ne peut pas dépasser la capacité disponible des nœuds Kubernetes dans le cluster. Par exemple, si le plus grand nœud Kubernetes que vous avez dans votre cluster Kubernetes est de 256 Go de RAM et de 24 cœurs, vous ne pouvez pas créer une instance de base de données avec une demande de 512 Go de RAM et 48 cœurs.
Conservez au moins 25 % de la capacité disponible sur les nœuds Kubernetes. Cette capacité permet à Kubernetes de :
- Planifier efficacement les pods à créer
- Activer la mise à l’échelle élastique
- Prend en charge les mises à niveau propagées des nœuds Kubernetes
- Facilite la croissance à long terme à la demande
Dans vos calculs de dimensionnement, ajoutez les besoins en ressources des pods système Kubernetes et toutes les autres charges de travail, qui peuvent partager la capacité avec les services de données avec Azure Arc sur le même cluster Kubernetes.
Pour maintenir la haute disponibilité pendant la maintenance planifiée et la continuité des sinistres, planifiez au moins l’un des nœuds Kubernetes de votre cluster pour qu’ils ne soient pas disponibles à un moment donné. Kubernetes tente de replanifier les pods qui s’exécutaient sur un nœud donné qui a été supprimé pour maintenance ou en raison d’une défaillance. S’il n’existe aucune capacité disponible sur les nœuds restants, ces pods ne seront pas replanifiés pour la création tant qu’il n’y aura pas de capacité disponible. Soyez extrêmement vigilant avec les grandes instances de base de données. Par exemple, s’il n’existe qu’un seul nœud Kubernetes suffisamment grand pour répondre aux besoins en ressources d’une grande instance de base de données et que ce nœud échoue, Kubernetes ne planifie pas ce pod d’instance de base de données sur un autre nœud Kubernetes.
Gardez les limites maximales pour une taille de cluster Kubernetes à l’esprit.
Votre administrateur Kubernetes peut avoir configuré des quotas de ressources sur votre espace de noms/projet. Gardez cela à l’esprit lors de la planification de la taille de vos instances de base de données.