API 서비스에 대한 호출 속도를 제한하면 작업을 보다 안정적으로 수행할 수 있으며 부하가 높은 기간 동안 연결이 끊어진 개체의 발생 가능성을 줄일 수 있습니다.

클라이언트가 속도 제한을 초과하면 HTTP 429 요청이 너무 많음 응답이 수신됩니다. 응답의 Retry-After 헤더는 추가 호출을 하기 전에 클라이언트가 대기해야 하는 시간을 나타냅니다.

서비스별로 속도 제한을 사용하도록 설정할 수 있습니다. 예를 들어 Nova API 서비스 호출을 Neutron API 서비스 호출보다 더 타이트하게 조절하려고 할 수 있습니다.

프로시저

  1. OpenStack 관리 서버viouser로 로그인합니다.
  2. 배포에 custom.yml 파일을 사용하지 않는 경우에는 /opt/vmware/vio/custom 디렉토리에 템플릿 custom.yml 파일을 복사합니다.
    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 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 주소가 10초 동안 50개가 넘는 요청을 Neutron 공용 API에 전송하는 경우, 로드 밸런서는 60초 동안 해당 소스 주소의 모든 후속 요청에 대해 HTTP 429 오류를 반환합니다. 60초가 지나면 소스 주소가 Neutron 공용 API에 요청 전송을 재개할 수 있습니다.

haproxy_throttle_period: 60
haproxy_neutron_max_requests: 50
haproxy_neutron_request_period: 10