[VM] 수백대의 가상머신을 예약된 시간에 켜고 끄는 방법을 알아보자 ! (Automation + OMS + SendGrid)

VM
작성자
Roronoa
작성일
2017-12-05 11:10
조회
20911
 

현재 Azure의 가상머신의 기능중에는 VM을 일정시간이 되면 자동으로 꺼지게 하는 Auto-Shutdown 기능이 포털로 이미 구현되어 있다.

그러나 자동으로 켜지게 하는 기능을 쓰려면 2가지 방법을 쓸수 있다. 2개다 Automation을 쓰는 방법이지만 다른 프로덕트를 결합해서 취향에 맞게 쓸수 있으며 실제적으로 2번의 경우 OMS 를 사용해서 더 복잡한 방법(로그기록을 받아서 원하는 시나리오대로) 을 쓸수 있으며 SendGrid를 사용해서 트리거에 맞춰서 이메일로 보고 받을수 있다. 자 이시나리오에서 끝나지 않고 추가적으로 다음편에서는 Automation + OMS + SendGrid 를 더 복잡한 시나리오 에 연개해볼 예정이다. 추가적으로 이 튜토리얼을 기반으로 Runbook으로 모든 리소스를 자동화 시킬수 있다. 물론 누군가는 이런 작업이 쓸대없는 고퀄리티라 치부할수 있겠지만 ....... Azure의 VM은 꺼지면 비용이 발생하지 않으므로 비용적인 면에서는 확실한 이득이다.

  1. 파워쉘을 Automation에 연결하여 원하는 시간에 하는 방법

  2. 가장 최신방법은  Start/Stop VMs during off-hours [Preview] 라는 기능은 아직 프리뷰지만 가장 빠르게 이 기능을 구현할수 있다.


1번 방법

파워쉘을 Runbook에 저장해서 포털에서 같은 구독의 모든 VM을 지역에 상관없이 한방에 켜고 끄는 방법이다. 이 시나리오는 VM에 Tag를 달아서 모든 VM을 한번에 컨트롤 할 수 있으므로 VM이 아주 많은 유저에게 아주 유용한 솔루션이라고 할 수 있다. 또한 VM 뿐만아니라 Runbook과 파워쉘을 더 강화 시킨다면 현존하는 AutoScaling 보다 훨씬 강력하며 유용하면서 비용 효율적인 자동화를 구현 할수 있으며 3-4명이 할일을 1명이 인프라를 관리 하는 방법으로 줄여줄수 있다. 물론 VM을 3-4대 쓰는 유저에겐 쓸대없는 일이다.

자 시작해보자

조건:

현재 한국에서는 Automation을 생성할수 없다. 그러나 한국에 있는 VM을 일본에 있는 Automation으로  컨트롤할 수 있으므로 Automation만 일본 동부에 배포를 하면된다.

 

따라해보자 (동영상을 따라해본다)

  1. 먼저 Azure 포털로 간다.

  2. Runbook하나 만들때마다 리소스로 잡히기때문에 Runbook 과 Automation을 만들 전용 리소스 그룹을 만든다.

  3. 마켓플레이스에서 Automation이라고 친후 Publisher가 Microsoft인 Automation을 생성한 리소스 그룹에 Japan East지역에 설치한다.

  4. 이때 꼭 Azure Run As Account를 Yes로 선택한다 (이 부분을 해야 로그인을 안해도 Automation을 쓸수 있다)

  5. Automation 이 완성되면 파워쉘을 다운받고 압축을 로컬컴퓨터에 푼다. 파워쉘 다운받는 링크다

  6. 파워쉘에서 Automation이 위치한 리소스 그룹과 Automation Account의 이름을 변경한 후 Publish 한다.

  7. 자동으로 켜지고 꺼져야 할 VM에만 Tag를 세팅한다.

  8. Runbook을 수동으로 실행한다.

  9. 여기에 추가적으로 스케쥴을 사용해서 원하는 시간에 켜지고 꺼지고 세팅을 한다.



여기까지는 아주 쉽다. 이 기능만으로도 VM이 10대 이상이면 시간을 절약할수 있다. 10대 이하이면 별 쓸모 없다. 그리고 여기에서 응용하여 OMS에서 메모리 사용량을 메트릭으로 세팅한후 메모리와 CPU 사용량으로 오토 스케쥴링이 가능하다. 또한 Automation은 단순 스케쥴링이 아닌 미리 Runbook을 사용하여 포털에서 사용할수 없는 파워쉘을 미리 세팅해놓을수도 있으며 응용분야는 수백개가 될 수 있다.

2번 방법 Start/Stop VMs during off-hours 를 사용하는 방법 

2번 방법이 가장 쉽고 빠르게 할수 있으나 아직 프리뷰며 제한 사항이 있다.  우선 첫번째 방법으로 해보도록 한다.

조건 :

  • Automation 이 되는 지역 Southeast Asia, East US2, South Central US, West Central US, North Europe, South Europe, Japan East, Brazil South, Australia South East, Canada Central, UK South, US Gov Virginia 만 된다.

  • Automation이 있는 지역의 동일 구독에 있는 VM만 된다.

  • SendGrid는 Azure 서드파티 회사이며 이 회사 제품을 같이 사용할 수 있어야 한다.

  • Log Analytics를 사용해야하므로 OMS 가 사용가능 해야한다. (디플로이 되고 시간이 걸린다.)2번 방법 따라하기




    1. 포털에 접속한다.

    2. Resource Group을 만든다 (Runbook당 모두 포털에서 한개의 리소스로 잡히므로 Runbook과 Automation을 관리하는 Resource Group을 따로 만든다) 빨간색 부분은 Automation과 OMS 그리고 Runbook을 사용하는 리소스 그룹으로 따로 보관한다 보시다 싶이 한국지역은 Automation과 OMS을 사용할수 없으므로 Japan EAST에 배포한다. 단순히 OMS와 다양한 기능을 쓴다면 Japan East 에서만 된다. 그러나 VM을 키고 끄는 기능인 Runbook은 모든 지역에서 컨트롤 할수 있다. 예를들어 밑에 파란색 부분은 한국지역의 VM이 있는 리소스 그룹이며 두번째 녹색 부분은 일본지역에 VM이 있는 리소스 그룹이며 두개의 리소스를 동시에 Runbook으로 컨트롤 가능하다.  002 compute-multi-vm

    3. 자동으로 켜졌다 꺼졌다 할 VM을 생성한다 (위에 그림처럼 지역에 상관없다.)

    4. 마켓플레이스에서 Start/Stop VMs during off-hours 를 검색한 후 새로운 Resource Group으로 만든다. (이 기능은 일본 지역만 된다 현재)

    5. WorkSpace에서 OMS Workspace를 만든다 (약 4시간 정도 되야 정상 작동)

    6. 002 compute-multi-vm

    7. 위에 그림에 두번째 있는 부분에 Automation Account 를 만든다.

    8. Taget Resouce Group에 VM을 만든 RG을 적고 스케쥴을 세팅한다. 추후 Automation -> Variables 탭에서 변수를 따로 세팅할수 있으며 한국시간으로 조정가능하므로 대충 적는다.

    9. 가상머신을 VM이름을 적는다

    10. 켜지고 꺼질 스케쥴을 만든다

    11. 알람을 받을 이메일을 적는다

    12. 바로 RG으로 접근하지 않고 디플로이가 다 될때까지 조금 오래 기다린다.

    13. 완성됨

    14.  사용할때 Automation Account의 Variables에 초기 세팅한 변수들이 전부 정의 되있다.



002 compute-multi-vm

시나리오 1  - 가상머신을 매일 자동으로 시작하고 꺼지는 기능이 필요할때 Schedule-StartVM이라고 되어 있는 Runbook을 사용한다. 시간대는 조정 가능하다. 이방법은 Variable에 원하는 리소스를 하나씩 지정해줘야 한다.

시나리오 2 - 태그를 사용하여 VM을 시작 하고 중지하는 방법 은 Sequence-StartVM으로 되어 있는 Runbook을 사용한다.

시나리오 3 - 위에 단순한 시나리오 1번 2번은 별 큰 의미는 없다 그러나 시나리오3은 OMS에서 CPU사용량 이나 RAM 사용량등 다양한 쿼리를 혼합해서 자동으로 켜고 꺼는 기능을 설정할수 있으며 본인의 취향에 맞는 Runbook을 사용한다면 모든 인프라를 자동으로 컨트롤 할수 있게 된다.

참고 링크 https://docs.microsoft.com/en-us/azure/automation/automation-solution-vm-management