La limitation du débit des appels effectués aux services d'API permet d'améliorer la fiabilité des opérations et de réduire l'incidence des objets inactifs en cas de charge élevée.

Si un client dépasse la limite de débit, il obtient la réponse HTTP 429 Too Many Requests. Dans la réponse, l'en-tête Retry-After indique la durée pendant laquelle le client doit patienter avant de pouvoir effectuer d'autres appels.

Vous pouvez activer la limite de débit par service. Par exemple, vous souhaiterez peut-être limiter les appels du service d'API Nova davantage que les appels de service d'API Neutron.

Procédure

  1. Connectez-vous à Serveur de gestion OpenStack en tant que viouser.
  2. Si votre déploiement n'utilise pas de fichier custom.yml, copiez le fichier de modèle custom.yml dans le répertoire /opt/vmware/vio/custom.
    sudo mkdir -p /opt/vmware/vio/custom
    sudo cp /var/lib/vio/ansible/custom/custom.yml.sample /opt/vmware/vio/custom/custom.yml
  3. Ouvrez le fichier /opt/vmware/vio/custom/custom.yml dans un éditeur de texte.
  4. Annulez la mise en commentaire du paramètre haproxy_throttle_period et définissez-le sur le nombre de secondes que les clients doivent patienter s'ils dépassent la limite de débit.
  5. Si vous souhaitez configurer des limites de débit pour des API spécifiques, annulez la mise en commentaire des paramètres max_requests et request_period pour ces services et configurez-les comme vous le souhaitez.

    Les API pour lesquelles vous pouvez définir une limite de débit sont répertoriées ci-dessous, avec les paramètres correspondants.

    Option

    Description

    haproxy_keystone_max_requests

    haproxy_keystone_request_period

    API Keystone

    haproxy_keystone_admin_max_requests

    haproxy_keystone_admin_request_period

    API d'administrateur Keystone

    haproxy_glance_max_requests

    haproxy_glance_request_period

    API Glance

    haproxy_nova_max_requests

    haproxy_nova_request_period

    API Nova

    haproxy_nova_placement_max_requests

    haproxy_nova_placement_request_period

    API de placement Nova

    haproxy_cinder_max_requests

    haproxy_cinder_request_period

    API Cinder

    haproxy_designate_max_requests

    haproxy_designate_request_period

    API Designate

    haproxy_neutron_max_requests

    haproxy_neutron_request_period

    API Neutron

    haproxy_heat_max_requests

    haproxy_heat_request_period

    API Heat

    haproxy_heat_cfn_max_requests

    haproxy_heat_cfn_request_period

    API Heat CloudFormation

    haproxy_heat_cloudwatch_max_requests

    haproxy_heat_cloudwatch_request_period

    API Heat CloudWatch

    haproxy_ceilometer_max_requests

    haproxy_ceilometer_request_period

    API Ceilometer

    haproxy_aodh_max_requests

    haproxy_aodh_request_period

    API Aodh

    haproxy_panko_max_requests

    haproxy_panko_request_period

    API Panko

  6. Déployez la configuration mise à jour.
    sudo viocli deployment configure --limit lb

    Le déploiement de la configuration interrompt brièvement les services OpenStack.

Limitation des appels à l'API publique Neutron

La configuration suivante limite les appels à l'API publique Neutron. Si, sur une période de 10 secondes, l'API publique Neutron reçoit plus de 50 demandes envoyées par la même adresse IP source, alors pendant les 60 secondes suivantes, les équilibrages de charge renvoient des erreurs HTTP/429 à toute demande provenant de cette adresse source. Au bout de 60 secondes, l'adresse source peut recommencer à envoyer des demandes à l'API publique Neutron.

haproxy_throttle_period: 60
haproxy_neutron_max_requests: 50
haproxy_neutron_request_period: 10