Kubernetes 외부 MariaDB PXC 클러스터 노드 로드 밸런싱/페일오버 방법
MariaDB PXC 3노드 클러스터를 사용하여 설정된 외부 MySQL 데이터베이스에 대한 액세스를 설정하려고 합니다.
내 외부 데이터베이스 노드에 이러한 IP 주소가 있다고 가정해 보겠습니다.
172.16.10.100
172.16.10.101
172.16.10.102
그 노드 중 하나가 다운될 경우 Kubernetes가 사용 가능한 2개의 노드에만 트래픽을 자동으로 라우팅하기를 바랍니다.
kubernetes(아래 그림)에서 간단한 서비스 및 엔드포인트를 생성하면 자동으로 페일오버가 수행됩니까?
#
# Service
#
kind: Service
apiVersion: v1
metadata:
name: mariadb-service
spec:
clusterIP: None
sessionAffinity: None
ports:
- port: 3306
protocol: TCP
targetPort: 3306
---
#
# Endpoints
#
kind: Endpoints
apiVersion: v1
metadata:
name: mariadb-service
subsets:
- addresses:
- ip: 172.16.10.100
- ip: 172.16.10.101
- ip: 172.16.10.102
ports:
- port: 3306
protocol: TCP
참고 사항:
Kubernetes는 베어메탈 클러스터를 위한 네트워크 로드 밸런서(Services of type LoadBalancer) 구현을 제공하지 않습니다.Kubernetes에서 제공하는 네트워크 로드 밸런서의 구현은 모두 다양한 IaaS 플랫폼(GCP, AWS, Azure 등)을 호출하는 글루 코드입니다.지원되는 IaaS 플랫폼(GCP, AWS, Azure 등)에서 실행되지 않는 경우 LoadBalancers는 생성 시 "Pending" 상태로 무기한 유지됩니다.
LoadBalancer를 사내 Kubernetes 클러스터에 설치하는 옵션을 찾았습니다. 즉, Metal입니다.LB
MetalLB는 표준 네트워크 장비와 통합되는 네트워크 로드 밸런서 구현을 제공함으로써 이러한 불균형을 해소하여 베어 메탈 클러스터의 외부 서비스도 가능한 한 "그냥 작동"할 수 있도록 하는 것을 목표로 하고 있습니다.
MetalLB는 사양을 존중합니다.loadBalancerIP parameter는 특정 주소로 서비스를 설정하려면 해당 parameter를 설정하여 요청할 수 있습니다.MetalLB는 특정 종류의 주소를 원하지만 정확하게 어떤 주소를 사용하든 상관없이 특정 주소 풀을 요청할 수도 있습니다.특정 풀에서 할당을 요청하려면 주소 풀의 이름을 주석 값으로 하여 metallb.universe.tf/address-pool 주석을 서비스에 추가합니다.예를 들어,
apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
metallb.universe.tf/address-pool: production-public-ips
spec:
ports:
- port: 80
targetPort: 80
selector:
app: nginx
type: LoadBalancer
그리고.address-pool annotation
다음과 같이 정의할 수 있습니다.
address-pools:
name: production-public-ips
protocol: TCP
addresses:
- ip: 172.16.10.100
- ip: 172.16.10.101
- ip: 172.16.10.102
ports:
- port: 3306
여기서 전체 예시 사용법을 찾아보십시오.
그러나 건강진단이 시행되지 않아 기본적인 선택 사항입니다.
GitHub와 이 스레드에는 Kubernetes CRD에 대해 health check가 구현되지 않는 이유에 대해 설명하는 이상적인 문제 사례가 있습니다.
Kubernetes 개념으로 이동하면 이 사용 사례는 실행할 수 없으며 사용자 지정 엔드포인트 컨트롤러를 찾을 수 있습니다.
준비 상태프로브:컨테이너가 요청에 응답할 준비가 되었는지 여부를 나타냅니다.준비 프로브가 실패하면 엔드포인트 컨트롤러는 포드와 일치하는 모든 서비스의 엔드포인트에서 포드의 IP 주소를 제거합니다.초기 지연 전 기본 준비 상태는 실패입니다.컨테이너에서 준비 시도를 제공하지 않는 경우 기본 상태는 성공입니다.
언급URL : https://stackoverflow.com/questions/69560999/kubernetes-way-to-load-balance-failover-external-mariadb-pxc-cluster-nodes
'sourcecode' 카테고리의 다른 글
jquery를 사용하여 div 태그 값 설정 (0) | 2023.10.05 |
---|---|
파이썬으로 BDD 연습하기 (0) | 2023.10.05 |
양식 데이터 다중 부분/양식 데이터에서 경계를 가져오거나 설정하는 방법 - 각도 (0) | 2023.10.05 |
iOS Swift에서 이미지에 텍스트를 추가하려면 어떻게 해야 합니까? (0) | 2023.10.05 |
mysql 테이블에서 특정 행 선택 (0) | 2023.10.05 |