Consul-Terraform-Sync

Consul-Terraform-Sync (CTS) 아키텍처

이 페이지에서는 네트워크 인프라를 거의 실시간으로 관리하는 도구인 Consul-Terraform-Sync(CTS)에 대해 설명해요. CTS는 데몬으로 실행되며, Consul 서비스 네트워크를 Terraform 네트워크 인프라와 통합해줍니다.

출처: 문서

본문

이 페이지에서는 네트워크 인프라를 거의 실시간으로 관리하는 도구인 Consul-Terraform-Sync(CTS)에 대해 설명합니다.

CTS는 데몬으로 실행되며 Consul 서비스 네트워크와 Terraform 네트워크 인프라를 통합합니다. CTS는 트래픽 급증이나 물리적 데이터센터 장애 같은 네트워크 이벤트에 대응하여 서비스와 그 기반 인프라를 모두 자동으로 확장하거나 축소합니다.

개요 (Overview)

다음 다이어그램은 CTS가 Consul 서비스 카탈로그에서 업데이트를 감시하는 워크플로우를 보여줍니다.

  1. CTS는 Consul의 서비스 카탈로그와 KV 스토어의 상태를 감시합니다.
  2. CTS가 변경을 감지합니다.
  3. CTS는 Terraform이 인프라의 상태를 업데이트하도록 지시합니다.

Watcher와 views

CTS는 Consul의 blocking query 기능을 이용하여 Consul의 업데이트를 감시합니다. 엔드포인트가 blocking query를 지원하지 않으면 CTS는 대신 폴링(polling)을 사용해 변경을 감시합니다. CTS에서는 이러한 메커니즘을 watcher라고 부릅니다.

watcher는 감시하는 각 값에 대해 개별 스레드를 유지하며, 업데이트를 감지하면 감시된 값에 의존하는 모든 태스크를 실행합니다. 이러한 스레드를 views라고 합니다. 예를 들어, watcher가 인스턴스가 비정상(unhealthy)이 되었음을 감지하면 view가 프록시를 업데이트하는 태스크를 실행할 수 있습니다.

태스크 (Tasks)

태스크는 업데이트된 데이터에 의해 트리거되는 작업입니다. 예를 들어, 태스크는 watcher가 변경을 감지하는 즉시 Terraform으로 관리되는 방화벽 보안 정책 규칙을 자동으로 업데이트하여 Consul 서비스의 IP 주소를 포함시킬 수 있습니다.

드라이버 (Drivers)

드라이버는 업데이트를 네트워크 인프라에 전달하는 데 필요한 리소스를 캡슐화합니다. CTS는 두 가지 드라이버를 지원합니다.

  • Terraform 드라이버
  • HCP Terraform 드라이버Enterprise

각 드라이버는 다양한 인프라 애플리케이션을 지원할 수 있게 해주는 공급자(provider) 집합을 포함합니다.

상태 저장 및 영속화 (State storage and persistence)

CTS는 관련 Terraform 상태 데이터뿐 아니라 CTS 태스크 및 이벤트 데이터도 저장합니다.

Terraform 상태 정보 (Terraform state information)

기본적으로 CTS는 Terraform 상태 데이터를 Consul KV에 저장합니다. 이 정보가 저장될 위치는 Terraform 드라이버 설정에서 backend 설정을 구성하여 지정할 수 있습니다. 백엔드가 원격 위치로 구성되어 있으면 CTS가 중지되어도 데이터는 유지됩니다.

CTS 태스크 및 이벤트 데이터 (CTS task and event data)

기본적으로 CTS는 태스크와 이벤트 데이터를 메모리에 저장합니다. 이 데이터는 일시적이며 영속화되지 않습니다.

CTS를 고가용성(high availability)을 활성화한 상태로 실행하도록 구성하면 CTS는 데이터를 Consul KV에 저장합니다. 고가용성은 CTS의 복원력을 높여주는 Enterprise 기능입니다. 고가용성이 활성화되면 CTS는 인스턴스가 중지될 때 발생하는 태스크 변경과 이벤트를 저장하고 영속화합니다.

고가용성 모드에서 운영할 때 저장되는 데이터에는 태스크 API 또는 CLI로 만든 태스크 변경이 포함됩니다. 태스크 변경의 예로 새 태스크 생성, 태스크 삭제, 태스크 활성화 또는 비활성화가 있습니다. CTS를 -reset-storage 플래그로 시작하면 리더의 저장된 상태 정보를 비울 수 있습니다.

고가용성을 위한 인스턴스 호환성 검사 (Instance compatibility checks for high availability)

고가용성을 활성화한 상태로 CTS를 실행하면 CTS는 클러스터의 모든 인스턴스가 일관되게 동작하는지 확인하기 위해 인스턴스 호환성 검사를 수행합니다. 일관된 인스턴스 동작은 상태 저장소에 구성된 자동화를 CTS가 제대로 수행할 수 있게 해줍니다.

태스크의 모듈이 로컬 모듈로 구성되어 있지만 해당 모듈이 CTS 인스턴스에 존재하지 않으면 CTS 인스턴스 호환성 검사는 오류를 보고합니다. 모듈 소스에 대한 자세한 내용은 Terraform 문서를 참조하세요. 로그 예시:

[ERROR] ha.compat: error="compatibility check failure: stat ./example-module: no such file or directory"

자세한 내용은 CTS 오류 메시지를 참조하세요.

CTS 인스턴스는 시작 시 저장된 상태를 기준으로 호환성 검사를 수행하고, 시작 후 5분마다 검사를 수행합니다. 검사에서 호환되지 않는 CTS 인스턴스를 감지하면 운영자가 해결할 수 있도록 로그를 생성합니다.

CTS는 비호환성을 발견해도 오류 메시지를 기록하고 계속 실행됩니다. CTS는 비호환 인스턴스를 여전히 리더로 선출할 수 있지만, 비호환성의 영향을 받는 태스크는 성공적으로 실행되지 않습니다. 이는 모든 활성 CTS 인스턴스가 once-mode로 진입해 처음 선출될 때 태스크를 한 번 실행할 때 발생할 수 있습니다.

보안 지침 (Security guidelines)

Secure Consul-Terraform-Sync for Production 튜토리얼에 설명된 네트워크 보안 지침을 따르는 것이 좋습니다. 이 튜토리얼에는 프로덕션 환경을 위해 CTS 설치를 보호하는 모범 사례 체크리스트가 포함되어 있습니다.

더 알아보기 (Learn more)