Couchbase를 대규모로 배포하는 자동화된 방법을 찾고 있는 관리자라면 더 이상 고민하지 마세요. 셰프 는 훌륭한 플랫폼 솔루션입니다. 한번 설정하면 인프라 규모에 관계없이 물리적, 가상 또는 클라우드 서버 수에 관계없이 작동할 수 있는 매우 깔끔한 솔루션입니다. Chef를 사용하면 코드를 사용하여 인프라 배포를 스크립팅할 수 있으므로 많은 노력 없이 프로비저닝 및 배포 프로세스를 자동화할 수 있습니다.
이 블로그에서는 카우치베이스 설치, 카우치베이스 노드 클러스터 설정, 버킷 추가, 마지막으로 클러스터 간 xdcr 복제 추가에 사용되는 셰프 레시피를 살펴보겠습니다.
시작하기 전에 - 셰프 서버, 요리책, 셰프 클라이언트의 기본 사항을 숙지하고 있어야 합니다. 셰프에는 대규모 설정을 유지하는 데 매우 유용한 템플릿, 레시피, 나이프 플러그인이 방대하게 쌓여 있습니다. http://wiki.opscode.com 에 이에 대한 좋은 예와 정보가 있습니다.
셰프 서버, 워크스테이션을 설정하고 일부 노드를 셰프 클라이언트로 추가합니다. 위의 3가지가 설정되면 Couchbase 쿡북을 작성할 준비가 된 것입니다. opscode 쿡북의 포크 버전은 여기에 있습니다. https://github.com/ketakigangal/couchbase
사전 요구 사항
다음 쿡북을 다운로드하기 전에 카우치베이스 쿡북을 설치하세요 - yum, apt-get, windows, build-essential
카우치베이스 쿡북 받기
git clone https://github.com/ketakigangal/couchbase
쿡북 리소스 및 사용 가능한 사용자 지정에 대해 간단히 살펴보기
시스템 요구 사항에 따라 노드 및 클러스터에 보다 유연한 속성, 리소스, 템플릿을 추가할 수 있습니다. 이상적 데이터 가방 사용 클러스터 이름을 정의하기 위해 여기서는 역할을 사용하여 "west_cluster"와 "east_cluster" 두 클러스터의 아주 간단한 구현을 설명했는데, 앞으로 더 자세히 설명하겠습니다.
속성
서버 및 클라이언트에 대한 기본 설정은 server.rb와 client.rb에 있습니다. 필요한 카우치베이스 버전, 사용자 이름/비밀번호를 server.rb의 속성에 반영해야 합니다. 예를 들어 다음은 서버 2.0.1-커뮤니티 에디션을 설치합니다.
기본값['couchbase']['서버']['edition'] = "커뮤니티"
기본값['couchbase']['서버']['버전'] = “2.0.1”
기본값['couchbase']['서버']['username'] = "관리자"
기본값['couchbase']['서버']['password'] = "비밀번호"
레시피
그리고 server.rb 그리고 client.rb 에는 각각 카우치베이스-서버와 클라이언트를 설치하고 설정하는 로직이 포함되어 있습니다. 또한 test_buckets.rb 에는 버킷을 생성하고 버킷 설정을 사용해 볼 수 있는 샘플 코드가 있습니다.
그리고 setup_cluster.rb 를 사용하여 클러스터를 설정할 수 있으며, 이를 위해서는 클러스터의 각 노드에 "west_cluster"()라는 역할이 할당되어야 합니다. 이를 실행하기 위한 전제 조건은 각 노드에 카우치베이스 서버가 설치 및 시작되어 있는지 확인하는 것입니다.
유사하게 setup_xdcr.rb 레시피를 사용하여 두 클러스터 간에 xdcr을 설정합니다. 이를 사용하기 위한 전제 조건은 이미 "east_cluster" 및 "west_cluster" 역할로 2개의 카우치베이스 클러스터가 설정되어 있어야 합니다.
* 참고: 이 스크립트를 실행하려면 두 개의 별도 클러스터에 대해 "east_cluster", "west_cluster" 역할이 할당된 노드가 있어야 합니다.
라이브러리
리소스와 공급자는 이 디렉토리의 노드, 클러스터, 버킷 수준에서 정의됩니다.
다음을 사용하여 쿡북을 업로드합니다.
나이프 요리책 업로드 카우치베이스
를 사용하여 run_list 노드에 레시피와 역할을 추가합니다.
나이프 노드 실행 목록 추가 fqdn-귀하의 노드 이름 "레시피[카우치베이스::서버]"
나이프 노드 실행 목록 추가 fqdn-귀하의 노드 이름 "레시피[카우치베이스::설정_클러스터]"
나이프 노드 실행 목록 추가 fqdn-귀하의 노드 이름 "레시피[카우치베이스::테스트_버킷]"
나이프 노드 실행 목록 추가 역할 fqdn-귀하의 노드 이름 'role[west_cluster]'
위는 실행을 위한 서버, setup_cluster, test_버킷 레시피를 추가합니다. (순서대로) 를 생성합니다. 여기서는 노드에 "west_cluster" 역할을 할당하여 west_cluster를 구성했습니다.
칼 표시 노드 FQDN-귀하의 노드 이름
"레시피[카우치베이스::서버]",
"레시피[카우치베이스::설정_클러스터]",
"레시피[카우치베이스::테스트_버킷]",
"role[west_cluster]"
셰프 서버에 요리책을 업로드한 후에는 셰프 클라이언트를 사용하여 요리책/레시피를 실행할 수 있습니다.
셰프-클라이언트
셰프-클라이언트로부터,
sudo chef-client (디버그 수준 로그 정보는 -l debug를 사용할 수 있습니다).
출력으로 다음과 같은 비슷한 메시지가 표시됩니다.
* couchbase_bucket[수정 % 수정] 작업 생성[2013-07-08T22:57:49-07:00] INFO: couchbase_bucket[수정된 % 수정] 작업 생성 처리 중(couchbase::test_buckets 77줄)
[2013-07-08T22:57:49-07:00] INFO: couchbase_bucket[수정된 % 수정] memory_quota_mb가 500으로 변경되었습니다.
[2013-07-08T22:57:49-07:00] INFO: 셰프 실행 완료 187.264660646 초
[2013-07-08T22:57:49-07:00] INFO: 리포트 핸들러 실행 중
[2013-07-08T22:57:49-07:00] INFO: 리포트 핸들러 완료
이제 준비가 완료되었습니다!
레시피 실행 단계 "setup_xdcr.rb"
나이프 역할 목록
east_cluster
west_cluster
나이프 노드 편집 FQDN-귀하의-노드-이름
"레시피[카우치베이스::설정_클러스터]",
"레시피[카우치베이스::테스트_버킷]",
"role[east_cluster]"
마찬가지로 west_cluster도 마찬가지입니다.
나이프 검색 노드 "role:west_cluster" -i
2 항목 발견
node1-fqdn
node2-fqdn
소스 클러스터에 "setup_xdcr" 레시피를 추가하여 xdcr을 설정합니다(예: "east_cluster").
나이프 노드 편집 FQDN-귀하의-노드-이름
"레시피[카우치베이스::설정_xdcr]",
"role[east_cluster]"
그러면 xdcr 원격 클러스터 레퍼런스가 생성되고 "east_cluster"에서 "west_cluster"로 복제가 시작됩니다.
대규모 클러스터의 경우 데이터백을 사용하면 클러스터를 정의하고 유지 관리하는 데 이상적입니다. 클러스터 운영을 위한 템플릿을 유지 관리하는 것과 마찬가지로 리소스 생성은 초기 설정에 유용합니다. 즐겨보세요!
안녕하세요, 케타키,
저는 \"couchbase\" 쿡북의 관리자입니다. 포크에서 변경한 내용을 다시 통합해 주시거나, 아니면 관리자에게 CouchBase에 대한 액세스 권한을 부여해 주셨으면 좋겠습니다. 연락을 주실 수 있나요?
- 줄리안(jdunn@opscode.com)
안녕하세요 줄리안,
물론 오프라인에서도 동기화할 수 있습니다.
- Ketaki
역할 파일이 어떻게 생겼는지 볼 수 있나요?
안녕하세요,
setup_cluster.rb 레시피에 문제가 있습니다. 오버라이드 속성에서 클러스터 이름을 가져올 수 있는 방법이 있나요? 역할 이름에서 클러스터 이름을 설정하는 것 같아서 FQDN을 사용할 수 없어서 로컬 호스트 파일 등을 사용하지 않고는 노드를 참여시키기가 어렵습니다.
클러스터_이름 재정의 속성이 무시되는 것 같습니다: 다음과 같은 오버라이드를 시도해 보았습니다:
{\"defaults\":{\"cluster_name\":\"default.fqdn.local\",\"couchbase\":{\"server\":{\"password\":\"changeoninstall\"}}},\"overrides\":{\"cluster_name\":\"override.fqdn.local\",\"couchbase\":{\"server\":{\"password\":\"changeoninstall\"}}}}
(default.fqdn.local 및 override.fqdn.local이 올바르게 확인되는 경우)
비밀번호 재정의는 잘 작동하지만 클러스터_이름은 무시되는 것 같습니다 :-(
어떤 도움이라도 감사하겠습니다.
감사합니다,
Alan
안녕하세요 Alan, 오버라이드 속성을 통해 클러스터_이름을 설정하는 이 문제를 해결할 수 있었나요?
안녕하세요 Terry - 죄송합니다만, 배포 후 수동으로 클러스터링을 하고 있습니다.
cluster_name은 setup_cluster.rb에 하드코딩됩니다.
#클러스터_이름 = node[\"클러스터_이름\"]
클러스터_이름 = \"west_cluster\"