Consul 업그레이드

Consul 업그레이드 (Upgrade Consul)

Consul은 Consul 클러스터에 참여하는 노드에서 장기 실행 에이전트로 설계되었어요. 이 문서는 새 버전이 릴리즈될 때 Consul을 업그레이드하는 방법과 프로토콜 버전, 대규모 버전 점프, 하위 비호환 업그레이드에 대해 설명할게요.

출처: 문서

본문

Consul은 Consul 클러스터에 참여하는 모든 노드에서 장기 실행 에이전트로 설계되었습니다. 이 노드들은 지속적으로 서로 통신합니다. 이와 같이 Consul을 사용할 때 프로토콜 수준 호환성과 업그레이드 용이성은 중요하게 염두에 두어야 할 사항입니다.

이 페이지는 새 버전이 릴리즈될 때 Consul을 업그레이드하는 방법을 문서화합니다.

팁: Consul Enterprise의 경우 자동 업그레이드 문서를 참조하세요.

표준 업그레이드 (Standard Upgrades)

업그레이드의 경우 우리는 이전 버전과의 호환성을 보장하기 위해 노력합니다. 이를 지원하기 위해 노드는 가십(gossip) 프로토콜 버전과 빌드를 공유합니다. 이를 통해 클라이언트와 서버가 사용 가능할 때 새 기능을 지능적으로 활성화하거나, 그렇지 않으면 이전 버전과 호환되는 운영 모드로 정상적으로 폴백할 수 있습니다. 자세한 업그레이드 가이드는 일반 업그레이드 프로세스 (General Upgrade Process)를 방문하세요.

대부분의 업그레이드에서 프로세스는 간단합니다. 현재 Consul 버전이 A이고 버전 B가 릴리즈되었다고 가정합니다.

  1. 버전 업그레이드 노트를 확인해 워크로드에 영향을 줄 호환성 문제가 없는지 확인합니다. 있다면 계속하기 전에 그에 맞게 계획합니다.
  2. 각 Consul 서버 에이전트에서 버전 B의 Consul을 설치합니다.
  3. Consul 서버 에이전트를 한 번에 하나씩, 서비스 관리 시스템(예: systemd, upstart 등)을 사용해 버전 B로 Consul 서비스를 재시작합니다. 다음 서버 에이전트로 이동하기 전에 서버 에이전트가 정상이고 클러스터에 다시 조인할 때까지 기다립니다.
  4. 모든 서버 에이전트가 업그레이드되면 같은 프로세스로 클라이언트 에이전트의 롤아웃을 시작합니다. Envoy 프록시 업그레이드: 클라이언트 에이전트에 연결된 Envoy 프록시(예: 사이드카, 게이트웨이)가 있다면 버전 B 용의 호환 가능한 Envoy 버전을 설치합니다. 클라이언트 에이전트 버전 A를 중지한 후 연결된 Envoy 프록시를 중지합니다. 클라이언트 에이전트를 버전 B로 재시작한 후 연결된 Envoy 프록시를 호환 가능한 Envoy 버전으로 재시작합니다.
  5. 완료! 이제 최신 Consul 에이전트를 실행 중입니다. consul members를 실행해 모든 멤버가 최신 빌드와 가장 높은 프로토콜 버전을 가지고 있는지 확인해 이를 검증할 수 있습니다.

업그레이드 권장 사항 (Upgrade recommendation)

우리는 조직이 유지 관리되는 버전의 Consul을 사용하여 마이너 릴리즈의 버그·보안 수정의 혜택을 받을 것을 권장합니다.

Consul 커뮤니티 에디션 (Consul community edition)

Consul 커뮤니티 에디션 사용자의 경우, 유지 관리되는 버전을 지속적으로 운영하려면 4개월마다 최신 메이저 릴리즈로 업그레이드해야 합니다.

Consul Enterprise

Consul Enterprise의 표준 메이저 릴리즈는 약 1년간 유지 관리됩니다. Consul Enterprise Long Term Support (LTS) 릴리즈는 약 2년간 유지 관리됩니다.

Consul Enterprise 고객의 경우, LTS 릴리즈를 사용할 때 유지 관리되는 버전을 지속적으로 운영하려면 평균 12개월마다 메이저 업그레이드가 필요합니다. LTS 릴리즈는 최대 3개 메이저 버전의 업그레이드 점프를 지원합니다. 자세한 내용은 Long Term Support 업그레이드 권장 사항을 참조하세요.

IBM Consul Enterprise 라이선스로 업그레이드 (Upgrade to IBM Consul Enterprise license)

v1.21부터 Consul 라이선스는 HashiCorp에서 IBM으로 이동했습니다. IBM은 자체 관리 클러스터에 대해 Standard와 Premium 두 가지 유형의 Consul Enterprise 라이선스를 제공합니다. IBM 라이선스의 전체 범위와 지원되는 기능을 검토하려면 Consul Enterprise IBM 라이선스를 참조하세요.

이전 Consul 버전에서 HashiCorp Consul Enterprise 라이선스를 사용했고 이제 IBM Consul Enterprise 라이선스를 사용한다면 Consul 클러스터에 특정 업그레이드 프로세스를 따라야 합니다. 이 프로세스는 라이선스를 변경하기 전에 Consul 클러스터를 Consul Enterprise v1.21.7로 실행하도록 업데이트해야 합니다. 전체 업그레이드 프로세스는 버전별 업그레이드를 참조하세요.

Consul Enterprise 2.0.x까지 계속 업그레이드할 계획이라면 먼저 이 라이선스 마이그레이션을 완료한 다음 Consul을 v2.0.x로 업그레이드를 따르세요.

대규모 버전 점프 (Large Version Jumps)

Consul 배포가 최신 릴리즈보다 많은 메이저 버전이 뒤처져 있고 업그레이드가 필요하다면, 이러한 업그레이드를 수행하는 방법에 대한 자세한 내용은 업그레이드 지침을 검토하세요. 예를 들어 1.21.x (LTS)에서 2.0.x로 업그레이드하는 Consul Enterprise 클러스터는 Consul을 v2.0.x로 업그레이드를 따라야 합니다.

유지 관리되는 Consul 버전으로 업그레이드한 후에는 업그레이드 권장 사항을 참조해 향후 업그레이드 계획을 세우세요.

하위 비호환 업그레이드 (Backward Incompatible Upgrades)

어떤 경우에는 하위 호환되지 않는 업데이트가 릴리즈될 수 있습니다. 아직 문제가 된 적은 없지만 업그레이드를 지원하기 위해 명시적 프로토콜 버전 설정을 지원합니다. 이는 호환되지 않는 기능을 비활성화하고 2단계 업그레이드를 가능하게 합니다.

다음 단계에서 Consul 버전 A를 실행 중이고 버전 B가 나온다고 가정합니다.

  1. 각 노드에 버전 B의 Consul을 설치합니다.
  2. 한 서버씩, consul leave로 버전 A를 종료하고 -protocol=PREVIOUS 플래그로 버전 B를 시작합니다. 여기서 "PREVIOUS"는 버전 A의 프로토콜 버전입니다(consul -v 또는 consul members 실행으로 확인 가능). 서버가 정상이고 클러스터에 다시 조인할 때까지 기다린 후 다음 서버로 이동합니다.
  3. 모든 노드가 버전 B를 실행하면 모든 노드를 순회하며 -protocol 플래그 없이 버전 B 에이전트를 재시작합니다. 각 서버가 클러스터에 다시 조인할 때까지 기다렸다가 계속합니다.
  4. 완료! 이제 최신 프로토콜을 사용하는 최신 Consul 에이전트를 실행 중입니다. consul members를 실행해 모든 멤버가 동일한 최신 프로토콜 버전을 사용하는지 확인해 이것이 사실인지 검증할 수 있습니다.

이것을 가능하게 하는 핵심은 Consul의 프로토콜 호환성 (protocol compatibility)입니다. 프로토콜 버전 시스템은 아래에서 설명합니다.

프로토콜 버전 (Protocol Versions)

기본적으로 Consul 에이전트는 가능한 최신 프로토콜을 사용합니다. 그러나 각 새 Consul 버전은 프로토콜 변경이 있었다면 이전 프로토콜도 사용할 수 있습니다.

consul -v를 실행하면 Consul 버전이 이해하는 프로토콜 버전을 볼 수 있습니다. 다음과 유사한 출력이 표시됩니다:

$ consul -v
Consul v0.7.0
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)

이 출력은 Consul 버전과 이 에이전트가 구사하고 이해할 수 있는 프로토콜 버전을 알려줍니다.

때때로 Consul은 구형 에이전트와의 호환성을 용이하게 하기 위해 이해하는 것보다 낮은 프로토콜 버전을 기본으로 구사합니다. 예를 들어 버전 3을 이해하는 Consul 에이전트는 버전 2를 구사한다고 주장하고 버전 3 메시지를 이해하는 에이전트에게만 버전 3 메시지를 보냅니다. 이를 통해 에이전트가 업그레이드됨에 따라 기능이 자동으로 상향 이동할 수 있으며, 가능할 때마다 사용되는 전략입니다. 이것이 불가능하다면 위의 지침을 사용해 하위 비호환 업그레이드를 수행해야 하며, 그러한 요구 사항은 특정 릴리즈의 노트에 명확히 명시될 것입니다.

consul agent에 -protocol 플래그를 지정하면 Consul 에이전트에게 이해할 수 있는 아무 프로토콜 버전이나 구사하도록 지시할 수 있습니다. 이는 구사(speak) 할 프로토콜 버전만 지정합니다. 모든 Consul 에이전트는 항상 consul -v에 주장된 전체 프로토콜 버전 범위를 이해할 수 있습니다.

이전 프로토콜 버전을 실행하면 Consul의 일부 기능, 특히 새로운 기능을 사용하지 못할 수 있습니다. 이런 경우 Consul은 일반적으로 경고합니다. 일반적으로 항상 최신 프로토콜 버전을 실행하도록 클러스터를 업그레이드해야 합니다.

Kubernetes에서 업그레이드 (Upgrading on Kubernetes)

전용 Kubernetes에서 Consul 업그레이드 페이지를 참조하세요.

페더레이션 데이터센터 업그레이드 (Upgrading federated datacenters)

여러 데이터센터가 있는 페더레이션 환경을 업그레이드해야 한다면 여러 페더레이션 Consul 데이터센터 업그레이드 튜토리얼을 참조할 수 있습니다.

더 알아보기 (Learn more)