Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

멀티 노드 Couchbase® Server 클러스터를 업그레이드하는 방법은 여러 가지가 있습니다. 이 글에서는 그레이스풀 페일오버(graceful failover)와 델타 복구(delta recovery) 방식을 활용한 롤링 온라인 업그레이드 절차를 단계별로 자세히 설명합니다.

소개

이 방식은 업그레이드를 위해 클러스터에 추가 노드를 확보할 필요가 없어 온라인 업그레이드에 가장 선호되는 방법 중 하나입니다. 전체 리밸런스(full rebalance) 대신 델타 변경 사항만으로 노드를 복구하기 때문에 속도가 빠르고 리소스 소모도 적습니다. 또한 이 과정에서 글로벌 세컨더리 인덱스(GSI)가 그대로 유지되므로 인덱스를 다시 빌드할 필요가 없습니다. 다만 업그레이드가 진행되는 동안 고가용성(HA)이 일시적으로 저하된다는 점이 유일한 단점입니다.

사전 준비 사항

업그레이드는 트래픽이 적은 오프피크 시간대에 진행하는 것이 좋습니다. 그레이스풀 페일오버를 사용하려면 몇 가지 요구 사항과 고려할 점이 있으므로, 아래 절차를 진행하기 전에 관련 설정 문서를 먼저 검토하기 바랍니다.

환경 정보

이 글의 예제 환경은 다음과 같습니다.

  • 두 노드로 구성된 클러스터 Prashant 2-Node London Cluster
  • Couchbase Enterprise Edition 5.1.0(빌드 5552)에서 Couchbase Enterprise Edition 5.5.0(빌드 2473, IPv4)으로 업그레이드
  • 대부분의 작업은 Couchbase 관리 웹 콘솔(Web Console)을 사용

업그레이드 절차

1단계: 두 노드 모두에 Couchbase 5.5 다운로드

클러스터의 첫 번째 노드에 Couchbase 5.5 바이너리 실행 파일을 다운로드합니다.

다음 이미지는 WGET 유틸리티를 사용해 서버에서 필요한 RPM 패키지 파일을 내려받는 모습입니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

다운로드가 완료되면 현재 위치에 5.5 버전 바이너리가 있는 것을 확인할 수 있습니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

나머지 노드에도 동일한 방법으로 다운로드를 반복합니다.

2단계: 클러스터 node-1 로그인

Couchbase 웹 콘솔에서 Administrator 계정으로 클러스터 node-1에 로그인합니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

3단계: 서버 목록 확인

Servers 탭을 클릭하면 클러스터에 포함된 서버 목록을 볼 수 있습니다. 아래 이미지처럼 이 클러스터에는 두 개의 서버 노드가 있습니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

4단계: 서버 상세 정보 검토

각 서버를 클릭하면 현재 버전을 포함한 상세 정보를 확인할 수 있습니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

node-1에서 로그인했기 때문에, 업그레이드 과정에서 Couchbase가 종료되어도 웹 콘솔 세션이 유지되도록 먼저 다른 노드인 node-2부터 업그레이드해야 합니다.

5단계: node-2 그레이스풀 페일오버 수행

node-2 섹션을 펼치고 Failover를 클릭합니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

Graceful Failover를 선택한 뒤 Failover Server를 클릭합니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

그레이스풀 페일오버에 걸리는 시간은 생존 노드로 활성화하거나 동기화해야 하는 vBucket 수에 비례합니다. 만약 Hard Failover(강제 페일오버)를 선택하면 vBucket이 동기화되지 않아, 소프트웨어 업그레이드 후 Delta Recovery 대신 Full Recovery를 사용해야 합니다.

다음 이미지는 페일오버 진행 상황을 보여줍니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

다음 이미지는 페일오버 완료 후의 Couchbase 웹 콘솔 화면입니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

6단계: node-2에서 Couchbase 종료

node-2에서 Couchbase Server를 종료합니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

종료 후 웹 콘솔에서 해당 노드의 상태가 Node unresponsive(노드 응답 없음)로 변경됩니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

7단계: 업그레이드 수행

1단계에서 다운로드한 바이너리를 적용하여 기존 5.1.0 설치 버전을 5.5.0으로 업그레이드합니다. 새로 설치하는 것이 아니므로 RPM 명령에 --upgrade 옵션을 사용해야 합니다. 만약 5.1.0을 제거한 후 5.5.0을 새로 설치(--upgrade 옵션 미사용)하면, 업그레이드 후 Delta Recovery 대신 Full Recovery를 사용해야 합니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

업그레이드는 몇 분 안에 끝나며, 완료되면 Couchbase Server 프로세스가 자동으로 시작됩니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

이제 웹 콘솔에 업그레이드된 버전이 표시되고, Full Recovery 또는 Delta Recovery 중 하나를 선택해 노드를 다시 추가할 수 있는 옵션이 나타납니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

8단계: 델타 복구(Delta Recovery) 선택

Add Back: Delta Recovery를 클릭합니다.

상태가 DELTA RECOVERY pending rebalance로 변경됩니다. 이 단계는 실제로 복구를 시작하는 것이 아니라, 어떤 복구 모드를 사용할지 Couchbase에 지정하는 단계입니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

9단계: 복구 시작

Rebalance를 클릭하여 업그레이드된 노드를 클러스터와 동기화합니다. 전체 복구가 아닌 델타 복구이므로 비교적 빠르게 완료됩니다.

다음 이미지는 복구(리밸런스) 진행 상황입니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

리밸런스가 완료되면 해당 노드가 웹 콘솔에서 초록색으로 표시되며 클러스터와 다시 동기화됩니다. 버전이 5.5로 업그레이드된 것도 확인할 수 있습니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

아래 이미지에서 클러스터의 한 노드는 5.1.0, 다른 노드는 5.5.0 버전으로 운영 중임을 알 수 있습니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

10단계: node-1 업그레이드

node-2 업그레이드가 성공적으로 끝났으니 이제 node-1을 업그레이드할 차례입니다. 먼저 node-2의 Couchbase 웹 콘솔에 Administrator 계정으로 로그인한 뒤, node-1에 대해 5~9단계를 동일하게 반복합니다.

다음 이미지는 node-1의 업그레이드와 복구가 모두 완료된 후의 웹 콘솔 화면입니다.

그레이스풀 페일오버와 델타 복구로 Couchbase Server 무중단 롤링 업그레이드하기

왼쪽 메뉴에 새롭게 추가된 두 가지 옵션(5.5.0의 신규 기능)도 확인할 수 있습니다.

  • Analytics: N1QL for Analytics를 활용해 익숙한 SQL 쿼리를 실행할 수 있습니다.
  • Eventing: Event-Condition-Action 모델로 트리거되는 서버 측 함수를 생성할 수 있습니다.

결론

그레이스풀 페일오버와 델타 복구 방식은 Couchbase 롤링 업그레이드에서 매우 훌륭한 선택지입니다. 여러 노드에 걸친 대규모 데이터베이스 클러스터에서는 업그레이드된 각 노드를 전체 복구하는 작업이 부담스러울 수 있습니다. 그레이스풀 페일오버를 사용하면 업그레이드 중 발생한 변경 사항만 동기화하여 노드를 다시 추가할 수 있어 소요 시간이 크게 단축됩니다.

또한 글로벌 세컨더리 인덱스(GSI)가 많은 대화형 데이터베이스 애플리케이션에도 유리한 방식입니다. GSI가 그대로 보존되어 재빌드가 필요 없으므로 리소스를 절약하고 업그레이드 시간을 줄일 수 있습니다.

이 방식의 효과를 극대화하려면 업그레이드를 오프피크 시간대에 진행해야 합니다. 이렇게 하면 이 방식의 유일한 단점인 일시적인 고가용성 저하를 보완할 수 있고, 오프피크 동안에는 델타 변경량이 훨씬 적어 업그레이드 속도도 더 빨라집니다.

Feedback 탭을 통해 의견을 남기거나 질문할 수 있습니다. 데이터베이스 서비스에 대해 더 자세히 알아보세요.