2017-12-24 25 views
3

CockroachDB는 비교적 간단한 클러스터링 메커니즘을 가지고 있으므로 다른 바퀴벌레 머신의 호스트 이름을 가리키는 명령 행 옵션으로 DB를 초기화합니다 (그러나이 질문은 모든 피어 투 피어 클러스터 DB).CockroachDB는 Google Container Engine 클러스터, 상태 저장 세트에 걸쳐 클러스터됩니다.

바퀴벌레의 장점 중 하나는 대륙 내의 여러 지역에서 클러스터링 할 수 있다는 것입니다. 바퀴벌레는 좋은 k8s 설정을 게시하여 바퀴벌레 클러스터를 스테이트 풀 세트에 서게했습니다. this 구성을 참조하십시오.

나는 여러 지역의 두 GKE 클러스터에서 바퀴벌레 클러스터를 확장하는 방법을 찾고 있습니다. 지역간 DNS 및 연결은 실제로 문제가 아니지만 상태 저장 인스턴스를 처리하는 방법을 파악할 수는 없습니다. 클러스터 내부에는 바퀴벌레 바퀴벌레가있다. 이들이 교차 클러스터 주소 지정이 가능하도록하는 방법이 있습니까? 하나의 옵션은 nodeport로 공개하고 두 번째 클러스터의 인스턴스를 첫 번째 클러스터의 포트가있는 시스템으로 지정하는 것입니다. 그것은 해커처럼 보이며 기계가 다운되면 단일 실패 지점을 나타냅니다. 이 작업을 수행하는 방법에 대한 다른 아이디어가 있습니까? 나는 또한 k8 연맹을 탐구했으나, 나는이 문제를 실제로 해결하지 못한다고 생각한다.

최종 옵션 하나는로드 균형 조정기를 통해 각 인스턴스를 노출하는 것입니다. 나는 그다지 좋지는 않지만, 유일한 방법일까요?

답변

3

이것은 곧 놀아 볼만한 좋은 질문입니다. 당신은 합리적인 아이디어를 조사하고 있습니다. 여러분이 암시하는 핵심 문제는 모든 바퀴벌레 과정이 모든 바퀴벌레 과정을 개별적으로 처리 할 수 ​​있어야한다는 것입니다.

클러스터 페더레이션이 지난 12 개월에서 18 개월 사이에 얼마나 잘 발전했는지는 모르겠지만 이것이 실제로 해결되어야하는 곳입니다.

클러스터 페더레이션에서 큰 발전을 보이지 않는 "가장 쉬운"방법은 모든 cockroachdb 포드에 호스트 네트워킹을 사용하는 것입니다. 연결할 새 포드의 조인 주소로 몇 가지 알려진 컴퓨터 IP를 지정할 수 있습니다. 그러면 새 포드는 모두 서로 통신 할 수 있습니다. 이전에 StatefulSets (dnsPolicy: ClusterFirstWithHostNethostNetwork: true과 함께 설정)로이 작업을 했었지만 잘 지원되는 사용 사례인지는 잘 모르겠습니다. DaemonSet (레이블 선택기를 사용하여 특정 노드에서만 실행하는 것이 좋을 경우)을 사용하는 것이 좋습니다. 다음과 같은 것 : https://gist.github.com/a-robinson/ec2b86783ccbf053c83ba83170673d63

그다지 위풍 당당하지 않으면 불행히도 각 StatefulSet 인스턴스에 대한 서비스를 만드는 것이 가장 좋은 방법 일 것입니다. Kubernetes의 최근 변경 사항에 따라 각 광고 모음에 대해 별도의 라벨이 만들어져 이전보다 크기가 더 간단 해졌습니다. https://github.com/kubernetes/kubernetes/pull/55329

다른 제안 사항을보고 싶습니다. 모든 종류의 수동 또는 인프라 관련.