source

kubernetes/docker 군집에 mariadb galera 클러스터 배포

manycodes 2022. 11. 25. 20:52
반응형

kubernetes/docker 군집에 mariadb galera 클러스터 배포

확장 가능한 마리아답 갈레라 클러스터를 쿠버네테스나 도커 무리에 배치하려고 합니다.각 팟 또는 컨테이너에는 독자적인 갤러라 구성이 필요하므로 수동 작업 없이 확장하려면 어떻게 배포 환경을 생성해야 합니까?10 노드 클러스터에는 10개의 configmap이 있어야 하기 때문에 ConfigMap을 사용할 수 없다고 생각합니다.

노드의 mariadb galera 설정 예:

wsrep_cluster_address="gcomm://ip_1,ip_2,ip_3"    
wsrep_node_address="ip_1"    
wsrep_node_name="node_1"
wsrep_cluster_name="mariadb-cluster"

노드마다 설정이 다른 어플리케이션에서는 어떻게 도입하는 것이 가장 좋을까요?

주의: 팟/컨테이너를 만들고 직접 구성(새로운 노드를 클러스터에 참여)할 수 있지만 이는 올바른 방법이 아니며 자동 확장성이 필요합니다.

Kubernetes에서 이것을 전개하려면 StatefulSet을 사용하는 것이 거의 틀림없습니다.특히 이 기능은 각 Pod가 스토리지에 대해 고유한 PersistentVolumeClaim을 갖게 되며 개별 Pod의 이름은 예측 가능하고 순차적으로 지정됩니다.일치하는 헤드리스 서비스를 생성하면 각 포드에는 일치하는 DNS 이름이 지정됩니다.

그러면 수수께끼가 몇 가지 풀립니다.

# You pick this
wsrep_cluster_name="mariadb-cluster"

# You know what all of these DNS names will be up front
wsrep_cluster_address="gcomm://galera-0.galera.default.svc.cluster.local,...,galera-9.galera.default.svc.cluster.local"

위해서wsrep_node_name의 MariaDB 매뉴얼에는 호스트명이 디폴트로 지정되어 있습니다.Kubernetes에서 호스트 이름은 기본적으로 포드 이름이며 포드 이름은 순차적인 이름 중 하나입니다.galera-n팟의 경우 StatefulSet에 의해 관리되므로 수동으로 설정할 필요가 없습니다.

wsrep_node_address더 까다롭습니다.이 문서에는 이를 추측할 수 있는 휴리스틱이 있음을 나타냅니다(컨테이너에 대해서는 신뢰할 수 없을 수 있다는 특정 경고 포함).개별 포드가 생성되기 전에는 포드의 IP 주소를 알 수 없습니다.기본적으로 하향 API를 사용하여 환경 변수에 포드의 IP 주소를 주입할 수 있습니다.우선 휴리스틱을 통해 팟의 IP 주소를 추측할 수 있고, 이것이 충분히 동작합니다(헤드리스 서비스가 최종적으로 해결할 수 있는 것입니다).

그러면 위의 블록이 ConfigMap에 남아 모든 복제본에 걸쳐 글로벌하게 표시됩니다.나머지 Galera 노드당 값은 자동으로 추측할 수 있어야 합니다.

언급URL : https://stackoverflow.com/questions/58156046/deploy-mariadb-galera-cluster-in-kubernetes-docker-swarm

반응형