이 문서에서는 게스트 에이전트 아키텍처에 대해 간략하게 설명합니다. 게스트 에이전트는 게스트 환경의 핵심 구성요소입니다. 게스트 환경에는 Compute Engine에서 인스턴스가 실행되는 데 필요한 스크립트, 데몬, 바이너리가 포함되어 있습니다. 자세한 내용은 게스트 환경을 참조하세요.
게스트 에이전트는 스냅샷 스크립트 실행, Windows 장애 조치, OS 로그인, 메타데이터 기반 SSH 인증 등의 기능에 필요한 서비스를 설정하고 최소 구성을 정의합니다. 게스트 에이전트의 핵심 기능에 대한 자세한 내용은 게스트 에이전트 기능을 참조하세요.
게스트 에이전트 아키텍처
버전 20250901.00부터 게스트 에이전트 아키텍처가 모놀리식 설계에서 현대적인 플러그인 기반 시스템으로 업데이트되었습니다. 이러한 구조적 개선을 통해 유연성, 신뢰성, 확장성이 향상되었습니다.
모놀리식 아키텍처:
20250901.00이전 버전의 게스트 에이전트는 메타데이터 서버가 제공하는 인스턴스 정보를 기반으로 작동하는 하나의 통합 프로세스가 특징입니다. 메타데이터 서버는 각 Compute Engine 인스턴스와 함께 실행되는 인스턴스별 HTTP 서버입니다. 메타데이터 서버에 대한 자세한 내용은 VM 메타데이터를 참조하세요.이 구조에서 게스트 에이전트는 메타데이터 서버에 대해 롱 폴링을 수행하며, 상태 변화가 감지되면 이에 따라 동작을 수행했습니다. 그러나 이러한 단일 구조에서는 SSH나 네트워크 설정과 같이 모든 태스크가 하나의 공통 상태를 공유합니다. 이러한 모놀리식 접근 방식은 인터페이스와 구성요소 간의 격리가 부족했습니다. 에이전트의 한 영역에서 변경사항 또는 새로운 기능이 추가되면 그 영향이 전체 시스템에 동시에 미칩니다. 이러한 패턴 때문에 기능을 추가하거나 테스트 범위를 확보하기가 어렵습니다.
플러그인 기반 아키텍처: 버전
20250901.00부터 게스트 에이전트는 중앙 관리자가 관리하는 서로 구분되고 독립적인 플러그인 단위로 구성됩니다. 각 플러그인은 메타데이터 서버와 상호작용할 수 있으며 중앙 관리자의 지시에 따라 필요한 변경 작업을 수행합니다. 이러한 모듈식 구조를 통해, 하나의 플러그인에서 장애가 발생하더라도 핵심 에이전트나 다른 플러그인에는 영향을 미치지 않습니다.
플러그인 기반 아키텍처
이 아키텍처는 여러 플러그인을 제어하는 중앙 관리자를 중심으로 구축되어 있으며, 핵심 기능과 서비스별 선택적 플러그인을 명확히 분리합니다.
주요 구성요소
다음 다이어그램은 게스트 에이전트의 주요 구성요소와 이들 간의 상호작용을 보여줍니다.
핵심 플러그인: 이 플러그인은 기존 게스트 에이전트의 기능을 캡슐화한 플러그인입니다. Google Cloud에서 인스턴스 실행에 필요한 필수 작업을 수행합니다. 여기에는 다음과 같은 작업이 포함됩니다.
- 네트워크 구성: 통신이 가능하도록 기본 네트워크 인터페이스를 설정합니다.
- SSH 액세스: 인스턴스에 보안 연결을 허용하도록 사용자 SSH 키를 관리합니다.
- 메타데이터 액세스: 인스턴스가 인스턴스 및 프로젝트 메타데이터에 액세스할 수 있는 경로를 제공합니다.
핵심 플러그인은 사용 중지할 수 없습니다.
게스트 에이전트의 핵심 기능에 대한 자세한 내용은 게스트 에이전트 기능을 참조하세요.
선택적 플러그인: 선택적 플러그인은 다른Google Cloud 서비스와 통합되어 다음과 같은 다양한 작업을 수행할 수 있도록 프로비저닝할 수 있습니다.
- 모니터링 및 로깅: 운영 에이전트 플러그인을 사용 설정하여 Cloud Monitoring의 측정항목 및 로그를 수집합니다.
- 워크로드 관리: 워크로드 관리자 플러그인을 사용 설정하여 워크로드의 구성 및 런타임 정보를 수집하고 분석합니다.
- 워크로드 최적화: SAP 에이전트 플러그인을 사용 설정하여 Google Cloud에서 SAP 워크로드 실행을 지원합니다.
선택적 플러그인은 필요에 따라 사용 설정하거나 사용 중지할 수 있습니다.
에이전트 컨트롤 플레인: 이 관리형 Google Cloud 서비스는 Google의 백엔드 인프라에서 실행됩니다. 이 컨트롤 플레인은 인스턴스 내 게스트 에이전트 관리자와 통신하며, 선택적 플러그인의 설치, 업데이트, 구성을 포함한 수명 주기를 관리합니다.
게스트 에이전트 관리자: 이 중앙 프로세스는 모든 플러그인의 시작, 중지, 상태 모니터링을 수행합니다. 게스트 에이전트 관리자는 핵심 플러그인과 에이전트 컨트롤 플레인 간의 통신을 중개합니다. 선택적 플러그인의 수명 주기 관리에는 다음과 같은 작업이 포함됩니다.
- 설치 및 업데이트: 게스트 에이전트 관리자는 에이전트 컨트롤 플레인의 안내에 따라 선택적 플러그인을 설치, 시작, 중지, 구성합니다.
- 상태 모니터링: 게스트 에이전트 관리자는 선택적 플러그인의 상태와 리소스(CPU, 메모리 사용량 등)를 모니터링하고, 이 정보를 에이전트 컨트롤 플레인에 다시 보고합니다.
- 정책 관리: Compute Engine API를 사용하여 선택적 플러그인의 설치 및 버전 관리를 제어하는 정책을 만듭니다.
이점
플러그인 기반 아키텍처는 모놀리식 설계에 비해 몇 가지 이점이 있습니다. 이점은 다음과 같습니다.
- 플러그인 격리: 각 플러그인은 별도의 프로세스에서 실행되므로, 하나의 플러그인이 비정상 종료되더라도 핵심 에이전트나 다른 플러그인에는 영향을 미치지 않습니다.
- 리소스 보호: 게스트 에이전트는 OS 수준의 기능을 활용하여 플러그인에 대한 리소스 제한을 강제합니다. 이를 통해 단일 플러그인이 과도한 CPU 또는 메모리를 소비하지 않도록 방지합니다.
- 자동 비정상 종료 복구: 시스템은 플러그인이 비정상 종료되면 자동으로 해당 플러그인을 중지하고 재시작하여 정상 상태로 복구합니다.
- 선택적 사용 설정: 필요하지 않은 선택적 플러그인을 사용 중지하여 인스턴스를 안전하게 보호하거나 성능을 최적화할 수 있습니다.
- 선택적 플러그인 오버헤드 감소: 게스트 에이전트 관리자가 선택적 플러그인의 설치 및 업데이트를 자동으로 처리하므로 사용자가 수동으로 관리해야 하는 유지보수 부담이 줄어듭니다.
게스트 에이전트 바이너리의 위치
다음 표에서는 아키텍처에 따라 Linux 및 Windows 인스턴스에서 사용되는 다양한 게스트 에이전트 바이너리의 파일 경로를 보여줍니다.
플러그인 기반 에이전트 바이너리
다음 표에서는 플러그인 기반 게스트 에이전트의 Linux 및 Windows 인스턴스별 바이너리 파일 경로를 보여줍니다.
| 구성요소 | Linux의 경로 | Windows의 경로 |
|---|---|---|
| 게스트 에이전트 관리자 | /usr/bin/google_guest_agent_manager |
C:\ProgramData\Google\Compute Engine\google-guest-agent |
| 핵심 플러그인 바이너리 | /usr/lib/google/guest_agent/core_plugin |
C:\Program Files\Google\Compute Engine\agent\CorePlugin.exe |
| 메타데이터 스크립트 실행기 | /usr/bin/gce_metadata_script_runner |
C:\Program Files\Google\Compute Engine\agent\GCEMetadataScriptRunner.exe |
모놀리식 에이전트 바이너리
다음 표에서는 모놀리식 게스트 에이전트 바이너리의 Linux 및 Windows 인스턴스별 파일 경로를 보여줍니다.
| 구성요소 | Linux의 경로 | Windows의 경로 |
|---|---|---|
| 게스트 에이전트 | /usr/bin/google_guest_agent |
C:\Program Files\Google\Compute Engine\google_guest_agent.exe |
| 메타데이터 스크립트 실행기 | /usr/bin/google_metadata_script_runner |
C:\Program Files\Google\Compute Engine\metadata_scripts\GCEMetadataScripts.exe |
| 승인된 키 | 해당 사항 없음 | C:\Program Files\Google\Compute Engine\agent\GCEAuthorizedKeys.exe |
하위 호환성
기존 모놀리식 게스트 에이전트에서 플러그인 기반 시스템으로 원활하게 전환할 수 있도록 게스트 에이전트 패키지에는 하위 호환성을 지원하도록 설계된 여러 구성요소가 포함되어 있습니다. 이러한 구성요소는 플러그인 기반 아키텍처의 일부가 아니며, 메타데이터 속성 enable-guest-agent-core-plugin을 false로 설정하여 모놀리식 에이전트로 되돌리도록 수동으로 선택한 경우에만 활성화됩니다.
이 호환성을 지원하는 구성요소는 다음과 같습니다.
- 게스트 에이전트 호환성 관리자: 이 패키지는 플러그인 기반 에이전트와 모놀리식 에이전트 간의 전환을 관리합니다.
- 메타데이터 스크립트 실행기 호환성 관리자: 이 패키지는 모놀리식 또는 플러그인 기반 에이전트 중 어떤 것이 활성 상태인지에 따라 올바른 스크립트 실행기가 사용되도록 보장합니다.
- 승인된 키 호환성 관리자(Windows만 해당): 이 패키지는 SSH 키를 관리하며, 구형 또는 신형 에이전트 중 활성 상태에 맞는 올바른 키가 사용되도록 보장합니다.
| 구성요소 | Linux의 경로 | Windows의 경로 |
|---|---|---|
| 게스트 에이전트 호환성 관리자 | /usr/bin/google_guest_compat_manager |
C:\Program Files\Google\Compute Engine\agent\GCEWindowsCompatManager.exe |
| 메타데이터 스크립트 실행기 호환성 관리자 | /usr/bin/metadata_script_runner_compat |
C:\Program Files\Google\Compute Engine\metadata_scripts\GCECompatMetadataScripts.exe |
| 승인된 키 호환성 관리자 | 해당 사항 없음 | C:\Program Files\Google\Compute Engine\agent\GCEWindowsAuthorizedKeysCompat.exe |
다음 단계
- 핵심 플러그인 기능에 대한 자세한 내용은 게스트 에이전트 기능을 참조하세요.