카우치베이스 클러스터 생성을 위한 Docker 서비스 및 스웜 모드

Docker 1.12 도입 서비스. 다음을 사용하여 복제, 분산 및 로드 밸런싱된 서비스를 쉽게 만들 수 있습니다. 도커 서비스 생성 명령을 실행합니다. 애플리케이션의 "원하는 상태"(예: Couchbase 컨테이너 3개 실행)가 제공되며, 자가 복구 Docker 엔진은 클러스터에서 많은 컨테이너가 실행되도록 보장합니다. 컨테이너가 다운되면 다른 컨테이너가 시작됩니다.
노드가 다운되면 해당 노드의 컨테이너는 다른 노드에서 시작됩니다. 이 블로그에서는 Docker 서비스를 사용하여 Couchbase 클러스터를 설정하는 방법을 보여드립니다. 많은 도움을 주신 분들께 감사드립니다. 마코스닐또 다른 동료 도커 캡틴,
네트워킹 디버깅을 도와주세요!

카우치베이스 클러스터

카우치베이스 서버 클러스터는 일반적으로 상용 서버에 배포됩니다. 카우치베이스 서버는 모든 노드가 동등하고 필요에 따라 서로 통신하는 피어 투 피어 토폴로지를 가지고 있습니다. 마스터 노드, 슬레이브 노드, 구성 노드 등의 개념이 없습니다,
이름 노드, 헤드 노드 등 각 노드에 로드되는 모든 소프트웨어가 동일합니다. 따라서 노드의 '유형'을 고려하지 않고 노드를 추가하거나 제거할 수 있습니다. 이 모델은 일반적으로 클라우드 인프라에서 특히 잘 작동합니다.

일반적인 Couchbase 클러스터 생성 프로세스는 다음과 같습니다:
  • Couchbase 시작: Couchbase 서버 시작
  • 클러스터를 만듭니다: 서버를 선택하고 다른 모든 서버를 추가하여 클러스터를 만듭니다.
  • 클러스터 밸런스를 재조정합니다: 데이터가 클러스터 전체에 분산되도록 클러스터 재조정: 클러스터를 재조정합니다.
Docker 서비스 사용을 자동화하기 위해 클러스터 생성은 "마스터"와 "워커" 서비스로 나뉩니다.
docker-service-couchbase-cluster
마스터 서비스에는 복제본이 하나만 있습니다. 이는 클러스터 생성을 시작할 수 있는 단일 참조 지점을 제공합니다. 이 서비스는 포트 8091도 노출합니다. 이 서비스를 사용하면 카우치베이스 웹 콘솔 에
클러스터 외부에서 액세스할 수 있어야 합니다.
워커 서비스는 마스터 서비스와 정확히 동일한 이미지를 사용합니다. 이렇게 하면 클러스터를 균일하게 유지하여 클러스터를 쉽게 확장할 수 있습니다.
시작해보자!

우분투에서 스웜 모드 설정

  1. 아마존에서 우분투 인스턴스 실행하기. 이 블로그에서는 다음을 사용했습니다. mx4.large 크기를 설정합니다.
  2. Docker를 설치합니다:
  3. 도커 스웜 모드 는 선택적 기능이며 명시적으로 활성화해야 합니다. 스웜 모드를 초기화합니다:

Couchbase "마스터" 서비스 만들기

  1. 오버레이 네트워크를 만듭니다:

    이는 클러스터의 여러 Couchbase Docker 컨테이너가 서로 통신할 수 있도록 하기 위해 필요합니다.
  2. "마스터" 서비스를 만듭니다:

    이 이미지는 도커파일을 사용하여 생성됩니다. 여기. 이 도커파일은 구성 스크립트 에
    기본 카우치베이스 도커 이미지를 구성합니다. 먼저 Couchbase REST API 를 클릭하여 메모리 할당량, 설정 인덱스, 데이터 및
    쿼리 서비스, 보안 자격 증명, 샘플 데이터 버킷을 로드합니다. 그런 다음 적절한 카우치베이스 CLI 명령을 사용하여
    카우치베이스 노드를 클러스터에 추가하거나 노드를 추가하고 클러스터의 밸런스를 재조정합니다. 이는 세 가지 환경 변수를 기반으로 합니다:
    • 유형: 조인하는 파드가 워커인지 마스터인지 정의한다.
    • couchbase_master: 마스터 서비스 이름
    • AUTO_REBALANCE: 클러스터 재밸런싱 필요 여부를 정의합니다.
    이 첫 번째 구성 파일의 경우 TYPE 환경 변수가 MASTER로 설정되어 있으므로 Couchbase 이미지에서 추가 구성이 수행되지 않습니다.

    이 서비스는 또한 이전에 생성된 오버레이 네트워크인 카우치베이스. 포트 8091을 노출하여 카우치베이스 웹 콘솔 클러스터 외부에서 액세스할 수 있습니다. 이 서비스에는 컨테이너의 복제본이 하나만 포함되어 있습니다.

  3. Docker 서비스 상태를 확인합니다:

    서비스가 실행 중임을 보여줍니다. "원하는" 복제본 수와 "예상" 복제본 수는 1이므로 일치합니다.

  4. 서비스에서 작업을 확인합니다:

    컨테이너가 실행 중임을 나타냅니다.

  5. 공용 IP 주소를 사용하여 Couchbase 웹 콘솔에 액세스하면 다음과 같은 화면이 표시됩니다:
    docker-service-couchbase-login
    구성 파일에 사용된 이미지는 다음과 같이 구성됩니다. 관리자 사용자 이름과 비밀번호 비밀번호를 입력합니다. 콘솔을 보려면 자격 증명을 입력합니다:
    docker-service-couchbase-web-console
  6. 서버 노드를 클릭하여 클러스터에 포함된 Couchbase 노드 수를 확인합니다. 예상대로 하나의 노드만 표시됩니다:
    docker-service-couchbase-one-active-server

Couchbase "작업자" 서비스 만들기

  1. '작업자' 서비스를 만듭니다:

    이 RC는 또한 동일한 것을 사용하여 Couchbase의 단일 복제본을 생성합니다. 아룽업타/카우치베이스:스웜 이미지. 주요 차이점은 다음과 같습니다:

    • 유형 환경 변수가 WORKER. 이렇게 하면 클러스터에 추가할 워커 카우치베이스 노드가 추가됩니다.
    • couchbase_master 환경 변수에 마스터 서비스의 이름이 전달됩니다,  couchbase-master.couchbase 를 사용합니다. 이는 워커를 위해 Docker에 내장된 서비스 검색 메커니즘과
      마스터와 소통할 수 있습니다.
  2. 서비스 확인:
  3. Couchbase 웹 콘솔을 확인하면 업데이트된 출력이 표시됩니다:
    docker-service-couchbase-one-pending-server
    워커 서비스 생성 중 하나의 서버가 재밸런싱을 위해 보류 중임을 보여줍니다, AUTO_REBALANCE 환경 변수를 다음과 같이 설정할 수 있습니다. true 또는 false 에
    활성화 재조정. 이렇게 하면 노드가 클러스터에 추가될 뿐 클러스터 자체의 밸런스는 재조정되지 않습니다. 클러스터를 리밸런싱하려면 다음이 필요합니다.
    클러스터의 여러 노드에 데이터를 재분배합니다. 권장되는 방법은 여러 노드를 추가한 다음 웹 콘솔을 사용하여 클러스터를 수동으로 리밸런싱하는 것입니다.

Docker 서비스 확장으로 Couchbase 노드 추가하기

  1. 서비스 확장하기: 

  2. 서비스를 확인하세요:

    이렇게 하면 2개의 작업자 복제본이 실행 중임을 알 수 있습니다.
  3. Couchbase 웹 콘솔을 확인합니다:
    docker-service-couchbase-two-pending-servers
    예상대로 이제 클러스터에 두 개의 서버가 추가되어 재조정 대기 중입니다.
  4. 선택적으로 클러스터의 밸런스를 재조정하려면 재조정 버튼을 누르면 다음과 같이 표시됩니다:
    docker-service-couchbase-rebalancing
    리밸런싱이 완료되면 Couchbase 웹 콘솔이 그림과 같이 업데이트됩니다:
    docker-service-couchbase-rebalanced
  5. 다음을 사용하여 실행 중인 모든 컨테이너 보기 도커 PS:

클러스터를 생성하는 것 외에도 Couchbase Server는 다음과 같은 다양한 기능을 지원합니다. 고가용성 및 재해 복구 (HA/DR) 전략. 대부분의 HA/DR 전략
가용성을 극대화하고, 데이터센터 내부 및 전체에 걸쳐 중복성을 높이고, 정기적인 백업을 수행하는 등 다각적인 접근 방식에 의존합니다. 이제 Couchbase 클러스터가 준비되었으므로, 첫 번째 샘플 애플리케이션.
카우치베이스 및 컨테이너에 대해 자세히 알아보세요:

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Arun Gupta, 개발자 지원 부문 부사장, Couchbase

아룬 굽타는 Couchbase의 개발자 지원 담당 부사장입니다. 그는 Sun, Oracle, Red Hat에서 10년 이상 개발자 커뮤니티를 구축하고 이끌었습니다. 그는 콘텐츠, 마케팅 캠페인 및 프로그램의 전략, 계획 및 실행을 개발 및 실행하는 교차 기능 팀을 이끄는 데 있어 깊은 전문성을 보유하고 있습니다. 그 전에는 Sun에서 엔지니어링 팀을 이끌었으며 Java EE 팀의 창립 멤버입니다. Gupta는 기술에 관한 블로그 게시물을 2,000개 이상 작성했습니다. 40여 개국에서 수많은 주제에 대해 광범위한 강연 경험을 가지고 있으며, 3년 연속 JavaOne Rock Star로 선정되었습니다. 또한 미국에서 Devoxx4Kids 지부를 설립하여 어린이를 대상으로 한 기술 교육을 지속적으로 장려하고 있습니다. 기술에 관한 여러 권의 책을 저술했으며, 열렬한 마라토너이자 지구를 횡단하는 사람, Java 챔피언, JUG 리더, NetBeans 드림팀 멤버, Docker 캡틴이기도 한 그는 @arungupta에서 쉽게 만나볼 수 있습니다.

댓글 하나

  1. 안녕하세요,
    가이드와 카우치베이스에 감사드립니다 :)
    제 스웜에서 이 솔루션을 시도하고 있습니다. 내 목표는 영구 볼륨을 사용하지 않고 적어도 하나의 컨테이너가 데이터를 보존하고 있는지 확인하여 다른 인스턴스가 데이터를 복구 할 수 있도록하는 것입니다. 귀하의 솔루션을 사용하면 가능한 것처럼 보이지만 모든 노드의 구성을 어떻게 저장할 수 있습니까? 모든 노드에 INI 파일을 전달해야 하나요? 부팅 시 비밀번호나 기타 구성을 환경 변수별로 설정할 수 있나요?

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.