API サービスの呼び出し数の割合を制限することで、操作の信頼性を高めるとともに、高負荷時に実体なしのオブジェクトの発生率を抑えることができます。

クライアントが割合制限を超えると、「429 要求が多すぎます」という HTTP 応答が送信されます。応答内の Retry-After ヘッダーは、次の呼び出しを行うまでクライアントが待機する時間を示します。

割合制限をサービス単位で有効にすることができます。たとえば、Nova API サービスの呼び出しについて、Neutron API サービスの呼び出しよりも厳密に調整することが可能です。

手順

  1. OpenStack 管理サーバviouser としてログインします。
  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_requests および request_period パラメータをコメント解除し、適宜設定します。

    割合制限を実行できる API および対応するパラメータは、次のとおりです。

    オプション

    説明

    haproxy_keystone_max_requests

    haproxy_keystone_request_period

    Keystone API

    haproxy_keystone_admin_max_requests

    haproxy_keystone_admin_request_period

    Keystone Administrator 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 Placement 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 アドレスから Neutron パブリック API に送信する要求数が 10 秒間に 50 個を超えた場合、ロード バランサーは以降のすべての要求に対して送信元アドレスから HTTP 429 エラーを 60 秒間返します。60 秒経過すると、送信元アドレスから Neutron パブリック API への要求送信を再開できます。

haproxy_throttle_period: 60
haproxy_neutron_max_requests: 50
haproxy_neutron_request_period: 10