Al limitar la frecuencia de llamadas realizadas a los servicios de la API, las operaciones serán más confiables y se reducirá la incidencia de objetos huérfanos durante cargas altas.

Si un cliente supera el límite de frecuencia, recibe una respuesta HTTP 429: Demasiadas solicitudes. El encabezado Retry-After de la respuesta indica cuánto tiempo debe esperar el cliente antes de realizar más llamadas.

Puede habilitar la limitación de frecuencia por servicio. Por ejemplo, es posible que desee limitar las llamadas al servicio de API de Nova de una forma más estricta que las llamadas al servicio de API de Neutron.

Procedimiento

  1. Inicie sesión en Servidor de administración de OpenStack como viouser.
  2. Si la implementación no utiliza un archivo custom.yml, copie el archivo de plantilla custom.yml en el directorio /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. Abra el archivo /opt/vmware/vio/custom/custom.yml en un editor de texto.
  4. Quite la marca de comentario del parámetro haproxy_throttle_period y establézcalo como el número de segundos que deben esperar los clientes si se supera un límite de frecuencia.
  5. Si desea configurar límites de frecuencia para API específicas, quite la marca de comentario de los parámetros max_requests y request_period para dichos servicios y configúrelos como desee.

    A continuación se enumeran las API cuya frecuencia puede limitarse y los parámetros correspondientes.

    Opción

    Descripción

    haproxy_keystone_max_requests

    haproxy_keystone_request_period

    API de Keystone

    haproxy_keystone_admin_max_requests

    haproxy_keystone_admin_request_period

    API del administrador de Keystone

    haproxy_glance_max_requests

    haproxy_glance_request_period

    API de Glance

    haproxy_nova_max_requests

    haproxy_nova_request_period

    API de Nova

    haproxy_nova_placement_max_requests

    haproxy_nova_placement_request_period

    API de colocación de Nova

    haproxy_cinder_max_requests

    haproxy_cinder_request_period

    API de Cinder

    haproxy_designate_max_requests

    haproxy_designate_request_period

    API de Designate

    haproxy_neutron_max_requests

    haproxy_neutron_request_period

    API de Neutron

    haproxy_heat_max_requests

    haproxy_heat_request_period

    API de Heat

    haproxy_heat_cfn_max_requests

    haproxy_heat_cfn_request_period

    API de Heat CloudFormation

    haproxy_heat_cloudwatch_max_requests

    haproxy_heat_cloudwatch_request_period

    API de Heat CloudWatch

    haproxy_ceilometer_max_requests

    haproxy_ceilometer_request_period

    API de Ceilometer

    haproxy_aodh_max_requests

    haproxy_aodh_request_period

    API de Aodh

    haproxy_panko_max_requests

    haproxy_panko_request_period

    API de Panko

  6. Implemente la configuración actualizada.
    sudo viocli deployment configure --limit lb

    Al implementar la configuración, se interrumpen brevemente los servicios de OpenStack.

Limitar las llamadas a la API pública de Neutron

La siguiente configuración limita las llamadas a la API pública de Neutron. Si una única dirección IP de origen envía más de 50 solicitudes a la API pública de Neutron en un periodo de 10 segundos, los equilibradores de carga devolverán errores HTTP 429 a todas las solicitudes posteriores realizadas desde esa dirección de origen durante un período de 60 segundos. Transcurridos 60 segundos, la dirección de origen puede reanudar el envío de solicitudes a la API pública de Neutron.

haproxy_throttle_period: 60
haproxy_neutron_max_requests: 50
haproxy_neutron_request_period: 10