아마존 마켓플레이스의 카우치베이스 에서 EC2 콘솔을 사용하여 단일 Couchbase 노드를 설정하는 방법을 보여드렸습니다. 하지만 일반적으로 이러한 노드를 한꺼번에 프로비저닝하며, 더 일반적으로는 다음과 같이 프로비저닝합니다.
클러스터를 생성하세요. 카우치베이스 클러스터는 균질하고 수평적으로 확장되므로 데이터베이스가 고성능 애플리케이션의 병목 현상이 되지 않도록 보장합니다.
이 블로그에서는 AWS CLI(명령줄 인터페이스)를 사용하여 Couchbase 클러스터를 생성, 확장 및 재조정하는 방법을 설명합니다.
AWS CLI 설치
AWS CLI 설치 에서 자세한 내용을 확인할 수 있지만, 제 컴퓨터에서 작동한 방식은 다음과 같습니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
도구 > pip 설치 awscli 수집 awscli 다운로드 awscli-1.10.27-py2.py3-없음-any.whl (937kB) 100% |"""""""""""""""""""""""""""""""| 937kB 561kB/s 수집 rsa<=3.3.0,>=3.1.2 (에서 awscli) 다운로드 rsa-3.3-py2.py3-없음-any.whl (44kB) 100% |"""""""""""""""""""""""""""""""| 45kB 7.7MB/s 수집 s3transfer==0.0.1 (에서 awscli) 다운로드 s3transfer-0.0.1-py2.py3-없음-any.whl 수집 colorama<=0.3.3,>=0.2.5 (에서 awscli) 다운로드 colorama-0.3.3.tar.gz 수집 보토코어==1.4.18 (에서 awscli) 다운로드 보토코어-1.4.18-py2.py3-없음-any.whl (2.3MB) 100% |"""""""""""""""""""""""""""""""| 2.3MB 221kB/s 수집 docutils>=0.10 (에서 awscli) 다운로드 docutils-0.12.tar.gz (1.6MB) 100% |"""""""""""""""""""""""""""""""| 1.6MB 328kB/s 수집 pyasn1>=0.1.3 (에서 rsa<=3.3.0,>=3.1.2->awscli) 사용 캐시 pyasn1-0.1.9-py2.py3-없음-any.whl 수집 선물<4.0.0,>=2.2.0 (에서 s3transfer==0.0.1->awscli) 사용 캐시 선물-3.0.5-py2-없음-any.whl 수집 jmespath<1.0.0,>=0.7.1 (에서 보토코어==1.4.18->awscli) 다운로드 jmespath-0.9.0-py2.py3-없음-any.whl 수집 python-날짜<3.0.0,>=2.1 (에서 보토코어==1.4.18->awscli) 다운로드 python_dateutil-2.5.3-py2.py3-없음-any.whl (201kB) 100% |"""""""""""""""""""""""""""""""| 204kB 2.4MB/s 수집 여섯>=1.5 (에서 python-날짜<3.0.0,>=2.1->보토코어==1.4.18->awscli) 사용 캐시 여섯-1.10.0-py2.py3-없음-any.whl 빌딩 바퀴 에 대한 수집 패키지: colorama, docutils 실행 중 설정.py bdist_wheel 에 대한 colorama ... 완료 저장됨 in 디렉토리: /사용자/arungupta/라이브러리/캐시/pip/바퀴/21/c5/참조/63fb92293f3ad402644ccaf882903cacdb8fe87c80b62c84df 실행 중 설정.py bdist_wheel 에 대한 docutils ... 완료 저장됨 in 디렉토리: /사용자/arungupta/라이브러리/캐시/pip/바퀴/db/de/bd/b99b1e12d321fbc950766c58894c6576b1a73ae3131b29a151 성공적 built colorama docutils 설치 수집 패키지: pyasn1, rsa, 선물, jmespath, 여섯, python-날짜, docutils, 보토코어, s3transfer, colorama, awscli 성공적 설치된 awscli-1.10.27 보토코어-1.4.18 colorama-0.3.3 docutils-0.12 선물-3.0.5 jmespath-0.9.0 pyasn1-0.1.9 python-날짜-2.5.3 rsa-3.3 s3transfer-0.0.1 여섯-1.10.0 |
CLI를 구성합니다:
1 2 3 4 5 |
aws 구성 AWS 액세스 키 ID [****************Q5FQ]: YOUR 액세스 KEY ID AWS 비밀 액세스 키 [****************thBR]: YOUR 비밀 액세스 KEY 기본값 지역 이름 [우리-west-1]: 기본값 출력 형식 [없음]: |
액세스 키 ID와 비밀 액세스 키를 입력합니다. 이 키는 다음 설명에 따라 얻을 수 있습니다. 액세스 키 ID와 비밀 액세스 키 받기.
AWS 보안 그룹 생성
이전에 다음을 사용하여 서버를 프로비저닝한 경우 Amazon 원클릭 라는 이름의 보안 그룹 카우치베이스 서버 커뮤니티 에디션 -4-0-0-AutogenByAWSMP-
는
를 생성합니다. 이 보안 그룹에는 Couchbase 클러스터를 만드는 데 필요한 모든 포트가 승인되어 있으며 인스턴스를 만드는 데 사용할 수 있습니다. 또는 새 보안 그룹을 만들고 포트에 명시적으로 권한을 부여할 수 있습니다.
보안 그룹을 만듭니다:
1 2 3 4 |
aws ec2 create-보안-그룹 --그룹-이름 my-카우치베이스-sg --설명 "나의 카우치베이스 보안 그룹" { "GroupId": "SG-C9BB19AD" } |
보안 그룹에서 포트를 승인합니다:
1 2 3 4 |
aws ec2 권한 부여-보안-그룹-진입 --그룹-이름 my-카우치베이스-sg --포트 8091-8093 --프로토콜 tcp --cidr 0.0.0.0/0 aws ec2 권한 부여-보안-그룹-진입 --그룹-이름 my-카우치베이스-sg --포트 11209-11211 --프로토콜 tcp --cidr 0.0.0.0/0 aws ec2 권한 부여-보안-그룹-진입 --그룹-이름 my-카우치베이스-sg --포트 21100-21299 --프로토콜 tcp --cidr 0.0.0.0/0 aws ec2 권한 부여-보안-그룹-진입 --그룹-이름 my-카우치베이스-sg --포트 4369 --프로토콜 tcp --cidr 0.0.0.0/0 |
AWS 키 쌍 생성
생성에 대해 자세히 알아보기 키 쌍. 키 쌍을 만듭니다:
1 |
aws ec2 create-키-pair --키-이름 my-카우치베이스-키 > my-카우치베이스-키.pem |
나중에 사용되므로 키 이름을 기록해 두세요.
아마존에서 카우치베이스 노드 생성
새로 만든 보안 그룹을 다음과 같이 사용하여 두 개의 인스턴스를 만듭니다:
1 |
aws ec2 실행-인스턴스 --이미지-id ami-DB95FFBB --카운트 2 --인스턴스-유형 m3.large --키-이름 my-카우치베이스-키 --보안-그룹 my-카우치베이스-sg |
인스턴스 수는 다음을 사용하여 지정합니다. --카운트 2
. AMI ID는 EC2 콘솔을 사용하여 얻을 수 있습니다: https://us-west-1.console.aws.amazon.com/ec2/v2/home?region=us-west-1#Images:visibility=public-images;search=couchbase;sort=desc:name.
또는 미리 만든 보안 그룹을 다음과 같이 사용하여 두 개의 인스턴스를 만듭니다:
1 |
aws ec2 실행-인스턴스 --이미지-id ami-DB95FFBB --카운트 2 --인스턴스-유형 m3.large --키-이름 my-카우치베이스-키 --보안-그룹 "카우치베이스 서버 커뮤니티 에디션-4-0-0-AutogenByAWSMP-" |
출력은 다음과 같이 표시됩니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
{ "OwnerId": "598307997273", "ReservationId": "r-cb952179", "그룹": [], "인스턴스": [ { "모니터링": { "State": "disabled" }, "PublicDnsName": "", "RootDeviceType": "ebs", "State": { "코드": 0, "이름": "pending" }, "EbsOptimized": false, "LaunchTime": "2016-05-16T16:11:59.000Z", "PrivateIpAddress": "172.31.15.200", "제품 코드": [], "VpcId": "VPC-C561F9A0", "StateTransitionReason": "", "InstanceId": "i-90199025", "ImageId": "ami-db95ffbb", "PrivateDnsName": "ip-172-31-15-200.us-west-1.compute.internal", "키 이름": "내-카우치베이스-키", "SecurityGroups": [ { "그룹 이름": "my-couchbase-sg", "GroupId": "SG-6172DD05" } ], "ClientToken": "", "SubnetId": "subnet-625bd23b", "인스턴스 유형": "m3.large", "네트워크 인터페이스": [ { "상태": "사용 중", "MacAddress": "06:B1:52:A6:87:F7", "SourceDestCheck": true, "VpcId": "VPC-C561F9A0", "설명": "", "네트워크인터페이스아이디": "eni-86ac6fdb", "PrivateIpAddresses": [ { "PrivateDnsName": "ip-172-31-15-200.us-west-1.compute.internal", "기본": true, "PrivateIpAddress": "172.31.15.200" } ], "PrivateDnsName": "ip-172-31-15-200.us-west-1.compute.internal", "첨부 파일": { "상태": "첨부", "DeviceIndex": 0, "DeleteOnTermination": true, "AttachmentId": "eni-attach-530b7293", "AttachTime": "2016-05-16T16:11:59.000Z" }, "그룹": [ { "그룹 이름": "my-couchbase-sg", "GroupId": "SG-6172DD05" } ], "SubnetId": "subnet-625bd23b", "OwnerId": "598307997273", "PrivateIpAddress": "172.31.15.200" } ], "SourceDestCheck": true, "배치": { "테넌시": "default", "그룹 이름": "", "AvailabilityZone": "US-WEST-1C" }, "하이퍼바이저": "xen", "블록 디바이스 매핑": [], "건축": "x86_64", "StateReason": { "메시지": "pending", "코드": "pending" }, "RootDeviceName": "/dev/xvda", "가상화 유형": "hvm", "AmiLaunchIndex": 0 }, { "모니터링": { "State": "disabled" }, "PublicDnsName": "", "RootDeviceType": "ebs", "State": { "코드": 0, "이름": "pending" }, "EbsOptimized": false, "LaunchTime": "2016-05-16T16:11:59.000Z", "PrivateIpAddress": "172.31.15.201", "제품 코드": [], "VpcId": "VPC-C561F9A0", "StateTransitionReason": "", "InstanceId": "i-93199026", "ImageId": "ami-db95ffbb", "PrivateDnsName": "ip-172-31-15-201.us-west-1.compute.internal", "키 이름": "내-카우치베이스-키", "SecurityGroups": [ { "그룹 이름": "my-couchbase-sg", "GroupId": "SG-6172DD05" } ], "ClientToken": "", "SubnetId": "subnet-625bd23b", "인스턴스 유형": "m3.large", "네트워크 인터페이스": [ { "상태": "사용 중", "MacAddress": "06:83:E8:06:2A:F1", "SourceDestCheck": true, "VpcId": "VPC-C561F9A0", "설명": "", "네트워크인터페이스아이디": "eni-81ac6fdc", "PrivateIpAddresses": [ { "PrivateDnsName": "ip-172-31-15-201.us-west-1.compute.internal", "기본": true, "PrivateIpAddress": "172.31.15.201" } ], "PrivateDnsName": "ip-172-31-15-201.us-west-1.compute.internal", "첨부 파일": { "상태": "첨부", "DeviceIndex": 0, "DeleteOnTermination": true, "AttachmentId": "eni-attach-680b72a8", "AttachTime": "2016-05-16T16:11:59.000Z" }, "그룹": [ { "그룹 이름": "my-couchbase-sg", "GroupId": "SG-6172DD05" } ], "SubnetId": "subnet-625bd23b", "OwnerId": "598307997273", "PrivateIpAddress": "172.31.15.201" } ], "SourceDestCheck": true, "배치": { "테넌시": "default", "그룹 이름": "", "AvailabilityZone": "US-WEST-1C" }, "하이퍼바이저": "xen", "블록 디바이스 매핑": [], "건축": "x86_64", "StateReason": { "메시지": "pending", "코드": "pending" }, "RootDeviceName": "/dev/xvda", "가상화 유형": "hvm", "AmiLaunchIndex": 1 } ] } |
인스턴스 상태는 다음과 같이 확인할 수 있습니다:
1 |
aws ec2 설명-인스턴스-상태 --인스턴스-ids `aws ec2 설명-인스턴스 --쿼리 '예약[*].인스턴스[*].[인스턴스아이디]' --필터 이름=인스턴스-상태-이름,값=실행 중 --출력 텍스트` |
그리고 출력을 다음과 같이 표시합니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
{ "인스턴스 상태": [ { "InstanceId": "i-90199025", "인스턴스 상태": { "코드": 16, "이름": "running" }, "AvailabilityZone": "US-WEST-1C", "시스템 상태": { "상태": "초기화", "세부 정보": [ { "상태": "초기화", "이름": "도달 가능성" } ] }, "인스턴스 상태": { "상태": "초기화", "세부 정보": [ { "상태": "초기화", "이름": "도달 가능성" } ] } }, { "InstanceId": "i-93199026", "인스턴스 상태": { "코드": 16, "이름": "running" }, "AvailabilityZone": "US-WEST-1C", "시스템 상태": { "상태": "초기화", "세부 정보": [ { "상태": "초기화", "이름": "도달 가능성" } ] }, "인스턴스 상태": { "상태": "초기화", "세부 정보": [ { "상태": "초기화", "이름": "도달 가능성" } ] } } ] } |
여기서 상태는 다음과 같이 표시됩니다. 초기화
. 인스턴스가 프로비저닝되는 데는 몇 분 정도 걸립니다. 모든 검사를 통과한 인스턴스는 다음과 같이 확인할 수 있습니다:
1 |
aws ec2 설명-인스턴스-상태 --필터 이름=인스턴스-상태.도달 가능성,값=통과 --인스턴스-ids `aws ec2 설명-인스턴스 --쿼리 '예약[*].인스턴스[*].[인스턴스아이디]' --필터 이름=인스턴스-상태-이름,값=실행 중 --출력 텍스트` |
처음에는 결과가 다음과 같이 표시됩니다:
1 2 3 |
{ "인스턴스 상태": [] } |
그러나 모든 인스턴스가 검사를 통과하면 결과는 다음과 같습니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
{ "인스턴스 상태": [ { "InstanceId": "i-90199025", "인스턴스 상태": { "코드": 16, "이름": "running" }, "AvailabilityZone": "US-WEST-1C", "시스템 상태": { "상태": "ok", "세부 정보": [ { "상태": "통과", "이름": "도달 가능성" } ] }, "인스턴스 상태": { "상태": "ok", "세부 정보": [ { "상태": "통과", "이름": "도달 가능성" } ] } }, { "InstanceId": "i-93199026", "인스턴스 상태": { "코드": 16, "이름": "running" }, "AvailabilityZone": "US-WEST-1C", "시스템 상태": { "상태": "ok", "세부 정보": [ { "상태": "통과", "이름": "도달 가능성" } ] }, "인스턴스 상태": { "상태": "ok", "세부 정보": [ { "상태": "통과", "이름": "도달 가능성" } ] } } ] } |
여기서 상태는 다음과 같이 표시됩니다. 통과
.
카우치베이스 노드 구성
각 카우치베이스 노드는 다음 세부 정보로 프로비저닝해야 합니다:
- 메모리
- 서비스(인덱스, 데이터 및 쿼리)
- 인증 자격 증명(사용자 이름:
관리자
비밀번호를 입력합니다:비밀번호
) - 로드
여행 샘플
버킷
스크립트를 사용하여 이 작업을 수행할 수 있습니다:
1 2 3 4 5 6 7 |
에 대한 IP in "$@" do curl -v -X POST http://$ip:8091/pools/default -d memoryQuota=300 -d indexMemoryQuota=300 curl -v http://$ip:8091/node/controller/setupServices -d services=kv%2Cn1ql%2Cindex curl -v http://$ip:8091/settings/web -d 포트=8091 -d 사용자 이름=관리자 -d 비밀번호=비밀번호 curl -v -u 관리자:비밀번호 -X POST http://$ip:8091/sampleBuckets/install -d '["travel-sample"]'' 완료 |
이 정보는 다음에서 확인할 수 있습니다: https://github.com/arun-gupta/couchbase-amazon/blob/master/configure-instance.sh. 로 호출할 수 있습니다:
1 |
./구성-인스턴스.sh `aws ec2 설명-인스턴스 --쿼리 '예약[*].인스턴스[*].[PublicDnsName]' --필터 이름=인스턴스-상태-이름,값=실행 중 --출력 텍스트` |
그리고 출력을 다음과 같이 표시합니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
* 시도 중 52.53.171.49... * 연결됨 에 ec2-52-53-171-49.us-west-1.compute.amazonaws.com (52.53.171.49) 포트 8091 (#0) > POST /풀/기본값 HTTP/1.1 > 호스트: ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091 > 사용자-에이전트: curl/7.43.0 > 수락: */* > 콘텐츠 길이: 36 > 콘텐츠 유형: application/x-www-form-urlencoded > * 업로드가 완전히 전송되었습니다: 36바이트 중 36바이트 < http/1.1 200 ok < 서버: 카우치베이스 서버 < 프래그마: 캐시 없음 < 날짜 월, 16 May 2016 16:18:47 GMT < 콘텐츠 길이: 0 < 캐시 제어: 캐시 없음 POST /node/controller/setupServices HTTP/1.1 > Host: ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091 > 사용자-에이전트: curl/7.43.0 > 수락을 클릭합니다: */* > 콘텐츠-길이: 26 > 콘텐츠-유형: 애플리케이션/x-www-양식-urlencoded > * 업로드 완전히 보낸 꺼짐: 26 out 의 26 바이트 < HTTP/1.1 200 확인 < 서버: 카우치베이스 서버 < Pragma: 아니요-캐시 < 날짜: 월, 16 5월 2016 16:18:47 GMT < 콘텐츠-길이: 0 < 캐시-제어: 아니요-캐시 < * 연결 ec2-52-53-171-49.us-west-1.compute.amazonaws.com 호스트에 #0 그대로 유지 * 52.53.171.49 시도 중... * ec2-52-53-171-49.us-west-1.compute.amazonaws.com(52.53.171.49) 포트 8091(#0)에 연결됨 > POST /settings/web HTTP/1.1 > 호스트: ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091 > 사용자-에이전트: curl/7.43.0 > 수락: */* > 콘텐츠 길이: 50 > 콘텐츠 유형: application/x-www-form-urlencoded > * 업로드가 완전히 전송되었습니다: 50바이트 중 50바이트 < http/1.1 200 ok < 서버: 카우치베이스 서버 < 프래그마: 캐시 없음 < 날짜 월, 16 May 2016 16:18:47 GMT < 콘텐츠 유형: 애플리케이션/json < 콘텐츠 길이: 78 < 캐시 제어: 캐시 없음 POST /sampleBuckets/설치 HTTP/1.1 > Host: ec2-52-53-171-49.us-west-1.compute.amazonaws.com:8091 > 인증: 기본 QWRtaW5pc3RyYXRvcjpwYXNzd29yZA== > 사용자-에이전트: curl/7.43.0 > 수락을 클릭합니다: */* > 콘텐츠-길이: 17 > 콘텐츠-유형: 애플리케이션/x-www-양식-urlencoded > * 업로드 완전히 보낸 꺼짐: 17 out 의 17 바이트 < HTTP/1.1 202 수락됨 < 서버: 카우치베이스 서버 < Pragma: 아니요-캐시 < 날짜: 월, 16 5월 2016 16:18:47 GMT < 콘텐츠-유형: 애플리케이션/json < 콘텐츠-길이: 2 < 캐시-제어: 아니요-캐시 < * 연결 ec2-52-53-171-49.us-west-1.compute.amazonaws.com을 호스트하는 #0은 그대로 유지됨 []* 52.53.239.100을 시도 중... * ec2-52-53-239-100.us-west-1.compute.amazonaws.com(52.53.239.100) 포트 8091(#0)에 연결됨 > POST /pools/default HTTP/1.1 > 호스트: ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091 > 사용자-에이전트: curl/7.43.0 > 수락: */* > 콘텐츠 길이: 36 > 콘텐츠 유형: application/x-www-form-urlencoded > * 업로드가 완전히 전송되었습니다: 36바이트 중 36바이트 < http/1.1 200 ok < 서버: 카우치베이스 서버 < 프래그마: 캐시 없음 < 날짜 월, 16 May 2016 16:18:48 GMT < 콘텐츠 길이: 0 < 캐시 제어: 캐시 없음 POST /node/controller/setupServices HTTP/1.1 > Host: ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091 > 사용자-에이전트: curl/7.43.0 > 수락을 클릭합니다: */* > 콘텐츠-길이: 26 > 콘텐츠-유형: 애플리케이션/x-www-양식-urlencoded > * 업로드 완전히 보낸 꺼짐: 26 out 의 26 바이트 < HTTP/1.1 200 확인 < 서버: 카우치베이스 서버 < Pragma: 아니요-캐시 < 날짜: 월, 16 5월 2016 16:18:48 GMT < 콘텐츠-길이: 0 < 캐시-제어: 아니요-캐시 < * 연결 #0 호스트 ec2-52-53-239-100.us-west-1.compute.amazonaws.com 그대로 유지 * 52.53.239.100 시도 중... * ec2-52-53-239-100.us-west-1.compute.amazonaws.com(52.53.239.100) 포트 8091(#0)에 연결됨 > POST /settings/web HTTP/1.1 > 호스트: ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091 > 사용자-에이전트: curl/7.43.0 > 수락: */* > 콘텐츠 길이: 50 > 콘텐츠 유형: application/x-www-form-urlencoded > * 업로드가 완전히 전송되었습니다: 50바이트 중 50바이트 < http/1.1 200 ok < 서버: 카우치베이스 서버 < 프래그마: 캐시 없음 < 날짜 월, 16 May 2016 16:18:48 GMT < 콘텐츠 유형: 애플리케이션/json < 콘텐츠 길이: 79 < 캐시 제어: 캐시 없음 POST /sampleBuckets/설치 HTTP/1.1 > Host: ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091 > 인증: 기본 QWRtaW5pc3RyYXRvcjpwYXNzd29yZA== > 사용자-에이전트: curl/7.43.0 > 수락을 클릭합니다: */* > 콘텐츠-길이: 17 > 콘텐츠-유형: 애플리케이션/x-www-양식-urlencoded > * 업로드 완전히 보낸 꺼짐: 17 out 의 17 바이트 < HTTP/1.1 202 수락됨 < 서버: 카우치베이스 서버 < Pragma: 아니요-캐시 < 날짜: 월, 16 5월 2016 16:18:48 GMT < 콘텐츠-유형: 애플리케이션/json < 콘텐츠-길이: 2 < 캐시-제어: 아니요-캐시 < * 연결 #0을 호스트하는 ec2-52-53-239-100.us-west-1.compute.amazonaws.com은 그대로 유지합니다. [] |
이것은 다음을 호출합니다. Couchbase REST API 를 클릭하여 각 Couchbase 노드를 구성합니다. 이제 각 Couchbase 노드가 구성되었으므로 해당 노드에 액세스해 보겠습니다. 공개 찾기
인스턴스의 IP 주소입니다:
1 |
aws ec2 설명-인스턴스 --쿼리 '예약[*].인스턴스[*].[PublicDnsName]' --필터 이름=인스턴스-상태-이름,값=실행 중 --출력 텍스트 |
출력은 다음과 같이 표시됩니다:
1 2 |
ec2-52-53-171-49.us-west-1.compute.amazonaws.com ec2-52-53-239-100.us-west-1.compute.amazonaws.com |
IP 주소 중 하나를 선택하고 :8091로 접속하여 출력을 확인합니다:
각 카우치베이스
노드는 사용자 이름을 관리자로, 비밀번호를 비밀번호로 구성합니다. 자격 증명을 입력하면 Couchbase 웹 콘솔이 표시됩니다:
를 클릭합니다.
서버 노드를 확인하여 클러스터에 단일 노드만 있는지 확인합니다:
카우치베이스 클러스터 생성 및 리밸런싱
모든 Couchbase 서버 노드는 동일하게 생성됩니다. 따라서 Couchbase 클러스터는 증가하는 애플리케이션 수요를 충족하기 위해 수평적으로 확장할 수 있습니다. 독립적으로 실행되는 Couchbase 노드는 클러스터에 추가할 수 있습니다. 서버 추가
CLI 명령을 실행합니다. 이 과정은 일반적으로 2단계로 진행됩니다. 첫 번째 단계는 하나 이상의 노드를 추가하는 것입니다. 두 번째 단계는 기존 노드의 데이터를 업데이트된 클러스터 전체에서 재조정하는 클러스터 재조정입니다.
저희의 경우, 각 AMI에서 Couchbase 노드가 실행되고 있습니다. 한 Couchbase 노드의 IP 주소를 선택하고 다른 노드의 IP 주소를 추가합니다. 이 작업은 스크립트를 사용하여 수행할 수 있습니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
내보내기 기본=$1 shift 에 대한 IP in "$@" do $COUCHBASE_CLI 서버-추가 --클러스터=$기본:8091 --사용자 관리자 --비밀번호 비밀번호 --서버-추가=$IP --서버-추가-사용자 이름=관리자 --서버-추가-비밀번호=비밀번호 완료 |
이 스크립트는 다음에서 사용할 수 있습니다. https://github.com/arun-gupta/couchbase-amazon/blob/master/create-cluster.sh 로 호출할 수 있습니다:
1 |
./create-클러스터.sh `aws ec2 설명-인스턴스 --쿼리 '예약[*].인스턴스[*].[PublicDnsName]' --필터 이름=인스턴스-상태-이름,값=실행 중 --출력 텍스트` |
그리고 출력을 다음과 같이 표시합니다:
1 |
성공: 서버-추가 ec2-52-53-239-100.us-west-1.compute.amazonaws.com:8091 |
마지막으로 스크립트를 사용하여 클러스터의 밸런스를 재조정합니다:
1 2 3 4 5 6 7 8 9 10 11 12 |
내보내기 기본=$1 shift 에 대한 IP in "$@" do $COUCHBASE_CLI 재조정 --클러스터=$기본:8091 --사용자 관리자 --비밀번호 비밀번호 --서버-추가-사용자 이름=관리자 --서버-추가-비밀번호=비밀번호 완료 |
출력은 다음과 같이 표시됩니다:
1 2 |
정보: 리밸런싱 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 성공: 재조정 클러스터 |
클러스터가 실행되면 다음을 시도해 보세요. 헬로우 카우치베이스 예제.
카우치베이스 노드 종료
마지막으로 클러스터를 죽이는 것은 매우 간단합니다:
1 |
aws ec2 종료-인스턴스 --인스턴스-ids `aws ec2 설명-인스턴스 --쿼리 '예약[*].인스턴스[*].[인스턴스아이디]' --필터 이름=인스턴스-상태-이름,값=실행 중 --출력 텍스트` |
이 블로그에서는 AWS CLI를 사용하여 Couchbase 클러스터를 스핀업, 확장 및 리밸런싱하는 방법을 설명합니다. 모든 스크립트는 다음 링크에서 확인할 수 있습니다. https://github.com/arun-gupta/couchbase-amazon.
추가 참고 자료 ...
- 카우치베이스 서버 개발자 포털
- 헬로우 카우치베이스 예제
- 다음에 대한 질문 스택오버플로, 포럼 또는 슬랙 채널
- 팔로우하기 @couchbasedev
- Couchbase 4.5 베타