ㅍㅍㅋㄷ

Openstack flavor를 이용한 VM network QoS 설정 본문

IT/Openstack

Openstack flavor를 이용한 VM network QoS 설정

물과같이 2016.05.04 11:52

Openstack 과 같은 cloud 환경을 운영할때 VM의 QoS 설정은 중요한 운영 포인트이다. 

특히 네트워크의 경우, 한개의 VM이 cloud 환경의 모든 트래픽을 점유하게 되면 동일 환경 내 다른 VM 들에게 영향을 미칠수 있으며, 이는 불특정 다수의 VM이 공용되는 환경에서 필수적으로 고려되야 하는 부분이다. 


 Openstack의 경우 다양한 network QoS 적용 방법이 있는데, 이번 포스트에는 flavor를 통해 network quota를 지정하는 방법을 소개한다.

  




1. Nova flavor 설정


   CLI를 통해 flavor의 extra spec 으로 QoS 설정 항목을 넣어 주면 된다. 명령은 아래와 같은 형태이다.

   

  nova flavor-key  <flavor_name> set quota:vif_<direction>_<param_name> = value


  qouta로 설정할 수 있는 옵션은 아래와 같다.

    • vif_inbound_average : inbound 트래픽의 평균 전송량 제한값 ( kilobytes/sec )
    • vif_inbound_peak : bridge 에서 전송 가능한 최대 inbound 트래픽 speed. outbound 에 대한 설정은 무시됨. ( kilobytes/sec )
    • vif_inbound_burst : peak speed 로 하나의 burst로 전송 가능한 kilobytes 양
    • vif_outbound_average : outbound 트래픽의 평균 전송량 제한값 ( kilobytes/sec )
    • vif_outbound_peak :무시됨
    • vif_outbound_burst : peak speed 로 하나의 burst로 전송 가능한 kilobytes 양
 flavor 중 'm1.small' 에 QoS 를 걸어보자. 
 m1.small flavor로 배포되는 VM의 경우 QoS가 설정되어 배포되게 된다.  

root@~~# nova flavor-key m1.small set quota:vif_inbound_average = 800
root@~~# nova flavor-key m1.small set quota:vif_inbound_peak = 1000
root@~~# nova flavor-key m1.small set quota:vif_inbound_burst = 30
root@~~# 
root@~~# nova flavor-key m1.small set quota:vif_outbound_average = 800
root@~~# nova flavor-key m1.small set quota:vif_outbound_peak = 1000
root@~~# nova flavor-key m1.small set quota:vif_outbound_burst = 30


2. 확인


flavor를 확인해 보면 아래와 같이 extra spec에 해당 파라미터들이 설정된 것을 볼 수 있다.


root@~~# nova flavor-list

+--------------------------------------+-----------+-----------+------+-----------+------+-------+-------------+-----------+

| ID                                   | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |

+--------------------------------------+-----------+-----------+------+-----------+------+-------+-------------+-----------+

| 8a35a45e-30ac-4209-b7d8-4fd82c749347 | m1.small  | 4096      | 40   | 0         |      | 2     | 1.0         | True      |

+--------------------------------------+-----------+-----------+------+-----------+------+-------+-------------+-----------+


root@~~# nova flavor-show 8a35a45e-30ac-4209-b7d8-4fd82c749347 

+----------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Property                   | Value                                                                                                                                                                                                                                                |

+----------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| OS-FLV-DISABLED:disabled   | False                                                                                                                                                                                                                                                |

| OS-FLV-EXT-DATA:ephemeral  | 0                                                                                                                                                                                                                                                    |

| disk                       | 40                                                                                                                                                                                                                                                   |

| extra_specs                | {"quota:vif_outbound_average": "800", "quota:vif_outbound_burst": "1000", "quota:vif_inbound_peak": "30", "quota:vif_inbound_average": "800", "quota:vif_inbound_burst": "1000", "quota:vif_outbound_peak": "30"} |

| id                         | ac132a96-e748-4599-bf82-dad73ab445ef                                                                                                                                                                                                                 |

| name                       | m1.small                                                                                                                                                                                                                                            |

| os-flavor-access:is_public | True                                                                                                                                                                                                                                                 |

| ram                        | 4096                                                                                                                                                                                                                                                 |

| rxtx_factor                | 1.0                                                                                                                                                                                                                                                  |

| swap                       |                                                                                                                                                                                                                                                      |

| vcpus                      | 2                                                                                                                                                                                                                                                    |

+----------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+



 3. VM 배포 및 적용 확인


  해당 flavor로 VM을 배포하면 QoS 설정이 적용된 상태로 배포되게 된다. 

  만약 QoS를 설정하기 전에 해당 flavor로 배포된 VM의 경우, VM을 shutdown 후 start 시키면 QoS가 적용된 상태로 올라오게 된다. 

  (reboot 말고 shutdown / start를 수행한다 )


  실제 적용은 libvirt 의 element 와 attribute에 설정된다. 

  virsh 명령어로 VM에 적용된 속성들을 확인해 보자.


root@~~# virsh xmldump <INSTANCE_ID>


..... (중략)

<interface type='bridge'>

      <mac address='XXXXXX'/>

      <source bridge='qbr5d47a3ee-ae'/>

      <bandwidth>

         <inbound average='800' peak='1000' burst='30'/>

         <outbound average='800' peak='1000' burst='30'/>

      </bandwidth>

      <target dev='tap5d47a3ee-ae'/>

      <model type='virtio'/>

      <alias name='net0'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>

</interface>



'IT > Openstack' 카테고리의 다른 글

Openstack flavor를 이용한 VM network QoS 설정  (3) 2016.05.04
Paypal과 eBay의 Openstack 적용 사례  (0) 2015.07.15
3 Comments
  • 프로필사진 HITHERE 2016.08.22 15:06 신고 혹시 Flavor에 월별 최대 트래픽 사용가능량도 집어넣을 수 있나요? 관련 문서들에서도 속도 제어에 관한 설명은 있지만 최대 트래픽 사용가능량 관련 정보는 찾을 수가 없네요.
  • 프로필사진 물과같이 2016.08.23 09:50 신고 Flavor에 월별 최대 트래픽 사용가능량에 대한 제어는 지원하지 않습니다. 보통 Network QoS는 bandwidth guarantee에 대한 부분이므로 말씀하신 기능은 조금 다른 방식으로 접근해야할것 같네요. 생각하기로는 트래픽 사용량에 대한 monitoring 쪽에 더 가까운 기능으로 보입니다.
  • 프로필사진 질문자 2018.10.12 10:12 신고 flavor 변경한 후에 VM shutdown->start 했는데 변경된 flavor의 파라미터 값이 적용되지 않는데 어떻게 해결하나요?
댓글쓰기 폼