가상화된 플랫폼을 위한 모범 사례 는 Amazon Web Services 및 Azure와 같은 가상화된 플랫폼에서 Couchbase를 실행하기 위한 모범 사례를 제공합니다.
또한 Docker 컨테이너로 실행하기 위한 몇 가지 권장 사항도 제공합니다.
권장 사항 중 하나는 Couchbase 노드별 데이터를 로컬 폴더에 매핑하는 것입니다.
이에 대해 좀 더 자세히 알아봅시다.
암시적 컨테이너별 스토리지
Couchbase 컨테이너가 다음과 같이 시작되는 경우:
1 |
도커 실행 -d -p 8091-8093:8091-8093 -p 11210:11210 --이름 db 카우치베이스/서버:샌드박스 |
이 컨테이너:
- 다음을 사용하여 분리 모드로 시작합니다.
-d
- 다양한 쿼리, 캐싱 및 관리 포트는 다음을 사용하여 매핑됩니다.
-p
- 이름은 다음을 사용하여 제공됩니다.
--이름
- 이미지는
카우치베이스/서버:샌드박스
기본적으로 컨테이너에 대한 데이터는 관리되는 볼륨. 를 사용하여 볼륨 마운트 확인 도커 인스펙트
명령이 표시됩니다:
1 2 3 4 5 6 7 8 9 10 11 12 |
도커 검사 --형식 '{{json .마운트 }}' db | jq [ { "이름": "aa3c06f9c506d52bfb5d3d265f7b63045df0fea996998f12ce08b2543345e948", "소스": "/var/lib/docker/volumes/aa3c06f9c506d52bfb5d3d265f7b63045df0fea996998f12ce08b2543345e948/_data", "목적지": "/opt/couchbase/var", "드라이버": "local", "모드": "", "RW": true, "전파": "" } ] |
카우치베이스의 데이터는 다음 값으로 정의된 컨테이너 파일시스템에 저장됩니다. 출처
속성을 확인합니다. Mac 또는 Windows용 Docker의 경우 루트 파일시스템에 로그인하여 확인할 수 있습니다:
1 |
도커 실행 -it --pid=호스트 --특권 debian:jessie nsenter -t 1 -m -p -n |
Linux 박스에서는 호스트 파일 시스템에서 직접 확인할 수 있습니다.
이제 데이터 디렉토리를 볼 수 있습니다:
1 2 |
010e52853bc6:~# ls /var/lib/docker/volumes | grep aa3c aa3c06f9c506d52bfb5d3d265f7b63045df0fea996998f12ce08b2543345e948 |
컨테이너를 새로 실행할 때 새 디렉터리가 만들어집니다. 이 디렉터리는 컨테이너가 중지 및 제거되더라도 여전히 존재하지만 더 이상 쉽게 액세스할 수 없습니다. 따라서 컨테이너를 다시 시작할 때 데이터가 보존되지 않습니다. 볼륨은 명시적으로
명령을 사용하여 컨테이너와 함께 제거합니다:
1 |
도커 rm -v db |
컨테이너가 종료되면 애플리케이션의 전체 상태가 손실됩니다.
명시적 호스트 디렉터리 매핑
이제 명시적 볼륨 매핑을 사용하여 Couchbase 컨테이너를 시작해 보겠습니다:
1 |
도커 실행 -d -p 8091-8093:8091-8093 -p 11210:11210 --이름 db -v ~/카우치베이스:/opt/카우치베이스/var 카우치베이스/서버:샌드박스 |
이 컨테이너는 앞서 시작한 컨테이너와 매우 유사합니다. 가장 큰 차이점은 호스트의 디렉터리가 ~/couchbase
는 컨테이너의 디렉터리에 매핑됩니다. /opt/couchbase/var
. 카우치베이스 컨테이너 지속
의 모든 데이터 /opt/couchbase/var
디렉터리를 추가합니다. 이제 해당 디렉터리가 호스트 파일시스템의 디렉터리에 매핑됩니다. 이렇게 하면 호스트 파일시스템 외부에서 컨테이너의 상태를 유지할 수 있습니다. 컨테이너의
는 Docker에서 사용하는 유니온 파일시스템을 우회하여 호스트 파일시스템을 컨테이너에 노출합니다. 이렇게 하면 컨테이너가 다시 시작될 때에도 상태를 유지할 수 있습니다. 새 컨테이너는 정확히 동일한 볼륨 매핑으로 시작하기만 하면 됩니다. 자세한 내용
로 볼 수 있습니다:
1 |
도커 검사 --형식 '{{json .마운트 }}' db | jq |
jq 는 별도로 설치해야 하는 JSON 프로세서입니다. 출력은 다음과 같이 표시됩니다:
1 2 3 4 5 6 7 8 9 |
[ { "소스": "/사용자/아룽업타/카우치베이스", "목적지": "/opt/couchbase/var", "모드": "", "RW": true, "전파": "rprivate" } ] |
소스 및 대상 디렉터리가 표시됩니다. RW
는 볼륨이 읽기/쓰기 상태임을 나타냅니다. 컨테이너가 Mac용 Docker를 사용하여 시작된 경우 다음과 같이 표시됩니다. 카우치베이스 웹 콘솔 는
http://localhost:8091 에서 액세스할 수 있습니다. The 데이터 버킷
탭에는 기본 여행 샘플
버킷:
를 클릭합니다. 새 데이터 버킷 만들기
을 클릭하여 새 데이터 버킷을 만듭니다. 이름을 지정합니다. 샘플
:
그리고 데이터 버킷
탭이 새로 생성된 버킷으로 업데이트됩니다:
이제 컨테이너를 중지하고 제거합니다:
1 2 |
도커 중지 db 도커 rm db |
동일한 명령을 사용하여 컨테이너를 다시 시작합니다:
1 |
도커 실행 -d -p 8091-8093:8091-8093 -p 11210:11210 --이름 db -v ~/카우치베이스:/opt/카우치베이스/var 카우치베이스/서버:샌드박스 |
데이터 버킷
탭을 클릭하면 Couchbase 웹 콘솔에 동일한 두 개의 버킷이 표시됩니다. 이 경우 컨테이너가 다른 호스트에서 시작되면 상태를 사용할 수 없습니다. 또는 호스트가 죽으면 상태가 손실됩니다.
컨테이너에서 지속성을 관리하는 보다 강력하고 완벽한 대안은 다음과 같은 공유 네트워크 파일시스템을 사용하는 것입니다. Ceph, GlusterFS 또는 네트워크 파일 시스템.
다른 일반적인 접근 방식은 다음을 사용하는 것입니다. 도커 볼륨 플러그인 같은 Flocker ClusterHQ 또는 소프트웨어 정의 스토리지에서
다음과 같은 PortWorx. 이러한 모든 저장 기술은 멀티 컨테이너 멀티 호스트 환경에서 컨테이너의 상태를 저장하는 방법을 간소화합니다. 향후 블로그에서 이러한 기술을 자세히 다룰 예정입니다.
자세한 내용은 컨테이너에서 데이터 관리.
couchbase.com/containers 에서는 다양한 컨테이너 프레임워크에서 Couchbase를 실행하는 방법에 대한 자세한 내용을 제공합니다.
Couchbase에 대한 자세한 정보:
이후에는 컨테이너를 다시 시작하면 컨테이너의 IP 주소가 변경되므로 위의 접근 방식이 작동하지 않습니다.
참조:
https://github.com/couchbase/docker/issues/82
https://github.com/couchbase/kubernetes/issues/27