Docker 1.12 도입 서비스. 다음을 사용하여 복제, 분산 및 로드 밸런싱된 서비스를 쉽게 만들 수 있습니다. 도커 서비스 생성
명령을 실행합니다. 애플리케이션의 "원하는 상태"(예: Couchbase 컨테이너 3개 실행)가 제공되며, 자가 복구 Docker 엔진은 클러스터에서 많은 컨테이너가 실행되도록 보장합니다. 컨테이너가 다운되면 다른 컨테이너가 시작됩니다.
노드가 다운되면 해당 노드의 컨테이너는 다른 노드에서 시작됩니다. 이 블로그에서는 Docker 서비스를 사용하여 Couchbase 클러스터를 설정하는 방법을 보여드립니다. 많은 도움을 주신 분들께 감사드립니다. 마코스닐또 다른 동료 도커 캡틴,
네트워킹 디버깅을 도와주세요!
카우치베이스 클러스터
카우치베이스 서버 클러스터는 일반적으로 상용 서버에 배포됩니다. 카우치베이스 서버는 모든 노드가 동등하고 필요에 따라 서로 통신하는 피어 투 피어 토폴로지를 가지고 있습니다. 마스터 노드, 슬레이브 노드, 구성 노드 등의 개념이 없습니다,
이름 노드, 헤드 노드 등 각 노드에 로드되는 모든 소프트웨어가 동일합니다. 따라서 노드의 '유형'을 고려하지 않고 노드를 추가하거나 제거할 수 있습니다. 이 모델은 일반적으로 클라우드 인프라에서 특히 잘 작동합니다.
- Couchbase 시작: Couchbase 서버 시작
- 클러스터를 만듭니다: 서버를 선택하고 다른 모든 서버를 추가하여 클러스터를 만듭니다.
- 클러스터 밸런스를 재조정합니다: 데이터가 클러스터 전체에 분산되도록 클러스터 재조정: 클러스터를 재조정합니다.
클러스터 외부에서 액세스할 수 있어야 합니다.
우분투에서 스웜 모드 설정
- 아마존에서 우분투 인스턴스 실행하기. 이 블로그에서는 다음을 사용했습니다.
mx4.large
크기를 설정합니다. - Docker를 설치합니다:
1curl -sSL https://get.docker.com/ | sh - 도커 스웜 모드 는 선택적 기능이며 명시적으로 활성화해야 합니다. 스웜 모드를 초기화합니다:
1도커 swarm init
Couchbase "마스터" 서비스 만들기
- 오버레이 네트워크를 만듭니다:
1도커 네트워크 create -d 오버레이 카우치베이스
이는 클러스터의 여러 Couchbase Docker 컨테이너가 서로 통신할 수 있도록 하기 위해 필요합니다. - "마스터" 서비스를 만듭니다:
1도커 서비스 create --이름 카우치베이스-마스터 -p 8091:8091 --복제본 1 --네트워크 카우치베이스 -e 유형=마스터 arungupta/카우치베이스:swarm이 이미지는 도커파일을 사용하여 생성됩니다. 여기. 이 도커파일은 구성 스크립트 에
기본 카우치베이스 도커 이미지를 구성합니다. 먼저 Couchbase REST API 를 클릭하여 메모리 할당량, 설정 인덱스, 데이터 및
쿼리 서비스, 보안 자격 증명, 샘플 데이터 버킷을 로드합니다. 그런 다음 적절한 카우치베이스 CLI 명령을 사용하여
카우치베이스 노드를 클러스터에 추가하거나 노드를 추가하고 클러스터의 밸런스를 재조정합니다. 이는 세 가지 환경 변수를 기반으로 합니다:유형
: 조인하는 파드가 워커인지 마스터인지 정의한다.couchbase_master
: 마스터 서비스 이름AUTO_REBALANCE
: 클러스터 재밸런싱 필요 여부를 정의합니다.
이 첫 번째 구성 파일의 경우 TYPE 환경 변수가 MASTER로 설정되어 있으므로 Couchbase 이미지에서 추가 구성이 수행되지 않습니다.이 서비스는 또한 이전에 생성된 오버레이 네트워크인
카우치베이스
. 포트 8091을 노출하여 카우치베이스 웹 콘솔 클러스터 외부에서 액세스할 수 있습니다. 이 서비스에는 컨테이너의 복제본이 하나만 포함되어 있습니다. - Docker 서비스 상태를 확인합니다:
123우분투@IP-172-31-26-234:~$ 도커 서비스 lsID 이름 복제 이미지 COMMANDCECL1RL5ECYR 카우치베이스-마스터 1/1 arungupta/카우치베이스:swarm
서비스가 실행 중임을 보여줍니다. "원하는" 복제본 수와 "예상" 복제본 수는 1이므로 일치합니다.
- 서비스에서 작업을 확인합니다:
123우분투@IP-172-31-26-234:~$ 도커 서비스 ps 카우치베이스-마스터ID 이름 이미지 NODE DESIRED 상태 현재 상태 오류2xuw1h0jvantsgj9f8zuj03k8 카우치베이스-마스터.1 arungupta/카우치베이스:swarm IP-172-31-26-234 실행 중 실행 중 30 초 전
컨테이너가 실행 중임을 나타냅니다.
- 공용 IP 주소를 사용하여 Couchbase 웹 콘솔에 액세스하면 다음과 같은 화면이 표시됩니다:
구성 파일에 사용된 이미지는 다음과 같이 구성됩니다.관리자
사용자 이름과비밀번호
비밀번호를 입력합니다. 콘솔을 보려면 자격 증명을 입력합니다:
- 서버 노드를 클릭하여 클러스터에 포함된 Couchbase 노드 수를 확인합니다. 예상대로 하나의 노드만 표시됩니다:
Couchbase "작업자" 서비스 만들기
- '작업자' 서비스를 만듭니다:
1도커 서비스 create --이름 카우치베이스-worker --복제본 1 -e 유형=WORKER -e couchbase_master=카우치베이스-마스터.카우치베이스 --네트워크 카우치베이스 arungupta/카우치베이스:swarm
이 RC는 또한 동일한 것을 사용하여 Couchbase의 단일 복제본을 생성합니다.
아룽업타/카우치베이스:스웜
이미지. 주요 차이점은 다음과 같습니다:유형
환경 변수가WORKER
. 이렇게 하면 클러스터에 추가할 워커 카우치베이스 노드가 추가됩니다.couchbase_master
환경 변수에 마스터 서비스의 이름이 전달됩니다,couchbase-master.couchbase
를 사용합니다. 이는 워커를 위해 Docker에 내장된 서비스 검색 메커니즘과
마스터와 소통할 수 있습니다.
- 서비스 확인:
1234우분투@IP-172-31-26-234:~$ 도커 서비스 lsID 이름 복제 이미지 COMMANDAW22G79O3U8Z 카우치베이스-worker 1/1 arungupta/카우치베이스:swarmCECL1RL5ECYR 카우치베이스-마스터 1/1 arungupta/카우치베이스:swarm - Couchbase 웹 콘솔을 확인하면 업데이트된 출력이 표시됩니다:
워커 서비스 생성 중 하나의 서버가 재밸런싱을 위해 보류 중임을 보여줍니다,AUTO_REBALANCE
환경 변수를 다음과 같이 설정할 수 있습니다.true
또는false
에
활성화 재조정. 이렇게 하면 노드가 클러스터에 추가될 뿐 클러스터 자체의 밸런스는 재조정되지 않습니다. 클러스터를 리밸런싱하려면 다음이 필요합니다.
클러스터의 여러 노드에 데이터를 재분배합니다. 권장되는 방법은 여러 노드를 추가한 다음 웹 콘솔을 사용하여 클러스터를 수동으로 리밸런싱하는 것입니다.
Docker 서비스 확장으로 Couchbase 노드 추가하기
- 서비스 확장하기:
1도커 서비스 규모 카우치베이스-worker=2 - 서비스를 확인하세요:
1234우분투@IP-172-31-20-209:~$ 도커 서비스 lsID 이름 복제 이미지 COMMAND1K650ZJRWZ00 카우치베이스-마스터 1/1 arungupta/카우치베이스:swarm5O1I4ECKR9D3 카우치베이스-worker 2/2 arungupta/카우치베이스:swarm
이렇게 하면 2개의 작업자 복제본이 실행 중임을 알 수 있습니다. - Couchbase 웹 콘솔을 확인합니다:
예상대로 이제 클러스터에 두 개의 서버가 추가되어 재조정 대기 중입니다. - 선택적으로 클러스터의 밸런스를 재조정하려면
재조정
버튼을 누르면 다음과 같이 표시됩니다:
리밸런싱이 완료되면 Couchbase 웹 콘솔이 그림과 같이 업데이트됩니다:
- 다음을 사용하여 실행 중인 모든 컨테이너 보기
도커 PS
:
12345우분투@IP-172-31-26-234:~$ 도커 ps컨테이너 ID 이미지 COMMAND 생성됨 상태 포트 이름a0d927f4a407 arungupta/카우치베이스:swarm "/entrypoint.sh /opt/" 21 초 전 Up 20 초 8091-8094/tcp, 11207/tcp, 11210-11211/tcp, 18091-18093/tcp 카우치베이스-worker.2.4ufdw5rbdcu87whgm94yfv9yk22bde7f6471c arungupta/카우치베이스:swarm "/entrypoint.sh /opt/" 2 분 전 Up 2 분 8091-8094/tcp, 11207/tcp, 11210-11211/tcp, 18091-18093/tcp 카우치베이스-worker.1.f22c2gghu88bnbjl5ko1wlru5f97e8bc091c3 arungupta/카우치베이스:swarm "/entrypoint.sh /opt/" 7 분 전 Up 7 분 8091-8094/tcp, 11207/tcp, 11210-11211/tcp, 18091-18093/tcp 카우치베이스-마스터.1.2xuw1h0jvantsgj9f8zuj03k8
클러스터를 생성하는 것 외에도 Couchbase Server는 다음과 같은 다양한 기능을 지원합니다. 고가용성 및 재해 복구 (HA/DR) 전략. 대부분의 HA/DR 전략
가용성을 극대화하고, 데이터센터 내부 및 전체에 걸쳐 중복성을 높이고, 정기적인 백업을 수행하는 등 다각적인 접근 방식에 의존합니다. 이제 Couchbase 클러스터가 준비되었으므로, 첫 번째 샘플 애플리케이션.
카우치베이스 및 컨테이너에 대해 자세히 알아보세요:
- 컨테이너의 카우치베이스
- 팔로우하기 @couchbasedev 또는 @couchbase
- 다음에 대해 질문하세요. 카우치베이스 포럼
안녕하세요,
가이드와 카우치베이스에 감사드립니다 :)
제 스웜에서 이 솔루션을 시도하고 있습니다. 내 목표는 영구 볼륨을 사용하지 않고 적어도 하나의 컨테이너가 데이터를 보존하고 있는지 확인하여 다른 인스턴스가 데이터를 복구 할 수 있도록하는 것입니다. 귀하의 솔루션을 사용하면 가능한 것처럼 보이지만 모든 노드의 구성을 어떻게 저장할 수 있습니까? 모든 노드에 INI 파일을 전달해야 하나요? 부팅 시 비밀번호나 기타 구성을 환경 변수별로 설정할 수 있나요?