sourcecode

Kubernetes 외부 MariaDB PXC 클러스터 노드 로드 밸런싱/페일오버 방법

codebag 2023. 10. 5. 21:33
반응형

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

반응형