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
'source' 카테고리의 다른 글
mysql 도커 컨테이너가 자주 크래시됨 (0) | 2022.11.25 |
---|---|
MySQL에서 번호 범위 생성 (0) | 2022.11.25 |
MySQL - 구조가 같지만 데이터가 다른 여러 테이블에서 데이터 선택 (0) | 2022.11.25 |
무선상의 ADB (0) | 2022.11.25 |
스프링 MVC @PathVariable이 잘립니다. (0) | 2022.11.16 |