강력한 시스템 설계

이 문서에서는 Compute Engine에서 강력한 시스템을 설계하기 위한 권장사항을 설명합니다. 여기에서는 일반적인 조언을 제공하며 인스턴스 다운타임을 줄이고 가상 머신(VM) 인스턴스에 예기치 않은 장애가 발생했을 때를 대비할 수 있는 Compute Engine의 일부 기능을 다룹니다.

강력한 시스템이란 서비스를 중단하거나 사용자의 서비스 사용 환경에 영향을 미치지 않으면서 장애 또는 중단을 어느 정도 견딜 수 있는 시스템입니다. Compute Engine에서는 모든 방법으로 그러한 중단을 방지하지만 예측할 수 없는 이벤트가 발생할 수 있으므로 이러한 이벤트에 대비하는 것이 좋습니다.

장애 유형 이해

시스템 또는 하드웨어 장애로 인해 하나 이상의 VM 인스턴스가 손실될 수 있습니다. 이러한 장애의 예는 다음과 같습니다.

  • 예기치 않은 단일 인스턴스 장애

    하드웨어 또는 시스템 장애로 인해 예기치 않은 단일 인스턴스 장애가 발생할 수 있습니다. 이러한 이벤트를 줄이려면 영구 디스크시작 스크립트를 사용하여 데이터를 저장하고 인스턴스를 다시 시작한 후에 소프트웨어를 다시 사용 설정합니다.

  • 예기치 않은 단일 인스턴스 재부팅

    특정 시점에 예기치 않은 단일 인스턴스 장애가 발생하고 재부팅됩니다. 예기치 않은 단일 인스턴스 장애와 달리 인스턴스에 장애가 발생하면 Google Compute Engine 서비스에서 자동으로 재부팅합니다. 이러한 이벤트를 줄이려면 데이터를 백업하고, 영구 디스크시작 스크립트를 사용하여 신속하게 소프트웨어를 다시 구성합니다.

  • 영역 또는 지역 장애

    영역 및 지역 장애는 드물지만 특정 영역이나 지역의 모든 인스턴스에 액세스하지 못하거나 장애가 발생할 수 있습니다.

    이러한 장애를 줄이려면 영역 및 지역에 다양성을 구축하고 부하 분산을 구현합니다. 또한 데이터를 백업하거나 여러 영역에 영구 디스크를 복제해야 합니다.

강력한 시스템 설계 팁

인스턴스 장애를 줄이려면 Google Compute Engine 서비스에서 장애, 네트워크 중단, 예기치 않은 재해에 강력한 애플리케이션을 설계해야 합니다. 강력한 시스템은 중단된 인스턴스에서 라이브 인스턴스로 트래픽을 리디렉션하거나 재부팅 시 작업을 자동화하는 등 장애를 적절하게 처리할 수 있어야 합니다.

다음은 장애에 대비하여 강력한 시스템을 설계하는 데 도움이 되는 몇 가지 일반적인 팁입니다.

실시간 이전 사용

Google에서는 최신 소프트웨어로 시스템을 패치하고, 정기적인 테스트 및 예방 유지관리를 수행하고, Google 인프라를 가능한 빠르고 효율적이며 안전하게 유지함으로써 인프라를 정기적으로 유지관리하고 있습니다. Compute Engine에서는 실시간 이전을 통해 이 인프라 유지관리가 기본적으로 가상 머신 인스턴스에 투명하게 적용되도록 보장합니다.

실시간 이전은 유지관리 작업을 수행하려는 시스템에서 실행 중인 인스턴스를 이동하도록 Google에서 구축한 기술입니다. 이 작업은 Compute Engine에서 자동으로 수행합니다.

실시간 이전 중 인스턴스의 성능이 잠시 저하될 수 있습니다. 또한 유지관리 이벤트가 종료된 후 재부팅하도록 가상 머신 인스턴스를 구성하는 옵션도 있습니다. 이 옵션은 일정하게 최대 성능을 유지해야 하는 인스턴스나, 인스턴스 장애 또는 재부팅을 처리하도록 전체 애플리케이션을 빌드한 경우에 적합합니다.

실시간 이전을 위해 가상 머신을 구성하거나 이전하는 대신 재부팅하도록 구성하려면 인스턴스 예약 옵션 설정을 참조하세요.

실시간 이전에 대한 자세한 내용은 실시간 이전 문서를 참조하세요.

인스턴스 분산

인스턴스 중 하나가 포함된 영역이나 지역이 중단된 경우 대체 가상 머신 인스턴스를 작동하도록 둘 이상의 영역 및 지역에 인스턴스를 만듭니다. 동일한 영역 또는 지역에서 모든 인스턴스를 호스팅하는 경우 해당 영역 또는 지역에 연결할 수 없으면 이러한 모든 인스턴스에 액세스할 수 없습니다.

영역별 내부 DNS 이름 사용

내부 DNS 이름 또는 인스턴스 이름을 사용하여 Compute Engine 내부 네트워크의 인스턴스 주소를 지정하는 경우 영역 DNS 이름을 사용합니다. 내부 DNS 서버는 모든 영역에 분산되어 있으므로 다른 위치에 장애가 발생해도 영역 DNS 이름을 사용하여 해결할 수 있습니다. 인스턴스의 내부 정규화된 도메인 이름(FQDN)에는 다음 형식이 사용됩니다.

  • 영역 DNS를 사용하는 인스턴스: [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal
  • 전역 DNS를 사용하는 인스턴스: [INSTANCE_NAME].c.[PROJECT_ID].internal

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 인스턴스의 이름입니다.
  • [ZONE]은 인스턴스가 있는 영역입니다.
  • [PROJECT_ID]는 인스턴스가 속한 프로젝트입니다.

인스턴스가 영역 DNS 이름을 사용하는지, 전역 DNS 이름을 사용하는지 확인하려면 인스턴스의 DNS 이름 보기를 참조하세요.

프로젝트가 전역 DNS 이름을 사용하는 경우 영역 DNS 이름과 검색 경로를 위한 애플리케이션을 준비할 수 있습니다. 자세한 내용은 영역 DNS 이름으로 이전을 참조하세요.

인스턴스 그룹 만들기

단일 VM이 비정상 상태가 된 경우 부하 분산기가 둘 이상의 VM 인스턴스로 트래픽을 전달할 수 있도록 관리형 인스턴스 그룹을 사용하여 동종 인스턴스 그룹을 만듭니다.

관리형 인스턴스 그룹에서는 자동 확장자동 복구와 같은 기능도 사용할 수 있습니다. 자동 확장 기능을 사용하면 특정 신호를 기반으로 VM 인스턴스의 수를 늘리거나 줄여 급상승하는 트래픽을 처리할 수 있는 반면, 자동 복구 기능은 상태 확인을 수행하고 필요한 경우 비정상적인 인스턴스를 자동으로 다시 만듭니다.

또한 관리형 인스턴스 그룹을 지역에 사용할 수 있으므로 단일 지역 내의 여러 영역에 분산된 VM 인스턴스 그룹을 만들 수 있습니다. 자세한 내용은 지역 관리형 인스턴스 그룹을 사용하여 인스턴스 배포를 참조하세요.

부하 분산 사용

Google Cloud Platform에서는 과도한 트래픽이 발생하는 동안 인스턴스에 과부하가 발생하지 않도록 부하 분산 서비스를 사용할 수 있습니다. 부하 분산 서비스를 사용하면 다음을 수행할 수 있습니다.

  • 지역 관리형 인스턴스 그룹을 사용하여 여러 영역 내의 인스턴스에 애플리케이션을 배포합니다. 그런 다음 지역 내의 모든 영역에 있는 모든 가상 머신 인스턴스에 트래픽을 분산시킬 수 있는 전달 규칙을 구성할 수 있습니다. 각 전달 규칙은 외부 IP 주소를 사용하여 애플리케이션에 대한 하나의 진입점을 정의할 수 있습니다.

  • 글로벌 부하 분산을 사용하여 여러 지역에 인스턴스를 배포합니다. HTTP(S) 부하 분산을 통해 트래픽은 클라이언트와 가장 가까운 곳의 Google Cloud Platform 시스템에 유입될 수 있습니다. 교차 지역 부하 분산에는 중복 기능이 있어 지역에 연결할 수 없는 경우 트래픽이 자동으로 다른 지역으로 전환되므로 동일한 외부 IP 주소를 사용하여 서비스에 계속 연결할 수 있습니다.

  • 자동 확장을 사용하여 부하의 증가 또는 감소에 따라 관리형 인스턴스 그룹에서 인스턴스를 자동으로 추가하거나 삭제합니다.

또한 부하 분산 서비스에서는 VM 상태 확인 기능을 사용하여 인스턴스 장애를 감지하고 처리할 수 있습니다.

자세한 내용은 부하 분산 개요부하 분산 문서를 참조하세요.

시작 및 종료 스크립트 사용

Compute Engine에는 인스턴스가 부팅되거나 종료될 때 각각 실행되는 시작 및 종료 스크립트가 제공됩니다. 이러한 스크립트를 사용하면 인스턴스를 처음 시작하거나, 의도적으로 또는 예기치 않게 인스턴스가 종료된 경우 소프트웨어 설치, 업데이트 실행, 백업 작성, 데이터 로깅 등의 작업을 자동화할 수 있습니다.

시작 스크립트와 종료 스크립트는 인스턴스를 부트스트랩하거나 완전히 종료하는 효율적이고 매우 유용한 방법입니다. 커스텀 OS 이미지를 사용하여 인스턴스를 구성하는 대신 시작 스크립트를 사용하여 인스턴스를 구성하는 것이 좋습니다. 시작 스크립트는 장애로 인해 인스턴스가 재부팅되거나 재시작될 때마다 실행되며 소프트웨어 및 업데이트를 설치하고 VM 내에서 서비스가 실행 중인지 확인하는 데에도 사용할 수 있습니다. 시작 스크립트에서 인스턴스를 구성하기 위해 변경사항을 코딩하는 작업이 커스텀 이미지에서 변경된 파일이나 바이트를 파악하는 작업보다 쉽습니다.

종료 스크립트를 사용하면 인스턴스를 중지하기 전에 데이터 백업, 로그 저장, 연결 종료와 같은 마지막 작업을 수행할 수 있습니다.

자세한 내용은 시작 스크립트 실행종료 스크립트 실행을 참조하세요.

데이터 백업

데이터를 정기적으로 여러 위치에 백업하세요. 파일을 Google Cloud Storage에 백업하거나, 영구 디스크 스냅샷을 만들거나, 다른 지역 또는 영역의 영구 디스크에 데이터를 복제할 수 있습니다.

인스턴스에서 Google Cloud Storage로 파일을 복사하려면 다음 단계를 따릅니다.

  1. 인스턴스에 로그인합니다.

    gcloud compute ssh example-instance
    
  2. 이 인스턴스에서 gsutil 도구를 사용한 적이 없는 경우 사용자 인증 정보를 설정합니다.

    gcloud init
    

    또는 Google Cloud Storage 범위가 있는 서비스 계정을 사용하도록 인스턴스를 설정한 경우 이 단계와 다음 단계를 건너뛸 수 있습니다.

  3. 안내에 따라 Google Cloud Storage에 인증합니다.

  4. 다음 명령어를 사용하여 데이터를 Google Cloud Storage에 복사합니다.

    gsutil cp <file1> <file2> <file3> ...  gs://<your bucket>
    

gcloud compute 도구를 사용하여 파일을 로컬 컴퓨터에 복사할 수도 있습니다. 자세한 내용은 인스턴스 간 파일 복사를 참조하세요.

다음 과정

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서