透過限制對 API 服務進行呼叫的速率,可以使營運更可靠,並減少高負載期間孤立物件的出現次數。

如果用戶端超過速率限制,它會收到 HTTP 429 要求過多回應。回應中的 Retry-After 標頭會指示用戶端在進行進一步呼叫之前必須等待的時間長度。

您可以依服務啟用速率限制。例如,與 Neutron API 服務呼叫相比,您可能更急切地要節流 Nova API 服務呼叫。

程序

  1. viouser 身分登入 OpenStack 管理伺服器
  2. 如果您的部署未使用 custom.yml 檔案,請將範本 custom.yml 檔案複製到 /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. 在文字編輯器中開啟 /opt/vmware/vio/custom/custom.yml 檔案。
  4. 取消 haproxy_throttle_period 參數的註解,並將其設為在用戶端超過速率限制時必須等待的秒數。
  5. 如果您想要設定特定 API 的速率限制,請針對這些服務取消 max_requestsrequest_period 參數的註解,並根據需要進行設定。

    可以設定速率限制的 API 及對應的參數如下所示。

    選項

    說明

    haproxy_keystone_max_requests

    haproxy_keystone_request_period

    Keystone API

    haproxy_keystone_admin_max_requests

    haproxy_keystone_admin_request_period

    Keystone 管理員 API

    haproxy_glance_max_requests

    haproxy_glance_request_period

    Glance API

    haproxy_nova_max_requests

    haproxy_nova_request_period

    Nova API

    haproxy_nova_placement_max_requests

    haproxy_nova_placement_request_period

    Nova 放置 API

    haproxy_cinder_max_requests

    haproxy_cinder_request_period

    Cinder API

    haproxy_designate_max_requests

    haproxy_designate_request_period

    Designate API

    haproxy_neutron_max_requests

    haproxy_neutron_request_period

    Neutron API

    haproxy_heat_max_requests

    haproxy_heat_request_period

    Heat API

    haproxy_heat_cfn_max_requests

    haproxy_heat_cfn_request_period

    Heat CloudFormation API

    haproxy_heat_cloudwatch_max_requests

    haproxy_heat_cloudwatch_request_period

    Heat CloudWatch API

    haproxy_ceilometer_max_requests

    haproxy_ceilometer_request_period

    Ceilometer API

    haproxy_aodh_max_requests

    haproxy_aodh_request_period

    Aodh API

    haproxy_panko_max_requests

    haproxy_panko_request_period

    Panko API

  6. 部署已更新的組態。
    sudo viocli deployment configure --limit lb

    部署組態會暫時中斷 OpenStack 服務。

Neutron 公用 API 的呼叫限制

下列組態限制了 Neutron 公用 API 的呼叫。如果單一來源 IP 位址在 10 秒內向 Neutron 公用 API 傳送超過 50 個要求,那麼在接下來 60 秒,負載平衡器會對來自此來源位址的所有後續要求傳回 HTTP 429 錯誤。60 秒過後,此來源位址可以繼續將要求傳送至 Neutron 公用 API。

haproxy_throttle_period: 60
haproxy_neutron_max_requests: 50
haproxy_neutron_request_period: 10