콘텐츠로 이동하기
컴퓨팅

VM 패치 전 디스크 클론 만들기

2021년 5월 3일
https://storage.googleapis.com/gweb-cloudblog-publish/images/VM_Manager.max-2600x2600.jpg
Christoph Petersen

Solution Lead, EMEA

Google Cloud 사용해 보기

$300의 무료 크레딧과 20개 이상의 항상 무료인 제품으로 Google Cloud 사용을 시작해보세요.

무료 체험

* 본 아티클의 원문은 2021년 3월 20일 Google Cloud 블로그(영문)에 게재되었습니다.   

올해 초, Google Cloud에서 실행되는 가상 머신을 대규모로 관리할 수 있는 도구 모음인 VM Manager를 소개해 드렸습니다.

VM Manager에서 제공하는 서비스 중 OS 패치 관리 서비스를 사용하면 주문형 및 예약 방식으로 패치를 가상 머신에 적용할 수 있습니다. Linux 및 Windows 운영체제가 모두 지원되며 이 서비스에서는 운영체제별 업데이트 인프라(예:apt,ZYpp,yum, Windows 업데이트 에이전트)를 사용해 누락된 패치를 식별하고 적용합니다. 

이 서비스를 사용할 계획이 있거나 이미 사용 중인 고객들이 패치 과정에서 문제가 발생하거나 패치 자체에 문제가 있을 때를 대비해 롤백할 수 있도록 패치 적용 전에 가상 머신 상태의 백업을 만드는 방법을 자주 문의해 왔습니다. 아쉽게도 이러한 기능은 VM Manager에서 직접적으로 지원되지는 않습니다. 

하지만 이 서비스에서 지원하는 기능 중에는 패치 대상인 각 VM에 사전 패치 및 사후 패치 스크립트를 실행할 수 있는 기능이 있습니다. 사전 패치 또는 사후 패치를 실행하는 스크립트는 인스턴스에, 그리고 이와 연결된 서비스 계정(Compute Engine 기본 서비스 계정 또는 생성할 때 사용한 서비스 계정)의 맥락에서 실행됩니다.

이 블로그에서는 사전 패치 스크립트를 활용해 패치를 적용하기 전에 VM의 연결된 영구 디스크에서 일관성 있게 비정상 종료되는 디스크 클론을 만드는 방법을 설명합니다.

고려사항

이 블로그 게시물에서는 일반적인 고객 문제에 대한 해결책을 다룹니다. 이상적인 해결법은 VM과 관련 서비스 계정의 맥락에서 스냅샷 생성을 실행하는 대신 서비스에 직접 통합하는 것입니다. 서비스 계정에 필요한 권한을 할당하면 해당 권한이 VM에 로그인할 수 있는 사용자에게 부여됩니다.

VM 패치가 디스크 클론에 종속되도록 만들면(이 게시물의 샘플 스크립트가 이러한 방식으로 구성됨) 클론 생성에 실패할 경우 VM에 패치가 적용되지 않습니다.

기본 요건

VM Manager와 OS 패치 관리의 설정은 이 게시물에서 다루지 않습니다. VM Manager 설정의 안내를 따라 프로젝트에 VM Manager를 사용 설정하세요.

권한

디스크 클론을 만들려면 최소한 다음 권한을 VM과 연결된 서비스 계정에 할당해야 합니다.

프로젝트에 대한 compute.disks.create #
소스 디스크에 대한 compute.disks.createSnapshot #

범위

클론을 만드는 이 스크립트는 패치가 적용되는 VM에서 실행됩니다. 즉, VM과 연결된 서비스 계정에 적절한 권한을 설정해야 함은 물론 API 범위도 설정해야 합니다.

범위를 모든 Cloud API에 전체 액세스 허용으로 설정하세요.
https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Allow_full_access.max-300x300.jpg

스크립트 업로드

섹션 끝부분에 Linux 및 Windows 운영체제용 샘플 스크립트를 포함해 두었습니다. 이 스크립트는 Debian 10, Ubuntu 20.04, 최신Container-Optimize OS, Windows Server 2019에서 테스트를 거쳤습니다. 다른 버전을 사용한다면 스크립트를 테스트해 보는 것이 좋습니다.

두 버전의 샘플 스크립트 모두 동일한 로직을 따릅니다.

  1. 패치 작업의 ID 가져오기(검색 가능성을 높이기 위해 스냅샷의 태그를 지정하는 데 사용됨)

  2. VM과 연결된 디스크 가져오기

  3. 디스크 클론 만들기

적절한 버전의 업데이트 스크립트를 다운로드한 후 스토리지 버킷에 업로드해야 합니다(방법은 이 가이드 참조).

# GCS 버킷에 스크립트 복사
gsutil cp clone-linux.sh gs://<BUCKET>/clone-linux.sh

이제 업로드한 파일의 버전을 가져와야 합니다. 패치 서비스에서 실행할 버전을 올바르게 선택할 수 있도록 버전을 전달해야 합니다.

# 파일 버전 가져오기
gsutil ls -a gs://<BUCKET>/clone-linux.sh | cut -d'#' -f 2

Linux

GitHub에서 최신 버전을 찾습니다.

Windows

GitHub에서 최신 버전을 찾습니다.

사전 패치 스크립트 실행이 포함된 패치 작업 만들기

스크립트를 업로드했다면 이제 패치 작업을 만들면 됩니다. 주문형 또는 예약 방식으로 만들 수 있습니다. 다른 VM 인스턴스 하위 집합을 타겟팅하도록 구성할 수도 있습니다. 인스턴스 필터에 대한 자세한 내용은 이 문서를 참조하세요.

다음 샘플에서는 모든 인스턴스를 타겟팅하는 주문형 패치 작업을 만듭니다. 올바른 GCS 버킷 값과 스크립트의 파일 버전을 제공해야 합니다.

Linux

로드 중...

Windows

로드 중...

스냅샷 생성 확인

패치 결과/Cloud Logging

Compute Engine으로 이동한 후 OS 패치 관리로 이동합니다.

패치 작업을 선택합니다.
https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Patch_Jobs.max-1000x1000.jpg

작업을 선택하고 상태를 검토합니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_review_the_status.max-1500x1500.jpg

자세한 내용을 확인하려면 패치 작업 실행 세부정보 오버레이로 스크롤하여 이 작업에서 타겟팅한 VM의 를 선택합니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_View.max-900x900.jpg

그러면 Cloud Logging이 열리며 스크립트 실행의 자세한 로그가 표시됩니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/5_Cloud_Logging.max-1300x1300.jpg

클론

Compute Engine으로 이동한 후 디스크로 이동합니다.
https://storage.googleapis.com/gweb-cloudblog-publish/images/6_Compute_Engine_then_Disks.max-600x600.jpg

사용 가능한 디스크를 검토합니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/7_Review_the_available_disks.max-600x600.jpg

디스크 클론의 이름은 패치 작업의 ID가 추가된 원본 디스크 이름입니다. 또한 검색하기 쉽도록 몇 가지 라벨이 설정되어 있습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/8_OS_patch_management.max-600x600.jpg

디스크 클론의 이름은 패치 작업의 ID가 추가된 원본 디스크 이름입니다. 또한 검색하기 쉽도록 몇 가지 라벨이 설정되어 있습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/9_disk_clone.max-600x600.jpg

결론

사전 패치 및 사후 패치 스크립트를 사용해 일반적인 기업 요구사항을 자동화하는 방법을 다룬 오늘 블로그 게시물이 도움이 되었기를 바랍니다. 제한사항과 고려사항도 있지만 이 절차를 사용하면 대규모 패치에 앞서 워크로드를 보호할 수 있습니다.

VM Manager에 대해 자세히 알아보려면 Google Cloud의 문서를 참조하거나 Google Cloud Next ‘20: OnAir 세션 중 대규모 Compute Engine VM 관리를 시청하세요.

게시 위치