Partager via


Mettre à l’échelle un serveur Azure Database pour PostgreSQL à l’aide de l’interface CLI (az ou kubectl)

Il est parfois nécessaire de modifier les caractéristiques ou la définition d’un serveur. Par exemple :

  • Mettre à l’échelle le nombre de vCores que le serveur utilise
  • Mettre à l’échelle la mémoire que le serveur utilise

Ce guide explique comment mettre à l’échelle vCore et/ou la mémoire.

La mise à l’échelle des paramètres de vCore ou de mémoire de votre serveur signifie que vous avez la possibilité de définir une valeur minimale et/ou maximale pour chacun des paramètres de vCore et de mémoire. Si vous souhaitez configurer votre serveur pour utiliser un nombre particulier de vCores ou une quantité spécifique de mémoire, vous devez définir la même valeur pour les paramètres minimaux et les paramètres maximaux. Avant d’augmenter la valeur définie pour vCores et la mémoire, vous devez vous assurer que

  • vous disposez de suffisamment de ressources disponibles dans l’infrastructure physique qui héberge votre déploiement et
  • que les charges de travail colocalisées sur le même système ne sont pas en concurrence pour les mêmes vCores ou mémoire.

Remarque

En tant que fonctionnalité en préversion, la technologie présentée dans cet article est soumise aux conditions d’utilisation supplémentaires des préversions de Microsoft Azure.

Les dernières mises à jour sont disponibles dans les notes de publication.

Afficher la définition actuelle du serveur

Pour afficher la définition actuelle de votre serveur et voir les paramètres de vCore et de mémoire actuels, exécutez l’une des commandes suivantes :

Avec l’interface Azure CLI (az)

az postgres server-arc show -n <server name> --k8s-namespace <namespace> --use-k8s

Interface de ligne de commande avec kubectl

kubectl describe postgresql/<server name> -n <namespace name>

Celle-ci retourne la configuration de votre groupe de serveurs. Si vous avez créé le groupe serveur avec les paramètres par défaut, vous devez voir la définition suivante :

Spec:
  Dev:  false
  Scheduling:
    Default:
      Resources:
        Requests:
          Memory:  256Mi
...

Interpréter la définition du serveur

Dans la définition d’un serveur, la section contenant les paramètres du nombre minimal ou maximal de vCores par nœud et de mémoire minimale ou maximale par nœud est la section « planification ». Dans cette section, les paramètres maximaux sont conservés dans une sous-section appelée « limites », et les paramètres minimaux dans la sous-section intitulée « requêtes ».

Si vous définissez des paramètres minimaux différents des paramètres maximaux, la configuration garantit que les ressources demandées sont allouées au serveur si nécessaire. Les limites que vous définissez ne seront pas dépassées.

Les ressources (vCores et mémoire) qui seront réellement utilisées par votre serveur ne dépassent pas les paramètres maximaux et dépendent des charges de travail et des ressources disponibles sur le cluster. Si ne limitez pas les paramètres à une valeur max, votre serveur peut utiliser toutes les ressources que le cluster Kubernetes alloue aux nœuds Kubernetes sur lesquels votre serveur est planifié.

Dans une configuration par défaut, seule la mémoire minimale est définie sur 256Mi, car il s’agit de la quantité minimale de mémoire recommandée pour exécuter le serveur PostgreSQL.

Remarque

Le fait de définir un minimum ne signifie pas que le serveur utilisera nécessairement ce minimum. Cela signifie que si le serveur en a besoin, il est garanti qu’au moins ce minimum est alloué. Supposons, par exemple, que nous définissions --minCpu 2. Cela ne signifie pas que le serveur utilisera au moins 2 vCores à tout moment. Au lieu de cela, le serveur peut commencer à utiliser moins de 2 vCores s’il n’en a pas besoin, avec la garantie de se voir alloué au moins 2 vCores s’il en a besoin plus tard. Cela implique que le cluster Kubernetes alloue des ressources à d’autres charges de travail de façon à pouvoir allouer 2 vCores au serveur s’il en a besoin. De plus, effectuer un scale-up et un scale-down n’est pas une opération en ligne, car un redémarrage des pods kubernetes est nécessaire.

Remarque

Avant de modifier la configuration de votre système, veillez à vous familiariser avec le modèle de ressource Kubernetes ici

Effectuer un scale-up et un scale-down du serveur

Procéder à un scale-up revient à augmenter les valeurs des paramètres de vCore et/ou de mémoire de votre serveur. Procéder à un scale-down revient à diminuer les valeurs des paramètres de vCore et/ou de mémoire de votre groupe serveur.

Les paramètres que vous allez définir doivent être pris en compte dans la configuration que vous définissez pour votre cluster Kubernetes. Veillez à ne pas définir de valeurs que votre cluster Kubernetes ne sera pas en mesure de satisfaire. Des erreurs ou un comportement imprévisible, comme l’indisponibilité de l’instance de la base de données, peuvent en découler. Par exemple, si l’état de votre serveur reste défini sur mise à jour pendant un temps prolongé après la modification de la configuration, cela peut indiquer que vous définissez les paramètres ci-dessous sur des valeurs que votre cluster Kubernetes ne peut pas satisfaire. Si tel est le cas, annulez la modification ou lisez _troubleshooting_section.

Quels paramètres devez-vous définir ?

  • Pour définir le nombre minimal de vCores, définissez --cores-request.
  • Pour définir le nombre maximal de vCores, définissez --cores-limit.
  • Pour définir la mémoire minimale, définissez --memory-request.
  • Pour définir la mémoire maximale, définissez --memory-limit.

Attention

Avec Kubernetes, la configuration d’un paramètre de limite sans configurer le paramètre de requête correspondant force la valeur de la requête à être de la même valeur que la limite. Une indisponibilité de votre serveur risque d’en découler, car ses pods peuvent ne pas être replanifiés si aucun nœud Kubernetes n’est disponible avec suffisamment de ressources. Ainsi, pour éviter cette situation, les exemples ci-dessous montrent comment définir ces deux paramètres, de requête et de limite.

La syntaxe générale est la suivante :

az postgres server-arc edit -n <server name> --memory-limit/memory-request/cores-request/cores-limit <val> --k8s-namespace <namespace> --use-k8s

La valeur que vous indiquez pour le paramètre de mémoire est un nombre suivi d’une unité de volume. Par exemple, pour indiquer 1 Go, vous devez indiquer 1024 Mi ou 1 Gi. Pour indiquer un nombre de cœurs, vous devez simplement transmettre un nombre sans unité.

Exemples utilisant l’interface Azure CLI

Configurez le serveur pour qu’il ne dépasse pas 2 cœurs :

 az postgres server-arc edit -n postgres01 --cores-request 1, --cores-limit 2  --k8s-namespace arc --use-k8s

Remarque

Pour plus d’informations sur ces paramètres, exécutez az postgres server-arc update --help.

Exemple utilisant des outils natifs Kubernetes comme kubectl

Exécutez la commande suivante :

kubectl edit postgresql/<server name> -n <namespace name>

Vous accédez à l’éditeur vi dans lequel vous pouvez naviguer et modifier la configuration. Utilisez la commande suivante pour mapper le paramètre souhaité au nom du champ dans la spécification :

Attention

Voici un exemple fourni pour illustrer la modification de la configuration. Avant de mettre à jour la configuration, veillez à définir les paramètres sur des valeurs que le cluster Kubernetes peut honorer.

Par exemple, si vous souhaitez définir les paramètres suivants pour les rôles de coordinateur et de Worker sur les valeurs suivantes :

  • Nombre minimal de vCores = 2
  • Nombre maximal de vCores = 4
  • Mémoire minimale = 512Mb
  • Mémoire maximale = 1Gb

Vous devez configurer la définition de votre groupe de serveurs, afin qu’elle corresponde à la configuration ci-dessous :

...
  spec:
  dev: false
  scheduling:
    default:
      resources:
        requests:
          cpu: "2"
          memory: 256Mi
        limits:
          cpu: "4"
          memory: 1Gi
...

Si vous ne connaissez pas l’éditeur vi, consultez la description des commandes dont vous pouvez avoir besoin ici :

  • Mode d’édition : i
  • Se déplacer avec les flèches
  • Fin de l’édition : esc
  • Quitter sans enregistrer : :qa!
  • Quitter après l’enregistrement : :qw!

Réinitialiser les valeurs par défaut

Pour réinitialiser les valeurs par défaut des paramètres limites/demandes de cœur/mémoire, modifiez-les et transmettez une chaîne au lieu d’une valeur réelle. Par exemple, si vous souhaitez réinitialiser le paramètre de limite de cœurs, exécutez les commandes suivantes :

az postgres server-arc edit -n postgres01 --cores-request '' --k8s-namespace arc --use-k8s
az postgres server-arc edit -n postgres01 --cores-limit '' --k8s-namespace arc --use-k8s

or

az postgres server-arc edit -n postgres01 --cores-request '' --cores-limit '' --k8s-namespace arc --use-k8s