Joyent는 최근 새로운 Triton Docker 컨테이너 호스팅 서비스를 발표했습니다. 기존 클라우드 호스팅 플랫폼이 아닌 Triton에서 Docker 컨테이너를 실행하면 몇 가지 이점이 있습니다:

  • 하드웨어 수준의 가상화 오버헤드가 없으므로 성능이 향상됩니다. 컨테이너는 베어메탈에서 실행됩니다.
  • 컨테이너 간 네트워킹 간소화. 각 컨테이너는 고유한 프라이빗(선택 사항으로 퍼블릭) IP 주소를 갖습니다.
  • 호스트는 추상화되어 '컨테이너 클라우드'에 배포하기만 하면 컨테이너가 어떤 호스트에서 실행되고 있는지 신경 쓰지 않아도 됩니다.

자세한 내용은 브라이언 캔트릴의 Docker와 프로덕션 컨테이너의 미래에 대한 강연에서 확인하세요.

"hello world" 컨테이너와 Couchbase 서버 클러스터를 사용해 보겠습니다.

조이렌트 계정 가입하기

의 가입 안내에 따라 Joyent 웹사이트.

또한 계정에 SSH 키를 추가해야 합니다.

Docker 클라이언트를 1.4.1 이상으로 업그레이드하기

사용 중인 Docker 버전을 확인하세요:

저처럼 1.4.1 이전 버전을 사용 중인 경우, 다음 링크를 통해 Docker를 업그레이드할 수 있습니다. 부트2도커 설치 관리자.

조이렌트 + 도커 설정

sdc-docker 리포지토리를 가져옵니다(sdc == 스마트 데이터 센터):

다음을 통해 설정을 수행합니다:

값을 다음과 같이 바꿉니다:

  • $ACCOUNT조이렌트 웹 UI에 로그인한 후 오른쪽 상단의 풀다운에서 계정 메뉴로 이동하면 이 정보를 얻을 수 있습니다. 에서 사용자 이름 필드로 이동하여
  • 1TP4개인_키_파일개인 키가 저장된 파일의 이름, 일반적으로 다음과 같습니다. ID_RSA

명령을 실행하면 다음과 같은 출력이 표시됩니다:

환경 변수 내보내기

위의 출력에서 알 수 있듯이 출력에서 명령을 복사하여 붙여넣습니다. 다음은 그 예시입니다(단, 아래 스니펫이 아니라 명령 출력에서 복사하여 붙여넣어야 합니다):

도커 헬로 월드

헬로 월드라고 표시된 Ubuntu 도커 이미지를 실행해 보겠습니다.

클라우드가 아닌 워크스테이션에서 Docker 클라이언트를 실행하고 있다는 점을 기억하세요. 다음은 앞으로 일어날 일에 대한 개요입니다:

도커 컨테이너를 시작하려면 다음과 같이 하세요:

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

또한 --rm 플래그가 전달되었다면 종료 후 컨테이너가 제거되었을 것입니다. 다음을 실행하여 확인할 수 있습니다. 도커 ps -a. 이는 다음과 같은 이유로 중요합니다. 중지된 컨테이너는 조이엔트에서 요금이 부과됩니다..

축하합니다! 조이엔트에서 "헬로 월드" 도커 컨테이너를 실행하게 되었습니다.

카우치베이스 서버 컨테이너 실행

이제 카우치베이스 서버를 실행할 차례입니다.

3개의 Couchbase Server 컨테이너를 시작하려면 실행합니다:

컨테이너가 실행되었는지 확인하려면 실행합니다:

보시면 아시겠죠:

이 시점에서 각 컨테이너의 컨테이너 ID로 정의된 환경 변수를 갖게 됩니다. 실행하여 확인할 수 있습니다:

컨테이너의 공인 IP 주소 가져오기

각 컨테이너에는 두 개의 IP 주소가 할당됩니다:

  • 어디서나 액세스할 수 있는 공용 IP
  • 조이렌트 계정의 컨테이너/머신에서만 액세스할 수 있는 개인 IP입니다.

공인 IP를 얻으려면 도커 클라이언트를 사용할 수 있습니다. (비공개 IP를 얻으려면 아래에 설명된 조이엔트 스마트데이터센터 도구를 사용해야 합니다).

이제 각 컨테이너의 공인 IP 주소가 환경 변수에 정의되어 있습니다. 다음을 통해 작동하는지 확인할 수 있습니다:

Couchbase 웹 UI에 연결

브라우저를 $container_1_ip:8091로 열면 Couchbase 시작 화면이 표시됩니다:

이 시점에서는 각 Couchbase 노드의 웹 UI로 이동하여 설정 마법사를 따라 클러스터를 설정할 수 있습니다. 그러나 나중에 이 작업을 자동화하려면 명령줄을 통해 이 작업을 대신 수행해 보겠습니다.

첫 번째 카우치베이스 노드 설정

임의로 선택해 보겠습니다. container_1 를 클러스터의 첫 번째 노드로 지정합니다. 이 노드는 다른 노드가 이 노드에 참여한다는 점에서 특별합니다.

다음 명령은 이러한 작업을 수행합니다:

  • 관리자의 사용자 아이디와 비밀번호를 관리자/비밀번호로 설정합니다(변경해야 함).
  • 클러스터 RAM 크기를 600MB로 설정합니다.

참고 -u 관리자 -p 비밀번호 는 인증 목적으로 기본 관리자 이름과 비밀번호를 전달할 뿐이므로 그대로 두어야 합니다.

다음과 같은 응답이 표시되어야 합니다:

기본 버킷 만들기

버킷은 일반적인 RDMS 시스템에서 데이터베이스에 해당합니다.

보셔야 합니다:

두 번째 카우치베이스 노드 추가

다음 명령을 사용하여 두 번째 Couchbase 노드에 추가합니다.

보셔야 합니다:

추가되었는지 확인하려면 실행합니다:

를 호출하면 현재 클러스터의 일부인 Couchbase Server 노드 목록이 반환됩니다:

세 번째 카우치베이스 노드 추가 및 밸런스 재조정

이 단계에서는 이렇게 하겠습니다:

  • 세 번째 카우치베이스 노드 추가
  • "재조정"을 트리거하여 (빈) 버킷의 데이터를 클러스터 전체에 분산시킵니다.

보셔야 합니다:

다음과 같은 경우 성공를 클릭한 다음 작동했습니다. ("파일에서 닫지 못했습니다 ..." 오류가 발생하는 이유는 잘 모르겠지만 지금까지는 안전하게 무시해도 될 것 같습니다.)

웹 UI에 로그인

브라우저를 $container_1_ip:8091로 열면 Coucbase 로그인 화면이 표시됩니다:

로그인:

  • 사용자 이름: 관리자
  • 비밀번호: 비밀번호

그리고 Couchbase 노드가 보일 것입니다:

축하합니다! 조이엔트 트리톤에서 카우치베이스 서버 클러스터를 실행하고 있습니다.

해체

Couchbase 서버 컨테이너를 중지하고 제거하려면 실행하세요:

더 이상 실행 중이거나 중지된 상태의 컨테이너가 없는지 다시 확인하려면 다음을 실행하세요. 도커 ps -a 를 클릭하면 빈 목록이 표시됩니다.

SDC 도구 설치하기(선택 사항)

Joyent 스마트 데이터 센터(SDC) 도구를 설치하면 컨테이너 클러스터에 대한 가시성을 높일 수 있습니다(예: 각 대륙의 내부 IP를 확인할 수 있음).

sdc-tools 제품군을 설치하는 방법은 다음과 같습니다.

smartdc 설치

먼저 NodeJS + NPM 설치

smartdc를 설치합니다:

환경 변수 구성

값을 다음과 같이 바꿉니다:

  • 계정조이렌트 웹 UI에 로그인한 후 오른쪽 상단의 풀다운에서 계정 메뉴로 이동하면 이 정보를 얻을 수 있습니다. 에서 사용자 이름 필드로 이동하여

머신 목록

실행 sdc-listmachines 를 입력하면 조이엔트 계정에서 실행 중인 모든 컨테이너가 나열됩니다. 출력은 다음과 같이 표시됩니다:

개별 컴퓨터의 개인 IP 찾기

참조

  • 네이티브 도커 API와 조이언트 트리톤 API 비교
  • https://www.joyent.com/blog/container-service-preview
  • https://www.joyent.com/blog/docker-bake-off-aws-vs-joyent
  • https://github.com/joyent/sdc-docker
  • https://github.com/joyent/sdc-docker/blob/master/docs/divergence.md

작성자

게시자 Traun Leyden, 선임 소프트웨어 엔지니어, Couchbase

Traun Leyden은 현재 Couchbase의 수석 소프트웨어 엔지니어로 Touch-DB/Android 프로젝트를 진행하고 있습니다. 카우치베이스에 입사하기 전에는 벤처 지원 스타트업인 시그니처 랩스를 공동 설립하여 포춘지 선정 500대 기업에 배포된 iOS 모바일 CRM 지리적 위치 앱을 개발했습니다. 그의 업적 중에는 "Buzzoff"라는 매우 인기 있는 Android 벨소리 제어 앱을 개발했으며, 높은 계산 동시성을 달성하기 위해 Go 채널/고루틴을 활용하는 Go로 작성된 오픈 소스 신경망 라이브러리를 만들었습니다.

댓글 남기기