Consul 아키텍처

Consul 아키텍처

Consul이 시스템, 런타임, 클라우드 환경에서 어떻게 동작하는지 이해하기 위한 개요 문서예요. 컨트롤 플레인과 데이터 플레인, 데이터 저장, 네트워크 토모그래피, 보안 아키텍처까지 구성 요소별로 살펴볼 수 있어요.

출처: 문서

본문

이 페이지는 Consul의 운영 아키텍처에 대한 개요를 제공해요.

소개 (Introduction)

Consul은 매우 다양한 네트워크 토폴로지와 클라우드 제공자를 지원할 수 있어요. 배포하는 Consul 에이전트와 네트워크 구성 요소의 수는 달라질 수 있지만, Consul 운영의 기본 아키텍처는 시스템, 런타임, 클라우드 환경을 막론하고 동일하게 유지돼요.

Consul은 워크로드를 지원하기 위해 두 가지 영역에서 동작해요:

  • 컨트롤 플레인 (control plane) 은 서비스와 각각의 IP 주소를 추적하는 중앙 레지스트리를 유지하는 Consul 인프라의 일부예요. 네트워크 전체에 배포된 서비스를 등록하고, 접근하고, 보호할 수 있게 해줘요. 자세한 내용은 컨트롤 플레인 아키텍처를 참고하세요.
  • 데이터 플레인 (data plane) 은 워크로드가 클러스터의 다른 노드로 애플리케이션 데이터를 보내는 네트워크의 일부예요. Consul 프로세스는 데이터 플레인에서 직접 실행되지는 않지만, 서비스 메시 기능을 사용할 때 사이드카 프록시와 게이트웨이 같은 구성 요소를 데이터 플레인에 배포해 서비스 간 L4 및 L7 네트워크 트래픽을 관리할 수 있어요. 자세한 내용은 데이터 플레인 아키텍처를 참고하세요.

백엔드 데이터 지속성 (Backend data persistence)

컨트롤 플레인의 Consul 서버는 합의를 위한 Raft 프로토콜을 사용해 Consul 에이전트와 등록된 서비스의 상태를 기록으로 유지해요. 이 프로토콜은 클러스터 운영 중 재부팅을 거쳐도 지속되어야 하는 Raft 인덱스 형태의 데이터를 생성해요.

Consul은 Raft 인덱스를 write-ahead log(WAL) LogStore 백엔드로 기록해요. WAL 백엔드는 회전하는 append-only 로그 파일을 사용하는 전통적인 로그를 구현하며, 규모가 커져도 클러스터의 쓰기 성능에 영향을 주지 않고 로그를 유지해요.

Consul 에이전트는 이 데이터를 -data-dir 명령으로 지정한 폴더에 저장해요.

Raft 인덱스와 Consul의 백엔드 요구 사항에 대한 자세한 내용은 지속적 데이터 백엔드 아키텍처를 참고하세요.

네트워크 토모그래피 (Network tomography)

Consul은 네트워크 토모그래피 시스템을 사용해 클러스터의 노드에 대한 *네트워크 좌표(network coordinates)*를 계산해요. 이 좌표 덕분에 임의의 두 노드 사이의 네트워크 왕복 시간(RTT)을 추정할 수 있어요. Consul은 서비스를 반환할 때 RTT를 사용할 수 있는데, 예를 들어 요청을 보낸 노드에 가장 가까운 서비스 노드를 찾거나 다음으로 가까운 데이터센터의 서비스로 장애 조치할 수 있어요.

Consul은 네트워크 좌표와 RTT를 결정하기 위해 클러스터의 에이전트 간 가십 통신(gossip communication)도 제공하는 Serf 라이브러리를 사용해요.

자세한 내용은 네트워크 좌표를 참고하세요.

보안 아키텍처 (Security architecture)

Consul은 암호화 통신을 위한 여러 방법으로 보안을 유지해요. 이러한 방법은 컨트롤 플레인과 데이터 플레인 모두에서 Consul의 운영에 적용돼요. Consul이 아키텍처 구성 요소 전반에 걸쳐 통신을 어떻게 보호하는지에 대한 자세한 내용은 보안 아키텍처를 참고하세요.

더 알아보기 (Learn more)