Docker 컨테이너에서 Couchbase Server 인스턴스를 실행하는 것은 매우 간단합니다. 클러스터를 설정하고 완전히 구성하려면 조금 더 많은 작업이 필요합니다. 이 글에서는 프로세스를 자동화하기 위해 작성한 셸 스크립트를 살펴보겠습니다.
배경
Couchbase Connect 2017의 경우, 저희는 모든 것을 보여주는 애플리케이션을 만들었습니다. 카우치베이스 애널리틱스 서비스 을 사용하여 실시간 모바일 데이터 동기화까지 가능합니다. 카우치베이스 모바일. NFC 온도 감지 패치를 사용하고, Vue.js 기반 웹 클라이언트를 통해 경고를 생성하고, 즉석에서 스키마를 변경하고, 푸시 알림을 보내고, 클러스터를 페일오버하는 등의 작업을 수행합니다. 실제로 작동하는 이 동영상을 확인하세요.
데모에서 카우치베이스 서버, 동기화 게이트웨이및 웹 백엔드는 모두 클라우드에서 실행되고 있습니다. 전체 프로젝트의 코드를 공개하기 위해 노력 중입니다. 그 일환으로 단일 컴퓨터에서 축소된 버전을 실행할 수 있기를 원합니다.
즉, 이상적으로는 두 개의 카우치베이스 서버 클러스터, 동기화 게이트웨이 및 Node.js 백엔드 애플리케이션을 동시에 실행하는 것이 좋습니다.
Docker를 사용하면 Couchbase의 개별 인스턴스를 매우 쉽게 실행할 수 있습니다. 하지만 전체 클러스터를 완전히 구성하려면 여전히 약간의 작업이 필요합니다. 제가 작성한 스크립트가 바로 여기에 도움이 됩니다.
유연한 클러스터 생성 스크립트
스크립트는 Bash를 사용하여 작성되었습니다. 개발하면서 몇 가지 목표를 염두에 두었습니다:
- 범용적이고 사용하기 쉬운 것을 만드세요.
- 합리적인 기본값으로 돌아가면서 유연하게 구성할 수 있습니다.
- Bash, 일반적인 표준 유틸리티(일부 작업은 어색할 수 있음), Docker cli에 대한 종속성을 최소화하세요.
코드 및 기타 관련 내용을 Github에 게시했습니다. 이 요점. 클러스터 형성 스크립트는 다음과 같습니다.
https://gist.github.com/HodGreeley/fa88c74baf55115ef83135d4d069e796#file-server
개요
대략적으로 말하면, 스크립트는 순서대로 다음을 처리합니다:
- 매개변수 구성
- 최신 프로덕션 이미지를 사용하여 요청된 수의 Couchbase Server 인스턴스(Docker 컨테이너당 하나씩)를 시작합니다.
- 필요한 포트 매핑(충돌을 피하기 위해 각 인스턴스 오프셋)
- 관리자 계정 및 비밀번호 설정
- 사용 가능한 서비스 선택 및 메모리 할당량 설정하기
- 버킷 만들기
- 다음을 사용하여 클라이언트 계정에 권한 부여하기 RBAC
- 노드를 클러스터로 결합하기
- 최종 클러스터 재조정
스크립트를 자세히 살펴보지는 않겠습니다. 어떤 섹션이 개요에 해당하는지 알려주는 댓글이 있습니다. 궁금한 점이 있으면 여기 또는 Github에 댓글을 남겨 주세요.
사용법
저는 Mac에서 클러스터를 설정하기 위해 이 글을 작성했습니다. Bash와 Docker를 실행할 수 있는 모든 컴퓨터에서 똑같이 잘 작동할 것으로 예상합니다. 이 스크립트에는 옵션이 없습니다. 모든 것은 키/값 쌍으로 매개 변수를 제공함으로써 제어됩니다. 매개변수는 네 가지 방식으로 제공됩니다. 우선순위가 가장 낮은 것부터 높은 것까지,
- 기본값(스크립트 자체에 작성됨)
- 기존 환경 변수
- 표준 입력에 공급되는 라인
- 명령줄 인수로 제공
마지막 두 사례에서는 환경 변수를 정의하는 것과 같은 방식으로 매개변수가 제공됩니다. 예를 들어 노드 3개를 요청하려면 다음과 같이 추가합니다. 카우치베이스_노드 수=3
를 명령줄에서 입력하거나 파일에서 리디렉션합니다. 기본값이 어디에 설정되어 있는지 살펴보고 제어할 수 있는 항목을 확인하세요.
포트 매핑은 조금 설명이 필요합니다. Couchbase는 여러 포트 범위를 사용합니다. 클러스터를 생성하려면 여러 포트가 Docker에 의해 노출되고 호스트 머신의 열린 포트에 매핑되어야 합니다. 이렇게 하려면 범위와 매핑의 블록을 이중 콜론(::
). 예를 들어, 설정 COUCHBASE_SERVER_PORTS="9091-9094:8091-8094::12210:11210
는 표준 카우치베이스 포트 8091-8094 및 11210을 호스트 머신 포트 9091-9094 및 12210에 각각 매핑합니다.
예
일반적인 시나리오에서는 클러스터 관리자 계정 정보가 환경 변수에 할당되어 있을 수 있습니다. 즉
1 2 |
내보내기 카우치베이스_관리자_사용자명=관리자 내보내기 카우치베이스_관리자_비밀번호=비밀번호 |
그런 다음 다른 일반 구성 정보를 파일에 보관할 수 있습니다. 이름은 중요하지 않습니다. 제가 사용하는 이름은 다음과 같습니다. 런던 클러스터
1 2 3 4 5 6 7 8 |
카우치베이스_노드_이름=런던 카우치베이스_클러스터_이름=런던-클러스터 카우치베이스_버킷=건강 couchbase_rbac_username=관리자 couchbase_rbac_password=비밀번호 카우치베이스_rbac_이름='J. D. 사용자' COUCHBASE_RBAC_ROOLS=관리자 카우치베이스_서버_포트="11091-11094:8091-8094::14210:11210" |
마지막으로 클러스터를 시작하려면 명령줄에서 다음과 같이 호출합니다.
1 |
$ ./서버 카우치베이스_노드 수=3 < 런던-클러스터 |
관련 스크립트
에서 요점 에서 동기화 게이트웨이 설정을 위한 유사한 스크립트를 찾을 수도 있습니다. 이 스크립트는 컨테이너를 만들고, 시작하고, 중지하고, 제거하는 명령이 있다는 점에서 조금 더 구축되어 있습니다. 동기화 게이트웨이에는 구성 파일이 필요하기 때문에 매개변수 대체를 위해 스크립트가 조금 더 많은 작업을 수행해야 합니다. 그렇지 않으면 서버 스크립트와 비슷하지만 더 간단합니다.
앞의 두 스크립트를 사용하는 것을 포함하여 전체 데모를 설정하는 스크립트도 있습니다. 앞서 언급했듯이 전체 애플리케이션의 엔드투엔드 코드를 공개하기 위해 노력 중입니다. 설정 스크립트를 통해 어떤 내용이 포함되는지 알 수 있습니다.