1

Google Cloud에는 두 개의 Datastax Cluster가 있습니다 (두 개의 다른 계정). 두 클러스터는 서로 다른 키 공간 (데이터)을 가지고 있습니다.Google Cloud에있는 Datastax 클러스터 두 개를 결합하십시오.

두 클러스터를 모두 결합하고자하며로드를 처리하기 위해 두 클러스터 노드를 모두 활용하고자합니다.

데이터 가져 오기/내보내기를 원하지 않습니다. 두 클러스터가 작고 부하를 처리 할 수 ​​없기 때문에 (클러스터를 클럽에두고 노드를 활용하여 부하를 처리하고 싶습니다.)

어쨌든 우리가 이것을 할 수 있습니까, 클러스터가 클라우드에 있든 없든간에? 그것은 행할 수 있지만 까다 롭습니다

답변

2

감사합니다.

카산드라는 클러스터 이름을 기반으로 어떤 노드가 클러스터의 일부인지 알고 있습니다. 두 클러스터에서 클러스터 이름이 같지 않으면 클러스터의 이름을 동일하게 변경하십시오.

두 번째 단계는 하나의 클러스터를 다른 노드를 연결하는 상위 클러스터로 사용하는 것입니다. 이 것을 부모 클러스터라고하고 다른 하나는 합류 클러스터라고합시다. 이 단계에서는 조인 클러스터에있는 키 공간과 열 패밀리를 상위 클러스터와 동일하게 정의하십시오. 이 단계에서 상위 클러스터에는 키 공간 정의가 있지만 가입 클러스터의 데이터는 없습니다. 한편, 참여 클러스터에서는 상위 클러스터에있는 키 공간을 동일한 f}으로 정의해야합니다.

두 클러스터의 노드는 통신 할 수 있도록 공용 인터페이스가 있어야합니다. Google Cloud에서이 작업을 수행하는 방법을 잘 모르겠습니다 만 두 계정 모두에서 인스턴스에 공용 인터페이스를 제공 할 수 있다고 확신합니다. 그런 다음이 두 클러스터를 카산드라 개념의 두 개의 서로 다른 데이터 센터로 간주하고 모든 머신이 서로 카산드라 포트에 액세스 할 수있게되면 각 클러스터에서 cassandra.yaml을 변경하고 다른 클러스터의 노드를 추가합니다. 등록 정보 파일 스 니치를 사용하여 복제를 관리하는 경우이를 업데이트하여 모든 노드와 해당 위치를 인식 할 수 있도록해야합니다.

마지막으로 롤링을 다시 시작하고 키 공간 복제 요소를 변경하여 원하는대로 복제하십시오.

업데이트 : 공용 인터페이스가 활성화되면 공개 인터페이스 간의 복제를 위해 암호화를 올바르게 설정하고 해당 공용 인터페이스에 대한 액세스를 모든 cassandra의 IP에만 제한해야한다는 Daniel Compton의 설명을 추가합니다 노드.

클러스터의 이름을 바꿀 수 있으며 이전에이 프로세스를 한 번 수행했습니다.

클러스터의 이름을 바꾸려면 cassandra.yaml에서 클러스터 이름을 변경하십시오. 그런 다음 각 노드의 system.local 테이블을 변경하여 해당 변경 사항을 반영하고 롤링을 다시 시작하십시오. 클러스터 이름을 변경의 세부 사항은 여기에서 찾을 수 있습니다 :

cassandra - Saved cluster name Test Cluster != configured name

+0

공개 인터페이스를 Cassandra 노드에 제공하면 공개적으로 액세스 할 수 있습니다. http://thelastpickle.com/blog/2015/09/30/hardening-cassandra-step-by-step-part-1-server-to-server.html을 할 수는 있지만 두 가지를 허용하는 것이 좋습니다. 프로젝트는 서로 다른 리소스에 액세스합니다. –

+0

이 답변은 대단히 용의주합니다. "첫 번째 단계는 클러스터 이름을 동일하게 변경하는 것입니다."- 어떻게 사용자가 그렇게 할 것을 제안합니까? 나는 그 충고가 실제로 가능하다는 것을 강력하게 의심한다. –

+0

둘 다 감사합니다. 귀하의 의견을 반영하도록 답변을 업데이트했습니다. – Arya

1

서로 다른 이름과 다른 스키마와 함께 두 개의 클러스터에 참가할 수 없습니다. 나쁜 일이 일어날 것입니다. 당신이해야 할 일은 하나의 데이터를 백업하고, 다른 노드에서 키 공간을 만들고, 'sstableloader'를 사용하여 데이터를 스트리밍 한 다음, 사실 이후에 새로운 노드를 부트 스트랩하는 것입니다.

클라우드를 사용하고 있기 때문에 가장 쉬운 옵션은 임시로 몇 개의 노드를 새 클러스터에 추가하고 데이터를 스트리밍 한 다음 이전 노드/클러스터를 제거하는 것입니다.영리 해지고 클러스터를 병합하는 것은 가치가있는 것보다 훨씬 고통 스러울 것입니다.

베어 메탈을 사용하면서 더 많은 하드웨어를 구매하기 위해 자본을 쓰고 싶지 않은 경우 영리해질 수는 있지만 클라우드에서는 그렇게 할 필요가 없습니다.