Couchbase Docker 컨테이너는 다양한 오케스트레이션 플랫폼에서 쉽게 실행할 수 있습니다:
아파치 메소스 및 마라톤을 사용하는 도커 컨테이너 는 Mesos, Marathon을 설정하고 간단한 Docker 이미지를 실행하는 방법을 설명했습니다. 설정은 상당히 복잡하고 약간
flaky. Mesos 마스터 및 슬레이브, ZooKeeper, Docker 엔진 및 마라톤을 다운로드하여 설치해야 합니다. 경우에 따라 올바른 리포지토리를 먼저 추가해야 하는 경우도 있습니다. 이러한 구성 요소는 각각과 통신해야 하므로 다음과 같이 구성해야 합니다.
를 사용해야 합니다. 이러한 설정을 통과하더라도 전체 인프라를 하나의 엔터티로 어떻게 모니터링할 수 있을까요?
만나기 DC/OS - 데이터센터 운영 체제. Apache Mesos를 사용하는 분산 운영 체제입니다.
를 커널로 사용합니다.
DC/OS 설치 가능
다양한 방식으로 지원합니다:
- Vagrant를 사용하는 로컬
- 아마존/클라우드포메이션, 마이크로소프트 애저 및 패킷을 사용하는 클라우드
- CentOS 또는 CoreOS를 사용하는 온프레미스
이 블로그에서는 Amazon에서 CloudFormation 템플릿을 사용하는 DC/OS 클러스터 를 실행하고 Couchbase Docker 컨테이너를 실행합니다.
DC/OS 클러스터 시작
템플릿에 이름을 지정하고, 이전에 만든 키쌍을 선택하고, 슬레이브 수를 변경합니다:
구성을 확인합니다:
"동의합니다..."를 클릭하고 만들기를 클릭하여 템플릿 만들기를 시작합니다. CloudFormation 스택 상태 페이지가 나타납니다:
적절한 지역을 선택하세요. 약 10~15분 후에 상태가 변경됩니다:
상태가 다음에서 변경될 때까지 기다립니다. create_in_progress
에 create_complete.
DC/OS CLI 다운로드 및 구성
DC/OS CLI 를 사용하여 클러스터 노드를 관리하고, DC/OS 패키지를 설치하고, 클러스터 상태를 검사하고, DC/OS 서비스 하위 명령을 관리할 수 있습니다. DC/OS CLI 설치 on
로컬 머신으로 이동합니다.
귀하의 CloudFormation 스택 상태 페이지에서 생성된 스택을 선택합니다, 출력
탭을 클릭하고
메소스 마스터
.
이 클러스터를 사용하도록 DC/OS CLI를 구성합니다:
1 2 |
./bin/dcos 구성 set 핵심.dcos_url https://couchbase-ElasticL-14LTDN783Y89T-1791879285.us-west-1.elb.amazonaws.com [핵심.dcos_url]: 변경됨 에서 'http://couchbase-ElasticL-UJ5K6BOZQX59-570103311.us-west-1.elb.amazonaws.com' 에 'https://couchbase-ElasticL-14LTDN783Y89T-1791879285.us-west-1.elb.amazonaws.com' |
인증합니다:
1 2 3 4 5 6 7 8 |
./bin/dcos auth 로그인 제거됨 [핵심.dcos_acs_token] 제발 go 에 의 다음 링크 in 당신의 브라우저: https://couchbase-ElasticL-14LTDN783Y89T-1791879285.us-west-1.elb.amazonaws.com/login?redirect_uri=urn:ietf:wg:oauth:2.0:oob 입력 인증 토큰: |
브라우저에 URL을 입력하고 안전하지 않은 URL로 이동합니다:
터미널 창에 인증 토큰을 붙여넣습니다:
1 2 3 |
입력 인증 토큰: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik9UQkVOakZFTWtWQ09VRTRPRVpGTlRNMFJrWXlRa015Tnprd1JrSkVRemRCTWpBM1FqYzVOZyJ9.eyJlbWFpbCI6ImFydW4uZ3VwdGFAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImlzcyI6Imh0dHBzOi8vZGNvcy5hdXRoMC5jb20vIiwic3ViIjoiZ29vZ2xlLW9hdXRoMnwxMDExOTUyMTI0MDUxOTA0Njc1MTIiLCJhdWQiOiIzeUY1VE9TemRsSTQ1UTF4c3B4emVvR0JlOWZOeG05bSIsImV4cCI6MTQ2MzM1MjA1MSwiaWF0IjoxNDYyOTIwMDUxfQ.tFOy6GBPhnDbP0hI1ZU6jjlogHi4DX2bAGcdYsLywfCEMmv5OU9fUL88v2Kebjgd6gNAJoDF8QiO8zkQ3c4PGifXjiEoay8USjSWpnMbbezkH3AwIZM_-WNVVm0nfIBnCiY5wIgHkCpG_n4oBGdBbMgggtRPUrwPasNPtC_eYbQfwJeM3ByTUaTsarNe3FERbTpQbhKx2Lfc8Xp8AXuW8Up65SbOZr3Kp_jehiLgR-DL6llB4wZDopf8mjnq_5lpOYMtSaHPTlA33tdnhmHi6dPCPeRQEI1qBM6sWUWKs02kT1u42nOF9IYrKrfkzjb4LxwtZdsQt8Jb8CtJHkU0KA [핵심.dcos_acs_token]: set 로그인 성공! |
메소스 및 마라톤 UI
Mesos UI는 Mesos 마스터의 주소를 사용하여 사용할 수 있습니다:
를 클릭합니다. 서비스
를 클릭하면 이미 설치된 마라톤 서비스를 확인할 수 있습니다:
새로 만든 클러스터의 경우 예상대로 아직 작업이 할당되지 않았습니다. 클러스터에서 노드
를 클릭해 노드를 확인합니다:
마라톤 로드 밸런서 설치 및 구성
DC/OS 슬레이브 노드는 인터넷에 직접 노출되지 않습니다. 슬레이브에서 실행 중인 작업을 노출하도록 "외부" 로드 밸런서를 구성할 수 있습니다. 마라톤-lb마라톤의 줄임말
로드 밸런서는 Mesos 서비스로 제공되는 로드 밸런서입니다. SSL 지원, HTTP 압축, 상태 확인 등의 기능을 통해 TCP 및 HTTP 기반 애플리케이션에 프록시 및 로드 밸런싱을 제공하는 HAProxy를 기반으로 합니다.
Marathon-lb는 Marathon의 이벤트 버스를 구독하고 HAProxy 구성을 실시간으로 업데이트합니다.
1 2 3 4 5 6 |
dcos 패키지 설치 마라톤-lb 우리 추천 a 최소 의 0.5 CPU 그리고 256 MB 의 RAM 사용 가능 에 대한 의 마라톤-LB DCOS 서비스. 계속하기 설치? [yes/아니요] yes 설치 마라톤 앱 에 대한 패키지 [마라톤-lb] 버전 [1.2.1] 마라톤-lb DCOS 서비스 has been 성공 설치된! 참조 https://github.com/mesosphere/marathon-lb에서 문서를 확인하세요. |
마라톤 서비스 UI에 LB 작업이 실행 중이라는 메시지가 표시됩니다:
AWS 로드 밸런서는 기본적으로 포트 80과 443을 허용합니다. 포트 8091에 노출될 Couchbase 서버를 실행하겠습니다.
In CloudFormation 스택 상태 페이지에서 값을 복사합니다. 값
열의 PublicSlaveDnsAddress
:
In AWS 콘솔에서 로드 밸런서를 선택합니다.를 클릭하고 TCP에서 포트 8091을 허용하는 새 방화벽 규칙을 추가합니다:
DC/OS에서 카우치베이스 서버 도커 컨테이너 실행
다음 구성 파일을 사용하여 DC/OS에서 Couchbase Server Docker 컨테이너를 실행합니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "id": "카우치베이스-메소스", "컨테이너": { "type": "DOCKER", "docker": { "이미지": "아룽업타/카우치베이스", "네트워크": "BRIDGE", "portMappings": [ { "hostPort": 0, "컨테이너 포트": 8091, "서비스 포트": 8091 }, { "hostPort": 0, "컨테이너 포트": 8092, "서비스 포트": 8092 }, { "hostPort": 0, "컨테이너 포트": 8093, "서비스 포트": 8093 }, { "hostPort": 0, "컨테이너 포트": 11210, "서비스 포트": 11210 } ], "forcePullImage"참 } }, "인스턴스": 1, "cpus": 2.0, "mem": 2048, "레이블":{ "haproxy_group":"외부" } } |
이 구성 파일은 arungupta/couchbase 이미지를 사용하여 카우치베이스 서버 사전 정의된 Couchbase REST API.
이 이미지는 카우치베이스 도커 이미지. cpus
그리고 mem
속성은 이 작업을 실행하는 데 필요한 처리 메모리를 정의합니다. 다음 명령을 입력합니다.
를 사용하여 DC/OS 클러스터에서 Couchbase를 실행합니다:
1 |
~/도구/dcos/dcos/bin/dcos 마라톤 앱 추가 카우치베이스-메소.json |
이전에 복사한 PublicSlaveDnsAddress
를 클릭하고 카우치베이스 웹 콘솔 에서 http://:8091. 당사의 경우 URL은 http://couchbase-publicsl-vjzmwpa38k6d-429093455.us-west-1.elb.amazonaws.com:8091/index.html 입니다.
그러면 로그인 페이지가 다음과 같이 표시됩니다:
로그인 자격 증명을 다음과 같이 입력합니다. 관리자
그리고 비밀번호
:
를 클릭합니다. 로그인
를 클릭합니다:
자세히 알아보기 카우치베이스 웹 콘솔.
실행 중인 모든 서비스를 표시하도록 마라톤 UI가 업데이트되었습니다:
카우치베이스 도커 이미지 로그는 로그 뷰어에서 볼 수 있습니다:
소비되는 리소스를 표시하도록 Mesos 대시보드가 업데이트됩니다:
마지막으로 스택형성 템플릿 페이지에서 전체 스택을 삭제할 수 있습니다:
더 읽어보기:
- 최신 DC/OS 문서
- DC/OS 설치 가이드
- DC/OS 시작하기
- DC/OS 클러스터 관리
- DC/OS를 통한 서비스 검색 및 로드 밸런싱
- DC/OS 슬랙 채널
- Couchbase 시작하기
즐기세요!
이제 다음을 보셨습니다. 도커 스웜의 카우치베이스, 쿠버네티스의 카우치베이스, 오픈시프트 3의 카우치베이스.
이 블로그에서는 Mesos 및 DC/OS에서 Couchbase Docker 이미지를 실행하는 방법을 설명합니다.
Couchbase 컨테이너를 다른 곳에서 실행하고 싶으신가요?
안녕하세요, 아룬 굽타입니다,
먼저, 여러분의 모든 기여에 감사드리며, Couchbase를 사용하는 데 큰 도움이 되었습니다.
실제로 질문이 있습니다. DCOS에서 카우치베이스 인스턴스를 실행하려고 합니다. 클라이언트 SDK "cbc n1ql..." 또는 PHP 라이브러리(예: CouchbaseN1qlQuery 클래스)를 통해 이 인스턴스에 액세스할 수 없는 것을 제외하고는 모든 것이 정상적으로 작동합니다. REST API는 정상적으로 작동합니다.
시도한 작업에 따라 LCB_ECONNREFUSED 또는 LCB_NETWORK_ERROR가 지속적으로 발생합니다.
다음을 사용하여 PHP 라이브러리를 설치했습니다. https://developer.couchbase.com/documentation/server/4.6/sdk/php/start-using-sdk.html.
다음은 마라톤 json에 넣은 포트 라우팅입니다:
"도커": {
"이미지": "registry.marathon.l4lb.thisdcos.directory/couchbase/server:4.6.1",
"네트워크": "BRIDGE",
"포트매핑": [
{
"컨테이너포트": 8091,
"호스트 포트": 0,
"서비스포트": 10114,
"프로토콜": "tcp",
"레이블": {
"VIP_0": "/projects/ccu/couchbase/couchbaseeccu:8091"
}
},
{
"컨테이너포트": 8092,
"호스트 포트": 0,
"서비스포트": 10115,
"프로토콜": "tcp",
"레이블": {
"VIP_0": "/projects/ccu/couchbase/couchbaseeccu:8092"
}
},
{
"컨테이너포트": 8093,
"호스트 포트": 0,
"서비스포트": 10116,
"프로토콜": "tcp",
"레이블": {
"VIP_0": "/projects/ccu/couchbase/couchbaseeccu:8093"
}
},
{
"컨테이너포트": 8094,
"호스트 포트": 0,
"서비스포트": 10117,
"프로토콜": "tcp",
"레이블": {
"VIP_0": "/projects/ccu/couchbase/couchbaseeccu:8094"
}
},
{
"컨테이너포트": 11210,
"호스트 포트": 0,
"서비스포트": 10118,
"프로토콜": "tcp",
"레이블": {
"VIP_0": "/projects/ccu/couchbase/couchbaseeccu:11210"
}
}
어떤 도움이라도 정말 감사하겠습니다,
고마워요
cbc n1ql -U couchbase://couchbasecouchbaseccu.marathon.l4lb.thisdcos.directory/bucket_name 'CREATE INDEX profile_given_name...'
출력772ms [I3bcc1f16] {7396} [TRACE] (http-io - L:249) POST http://172.17.0.28:8093/query/service. Body=192바이트
772ms [I3bcc1f16] {7396} [DEBUG] (lcbio_mgr - L:448) (HE=0xaf2520) 풀에 사용할 수 있는 연결이 없으므로 새 연결을 만드는 중입니다.
773ms [I3bcc1f16] {7396} [TRACE] (lcbio_mgr - L:359) (HE=0xaf2520) 새 풀 항목: I=0xaf2940
773ms [I3bcc1f16] {7396} [INFO] (연결 - L:474) (SOCK=000000005708fc0d) 시작. 시간 초과=75000000us
773ms [I3bcc1f16] {7396} [DEBUG] (연결 - L:238) (SOCK=000000005708fc0d) FD=7로 새 소켓을 만들었습니다.
773ms [I3bcc1f16] {7396} [TRACE] (연결 - L:339) (SOCK=000000005708fc0d) 비동기 연결 완료를 위해 I/O 감시자 스케줄링 중입니다.
773ms [I3bcc1f16] {7396} [TRACE] (연결 - L:354) (SOCK=000000005708fc0d) connect() 실패. errno=111 [연결 거부됨]
773ms [I3bcc1f16] {7396} [오류] (연결 - L:156) (SOCK=000000005708fc0d) 연결 설정에 실패했습니다: LCB_ECONNREFUSED (0x2C), 오류 번호=111
773ms [I3bcc1f16] {7396} [DEBUG] (lcbio_mgr - L:318) (HE=0xaf2520) I=0xaf2940,C=(nil); E=0x2c에 대한 결과 수신
773ms [I3bcc1f16] {7396} [오류] (http-io - L:226) Err=0x2c로 연결에 실패했습니다.
773ms [I3bcc1f16] {7396} [경고] (http-io - L:85) 재시도하지 않음. 사용 가능한 노드가 없습니다.
773ms [I3bcc1f16] {7396} [TRACE] (confmon - L:275) 현재 클러스터 맵 새로 고침 중