9.4. QoS 정책을 사용하여 네트워크 트래픽 제한
RHOSP(Red Hat OpenStack Platform) Networking 서비스(neutron) QoS(서비스 품질) 정책을 생성하여 RHOSP 네트워크, 포트 또는 유동 IP의 대역폭을 제한하고 지정된 속도를 초과하는 모든 트래픽을 삭제할 수 있습니다.
사전 요구 사항
-
네트워킹 서비스에는
qos
서비스 플러그인이 로드되어야 합니다.(기본적으로 플러그인이 로드됩니다.)
절차
자격 증명 파일을 가져옵니다.
예제
$ source ~/overcloudrc
qos
서비스 플러그인이 Networking 서비스에 로드되었는지 확인합니다.$ openstack network qos policy list
qos
서비스 플러그인이 로드되지 않은 경우ResourceNotFound
오류가 발생하고qos
서비스 플러그인을 로드해야 합니다. 자세한 내용은 9.2절. “QoS 정책을 위한 네트워킹 서비스 구성”의 내용을 참조하십시오.QoS 정책을 생성할 프로젝트의 ID를 확인합니다.
$ openstack project list
샘플 출력
+----------------------------------+----------+ | ID | Name | +----------------------------------+----------+ | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors | | 519e6344f82e4c079c8e2eabb690023b | services | | 80bf5732752a41128e612fe615c886c6 | demo | | 98a2f53c20ce4d50a40dac4a38016c69 | admin | +----------------------------------+----------+
이전 단계의 프로젝트 ID를 사용하여 프로젝트에 대한 QoS 정책을 생성합니다.
예제
이 예에서는
admin
프로젝트에 대해bw-limiter
라는 QoS 정책이 생성됩니다.$ openstack network qos policy create --share --project 98a2f53c20ce4d50a40dac4a38016c69 bw-limiter
정책에 대한 규칙을 구성합니다.
참고각 규칙의 유형 또는 방향이 다른 한 개 이상의 규칙을 정책에 추가할 수 있습니다. 예를 들어 송신과 수신 방향을 사용하여 대역폭 제한 규칙을 두 개 지정할 수 있습니다.
예제
이 예에서는 대역폭 제한이
50000
bw-limiter
라는 정책에 대해 QoS 수신 및 송신 규칙이 생성됩니다.$ openstack network qos rule create --type bandwidth-limit \ --max-kbps 50000 --max-burst-kbits 50000 --ingress bw-limiter $ openstack network qos rule create --type bandwidth-limit \ --max-kbps 50000 --max-burst-kbits 50000 --egress bw-limiter
정책이 연결된 포트를 생성하거나 정책을 기존 포트에 연결할 수 있습니다.
예 - 정책이 연결된 포트 생성
이 예에서 정책
bw-limiter
는 포트port2
와 연결되어 있습니다.$ openstack port create --qos-policy bw-limiter --network private port2
샘플 출력
+-----------------------+--------------------------------------------------+ | Field | Value | +-----------------------+--------------------------------------------------+ | admin_state_up | UP | | allowed_address_pairs | | | binding_host_id | | | binding_profile | | | binding_vif_details | | | binding_vif_type | unbound | | binding_vnic_type | normal | | created_at | 2022-07-04T19:20:24Z | | data_plane_status | None | | description | | | device_id | | | device_owner | | | dns_assignment | None | | dns_name | None | | extra_dhcp_opts | | | fixed_ips | ip_address='192.0.2.210', subnet_id='292f8c-...' | | id | f51562ee-da8d-42de-9578-f6f5cb248226 | | ip_address | None | | mac_address | fa:16:3e:d9:f2:ba | | name | port2 | | network_id | 55dc2f70-0f92-4002-b343-ca34277b0234 | | option_name | None | | option_value | None | | port_security_enabled | False | | project_id | 98a2f53c20ce4d50a40dac4a38016c69 | | qos_policy_id | 8491547e-add1-4c6c-a50e-42121237256c | | revision_number | 6 | | security_group_ids | 0531cc1a-19d1-4cc7-ada5-49f8b08245be | | status | DOWN | | subnet_id | None | | tags | [] | | trunk_details | None | | updated_at | 2022-07-04T19:23:00Z | +-----------------------+--------------------------------------------------+
예 - 기존 포트에 정책 연결
이 예에서 정책
bw-limiter
는port1
과 연결됩니다.$ openstack port set --qos-policy bw-limiter port1
검증
bandwith 제한 정책이 포트에 적용되었는지 확인합니다.
정책 ID를 가져옵니다.
예제
이 예에서는 QoS 정책
bw-limiter
를 쿼리합니다.$ openstack network qos policy show bw-limiter
샘플 출력
+-------------------+-------------------------------------------------------------------+ | Field | Value | +-------------------+-------------------------------------------------------------------+ | description | | | id | 8491547e-add1-4c6c-a50e-42121237256c | | is_default | False | | name | bw-limiter | | project_id | 98a2f53c20ce4d50a40dac4a38016c69 | | revision_number | 4 | | rules | [{u'max_kbps': 50000, u'direction': u'egress', | | | u'type': u'bandwidth_limit', | | | u'id': u'0db48906-a762-4d32-8694-3f65214c34a6', | | | u'max_burst_kbps': 50000, | | | u'qos_policy_id': u'8491547e-add1-4c6c-a50e-42121237256c'}, | | | [{u'max_kbps': 50000, u'direction': u'ingress', | | | u'type': u'bandwidth_limit', | | | u'id': u'faabef24-e23a-4fdf-8e92-f8cb66998834', | | | u'max_burst_kbps': 50000, | | | u'qos_policy_id': u'8491547e-add1-4c6c-a50e-42121237256c'}] | | shared | False | +-------------------+-------------------------------------------------------------------+
포트를 쿼리하고 정책 ID가 이전 단계에서 얻은 것과 일치하는지 확인합니다.
예제
이 예제에서는
port1
을 쿼리합니다.$ openstack port show port1
샘플 출력
+-------------------------+--------------------------------------------------------------------+ | Field | Value | +-------------------------+--------------------------------------------------------------------+ | admin_state_up | UP | | allowed_address_pairs | ip_address='192.0.2.128', mac_address='fa:16:3e:e1:eb:73' | | binding_host_id | compute-2.redhat.local | | binding_profile | | | binding_vif_details | port_filter='True' | | binding_vif_type | ovs | | binding_vnic_type | normal | | created_at | 2022-07-04T19:07:56 | | data_plane_status | None | | description | | | device_id | 53abd2c4-955d-4b44-b6ad-f106e3f15df0 | | device_owner | compute:nova | | dns_assignment | fqdn='host-192-0-2-213.openstacklocal.', hostname='my-host3', | | | ip_address='192.0.2.213' | | dns_domain | None | | dns_name | | | extra_dhcp_opts | | | fixed_ips | ip_address='192.0.2..213', subnet_id='641d1db2-3b40-437b-b87b-63 | | | 079a7063ca' | | | ip_address='2001:db8:0:f868:f816:3eff:fee1:eb73', subnet_id='c7ed0 | | | 70a-d2ee-4380-baab-6978932a7dcc' | | id | 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12 | | location | cloud='', project.domain_id=, project.domain_name=, project.id='7c | | | b99d752fdb4944a2208ec9ee019226', project.name=, region_name='regio | | | nOne', zone= | | mac_address | fa:16:3e:e1:eb:73 | | name | port2 | | network_id | 55dc2f70-0f92-4002-b343-ca34277b0234 | | port_security_enabled | True | | project_id | 98a2f53c20ce4d50a40dac4a38016c69 | | propagate_uplink_status | None | | qos_policy_id | 8491547e-add1-4c6c-a50e-42121237256c | | resource_request | None | | revision_number | 6 | | security_group_ids | 4cdeb836-b5fd-441e-bd01-498d758704fd | | status | ACTIVE | | tags | | | trunk_details | None | | updated_at | 2022-07-04T19:11:41Z | +-------------------------+--------------------------------------------------------------------+
추가 리소스
- 명령줄 인터페이스 참조에서 네트워크 qos 규칙 생성
- 명령줄 인터페이스 참조에서 네트워크 qos 규칙 세트
- 명령줄 인터페이스 참조에서 네트워크 qos 규칙 삭제
- 명령줄 인터페이스 참조의 네트워크 qos 규칙 목록