메타데이터와 같은 레이블를 Docker 데몬에 연결할 수 있습니다. 레이블은 키/값 쌍으로, Docker 호스트가 컨테이너의 대상이 될 수 있도록 합니다. 레이블의 의미는 애플리케이션에 의해 완전히 정의됩니다. 새로운 Docker 제약 조건 는 특정 호스트의 작업을 대상으로 서비스를 생성하는 동안 지정할 수 있습니다. 실제 애플리케이션에서 Docker의 레이블과 제약 조건을 사용하는 방법을 살펴보겠습니다.

다차원 스케일링을 사용하는 카우치베이스 (또는 MDS)를 사용하면 인덱스, 데이터, 쿼리 및 전체 텍스트 검색 서비스를 분할할 수 있습니다.
를 여러 노드에서 사용할 수 있습니다. 각 서비스에 대한 요구 사항은 다릅니다. 예를 들어 쿼리는 CPU를 많이 사용하고, 인덱스는 디스크 집약적이며, 데이터는 SSD와 같은 메모리와 빠른 읽기/쓰기가 혼합되어 있습니다. MDS를 사용하면 애플리케이션 요구 사항의 변화에 따라 하드웨어 리소스를 노드별로 독립적으로 할당하고 최적화할 수 있습니다.
couchbase-mds 자세히 알아보기 다차원 스케일링.
다음을 사용하여 3노드 클러스터에서 이 작업을 쉽게 수행할 수 있는 방법을 살펴보겠습니다. 도커 스웜 모드.

Ubuntu 인스턴스 시작

Ubuntu Server 14.04 LTS(HVM)의 EC2에서 3개의 인스턴스를 시작하십시오(AMI ID: ami-06116566). 보안 그룹을 제외한 모든 경우에서 기본값을 사용합니다. 스웜 모드에는 다음 세 가지가 필요합니다. 호스트 간 포트 개방:

  • TCP 포트 2377 클러스터 관리 커뮤니케이션용
  • TCP 그리고 UDP 포트 7946 노드 간 통신을 위한
  • TCP 그리고 UDP 포트 4789 오버레이 네트워크 트래픽에 대한

이러한 규칙을 사용하여 새 보안 그룹을 만들어야 합니다:
ec2-swarmmode-security-group
인스턴스가 프로비저닝될 때까지 몇 분 정도 기다리세요.

우분투에서 도커 설정

스웜 모드는 Docker 1.12에 도입되었습니다. 이 글을 작성하는 시점에 1.12 RC4가 최신 후보입니다. 다음 스크립트를 사용하여 실험적 기능이 포함된 RC4 릴리스를 설치하세요:

이 스크립트에서는 다음과 같은 상황을 가정합니다. AWS CLI가 이미 설정되어 있습니다. 에 대해 다음 구성을 수행합니다. 모두 구성된 EC2에서 인스턴스 실행
계정으로 이동합니다:

  • 각 인스턴스의 공용 IP 주소 가져오기
  • 각 인스턴스에 대해
    • 실험적 기능이 포함된 최신 Docker 릴리스를 설치하세요.
    • 추가 우분투 사용자를 도커 그룹에 추가합니다. 이렇게 하면 루트 사용자가 아닌 사용자로 Docker를 사용할 수 있습니다.
    • Docker 버전을 인쇄합니다.

이 간단한 스크립트는 세 인스턴스 모두에서 Docker 호스트를 설정합니다.

도커 데몬에 레이블 할당하기

레이블은 다음을 사용하여 정의할 수 있습니다. DOCKER_OPTS. 우분투의 경우, 이것은 /etc/default/docker 파일에 추가합니다. 각 노드에 고유한 레이블을 할당해야 합니다. 예를 들어 couchbase.mds 키
그리고
색인 값입니다.

또한 도커 데몬을 다시 시작해야 합니다. 마지막으로 도커 정보 시스템 전체 정보를 표시합니다:

보시다시피 이 정보에 레이블이 표시됩니다. 두 번째 노드에는 다른 레이블을 할당합니다:

두 번째 EC2 인스턴스의 IP 주소를 사용해야 합니다. 이 경우 Docker 데몬에 대한 업데이트된 정보가 표시됩니다:

마지막으로 마지막 노드입니다:

이 호스트의 Docker 데몬에 대한 업데이트된 정보가 표시됩니다:

저희의 경우, 운영 체제, CPU, 디스크, 메모리 용량 등 머신이 완전히 동일한 동종 클러스터가 만들어집니다. 실제 환경에서는 일반적으로 운영 체제는 동일하지만 디스크, CPU 및 메모리와 같은 인스턴스 용량은 실행하려는 Couchbase 서비스에 따라 달라질 수 있습니다. 이 경우 이러한 레이블은 완벽하게 이해되지만 여기서는 요점을 보여줍니다.

스웜 모드 활성화 및 클러스터 생성

스웜 모드를 활성화하고 매니저 노드 1개와 워커 노드 2개로 구성된 클러스터를 생성해 보겠습니다. 기본적으로 매니저는 워커 노드이기도 합니다. 첫 번째 노드에서 스웜을 초기화합니다:

그러면 출력이 표시됩니다:

다른 두 노드를 워커로 추가합니다:

이 경우 정확한 명령과 출력은 다음과 같습니다:

이제 클러스터에 대한 전체 세부 정보를 얻을 수 있습니다:

그리고 이것은 출력을 보여줍니다:

관리자가 한 명인 3노드 클러스터가 생성되었음을 보여줍니다.

제약 조건으로 도커 서비스 실행

이제 서로 다른 제약 조건을 가진 세 개의 Couchbase 서비스를 실행해 보겠습니다. 각 Docker 서비스는 다음을 사용하여 제약 조건을 지정합니다.--constraint engine.labels. 형식에 앞서 노드에 대해 정의한 레이블과 일치하는 레이블이 있습니다. 각 서비스에는 개별적으로 확장할 수 있도록 고유한 이름이 부여됩니다. 모든 명령은 스웜 매니저로 전달됩니다:

이 경우의 정확한 명령은 다음과 같습니다:

서비스 목록은 다음과 같이 확인할 수 있습니다:

출력은 다음과 같이 표시됩니다:

그리고 각 서비스에 대한 작업 목록(기본적으로 해당 서비스 내의 컨테이너)을 다음과 같이 확인할 수 있습니다:

그리고 우리의 경우의 결과물입니다:

이는 서비스가 여러 노드에 잘 분산되어 있음을 보여줍니다. 올바른 레이블이 있는 노드에서 작업이 실제로 예약되어 있는지 확인해 보세요. 모든 Couchbase 인스턴스를 클러스터로 구성하여 웹, 모바일 및 IoT 애플리케이션을 위한 완벽한 데이터베이스 솔루션을 제공할 수 있습니다. 자세히 알아보고 싶으신가요?

작성자

게시자 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. [...] 영화 '인터스텔라' 제작을 위한 카우치베이스 블로그의 크기는 어떻게 되나요? 다차원 [...]

댓글 남기기