Kubernetes를 기반으로 하는 Red Hat OpenShift Enterprise의 Couchbase Server 클러스터의 개발자 프리뷰를 발표하게 되어 기쁩니다.

이 프로젝트는 카우치베이스와 긴밀하게 협업했습니다, Red Hat, 아마데우스 그리고 JetStack. 에 대한 공동 세션 아마데우스에서 Kubernetes StatefulSets를 사용하여 Red Hat OpenShift에 Couchbase 배포하기 에서 전달되었습니다. 레드햇 서밋 2017년 5월 3일

Couchbase Server가 컨테이너와 Kubernetes에 가장 적합한 이유는 무엇인가요?

컨테이너는 애플리케이션을 일련의 독립적이고 느슨하게 결합된 작은 소프트웨어 구성 요소로 구현하는 마이크로서비스 아키텍처에 대한 업계 트렌드를 반영합니다. 혁신적인 다차원 확장 아키텍처를 갖춘 Couchbase Server를 사용하면 데이터베이스 워크로드를 동일한 방식으로 처리할 수 있습니다. 다차원 확장(MDS)을 사용하면 데이터베이스 워크로드가 데이터, 인덱스, 쿼리, 검색 및 (향후) 분석 서비스와 같이 독립적이고 느슨하게 결합된 소프트웨어 구성 요소로 나뉩니다.

다음 다이어그램은 4개의 서비스가 실행 중인 Couchbase Server 클러스터를 보여줍니다:

  • 데이터 서비스 - 핵심 데이터 관리 작업을 처리합니다.
  • 인덱스 서비스 - 빠른 쿼리 실행을 위해 인덱스를 효율적으로 유지 관리합니다.
  • 쿼리 서비스 - N1QL 쿼리 구문 분석, 최적화 및 실행을 처리합니다. 이 서비스는 인덱싱 서비스 및 데이터 서비스와 상호 작용하여 쿼리를 처리하고 결과를 요청하는 애플리케이션에 다시 반환합니다.
  • 검색 서비스 - 문서에 대한 전체 텍스트 검색 색인을 생성하고 다양한 색인 방법, 텍스트 분석기, 언어를 사용하여 쿼리할 수 있는 기능을 제공합니다.

다차원 스케일링에는 세 가지 주요 이점이 있습니다:

  • 각 서비스는 데이터 세트의 증가, 인덱싱 요구 사항의 확장, 쿼리 처리 요구 사항의 증가 등 애플리케이션의 발전에 맞춰 독립적으로 확장할 수 있습니다.
  • 워크로드에 맞게 머신을 사용자 지정하도록 선택할 수 있습니다. 예를 들어 쿼리를 실행하는 노드에 더 많은 CPU를 추가할 수 있습니다.
  • 쿼리 서비스가 인덱스 또는 데이터 서비스를 방해하지 않도록 워크로드 격리를 제공합니다.

카우치베이스 서버는 OpenShift에서 어떻게 실행되나요?

컨테이너에서는 데이터베이스를 실행할 수 없다는 것이 일반적인 통념입니다. "컨테이너는 무상태 상태입니다!", "데이터베이스는 상태가 없으면 의미가 없습니다!"라고 말합니다. 더 이상 그렇지 않습니다. 컨테이너에서 데이터베이스 실행을 지원하는 적절한 기술이 필요했을 뿐입니다.

그런 다음 Kubernetes 1.5 여기에는 새로운 스테이트풀셋 API 오브젝트(이전 버전에서는 스테이트풀셋을 펫셋이라고 불렀음). 스테이트풀셋을 사용하면 쿠버네티스는 데이터베이스와 같은 스테이트풀 워크로드를 더 쉽게 실행할 수 있다. 이 개발자 프리뷰에서는 새로운 스테이트풀셋 API 오브젝트를 사용하여 카우치베이스 컨테이너를 구현한다.

오픈시프트의 카우치베이스 서버 스테이트풀셋

스테이트풀셋은 현재 베타 버전으로 쿠버네티스 1.7 & 기술 미리보기 기준 OpenShift 3.5. 스테이트풀셋은 다음을 위해 고유하고 안정적인 ID와 스토리지를 제공합니다. 포드를 통해 배포 순서와 확장을 보장합니다. 이는 배포 또는 복제 세트 여기서 파드 복제본은 재시작/재스케줄링 시 신원을 유지하지 않으며 동일한 볼륨 스토리지 속성을 가질 수 있습니다. 따라서 이러한 리소스는 상태 비저장 애플리케이션에 적합합니다.

동적 볼륨 프로비저닝

동적 볼륨 프로비저닝은 다음에서 처음 도입되었습니다. 쿠버네티스 1.4  기술 미리보기 Openshift 3.1.1그리고 이제 3.3에서 GA를 지원합니다. 이 기능을 사용하면 지원되는 클라우드 환경(예: AWS, GCP, OpenStack)에서 스토리지를 '온디맨드'로 동적으로 프로비저닝할 수 있습니다. 스테이트풀셋 컨트롤러는 포드당 스토리지 요청(퍼시스턴트볼륨클레임 - PVC)을 자동으로 생성하고, 스토리지가 프로비저닝됩니다(퍼시스턴트볼륨 - PV). PV와 PVC 간의 고유한 1대1 바인딩은 장애 발생 시 다른 노드에서 예약된 경우에도 파드가 항상 동일한 볼륨으로 재결합되도록 보장합니다.

카우치베이스 사이드카

스테이트풀셋과 동적 볼륨 프로비저닝의 일반적인 개념을 활용함으로써, OpenShift(또는 Kubernetes)는 올바른 파드가 스케줄링되고 실행되는지 확인합니다. 그러나 의사 결정 과정에서 Couchbase Server 고유의 요구 사항을 고려할 수는 없습니다. 예를 들어, 스케일업 시 새 노드를 등록하고, 재조정하고, 스케일다운 또는 노드 장애 시 데이터 마이그레이션을 처리하는 것이 그 예입니다. 파드 및 노드 이벤트는 OpenShift(또는 Kubernetes)에 잘 알려져 있지만, 필요한 작업은 데이터베이스별로 다릅니다.

이 개발자 프리뷰에서는 Couchbase Server 클러스터 수명 주기 작업이 사이드카 컨테이너 는 기본적으로 포드에서 표준 Couchbase Server 컨테이너와 나란히 배치되는 도우미 컨테이너입니다. 사이드카는 OpenShift(또는 Kubernetes) 및 Couchbase Server의 API를 사용하여 클러스터 상태를 확인하고, 스케일업/다운 및 노드 장애와 같은 Couchbase Server 클러스터 이벤트에 안전하고 적절하게 대응합니다.

예를 들어 사이드카는 다음 이벤트에 응답할 수 있습니다:

  • 스케일업: 사이드카는 노드가 클러스터에 새로 추가되었는지, 초기화되어 클러스터에 가입되었는지 여부를 확인한 다음 리밸런싱을 시작합니다.
  • 스케일다운: 사이드카가 사전 컨테이너 종료를 실행하고 클러스터에서 노드를 안전하게 제거하여 필요에 따라 리밸런싱합니다.
  • 준비 상태: 사이드카가 로컬 카우치베이스 서버 컨테이너에 연결하여 상태를 확인합니다. 준비 상태 확인 결과는 OpenShift에서 서비스 가용성을 결정하는 데 사용됩니다.

개발자 프리뷰에서는 어떤 기능을 사용할 수 있나요?

이번 개발자 미리 보기에서 제공되는 기능을 살펴보겠습니다.

  • RHEL용 카우치베이스 서버 4.6.2용 Docker 컨테이너.
  • 다음과 같은 Couchbase Server 클러스터 정의가 있습니다.
    • 포드당 하나의 카우치베이스 서버 컨테이너
    • 카우치베이스 서버 서비스 선택(데이터, 인덱스, 쿼리)
    • 각 카우치베이스 서버 포드 유형에는 독립적인 리소스 사양(CPU, 메모리)이 있습니다.
  • 카우치베이스 서버 서버 그룹은 파드의 장애 영역에 따라 자동으로 구성됩니다.
  • 스테이트풀셋의 파드 수가 감소하면 카우치베이스 서버 컨테이너가 클러스터에서 정상적으로 제거됩니다.
  • 문서

피드백 환영

언제나 그렇듯이 여러분의 의견을 듣고 싶습니다. 커뮤니티와 얼리어답터들의 피드백은 제품 방향에 큰 영향을 미칩니다. 다음 주소로 직접 이메일을 보내주세요. anil@couchbase.com.

참조:

작성자

게시자 Anil Kumar, 제품 관리 이사, Couchbase 클라우드 네이티브 데이터베이스

Anil Kumar는 Couchbase의 제품 관리 이사입니다. Anil은 19년 이상 엔터프라이즈 소프트웨어 및 클라우드 서비스를 비롯한 다양한 영역에서 소프트웨어 제품을 구축하는 데 경력을 쌓아왔습니다. 그는 고객, 파트너, 개발자, 분석가들과 함께 제품 전략과 비전을 전파하는 등 Couchbase Server, Couchbase Cloud, Kubernetes 제품군을 책임지는 실무형 제품 리더입니다. Couchbase에 입사하기 전에는 Microsoft 레드몬드에서 수년간 근무했습니다. Anil은 캐나다 토론토 대학교에서 컴퓨터 공학 석사 학위를, 인도 비스베바라야 공과대학교에서 정보 기술 학사 학위를 받았습니다.

댓글 남기기