Ssoon

오퍼레이터 & MySQL 오퍼레이터 (6) - MySQL Operator for Kubernetes 실습 - 1 본문

Database Operator In Kubernetes study

오퍼레이터 & MySQL 오퍼레이터 (6) - MySQL Operator for Kubernetes 실습 - 1

구구달스 2022. 6. 6. 23:57
CloudNet@ 팀의 가시다님이 진행하는 Database Operator In Kubernetes study 스터디 중 MySQL Operator for Kubernetes 설치 및 부하분산 내용에 대해 정리하였습니다.

MySQL Operator for Kubernetes

쿠버네티스 클러스터로 MySQL InnoDB Cluster 관리

  • MySQL Operator for Kubernets : 1개 이상의 MySQL InnoDB Cluster를 관리합니다.
  • MySQL InnoDB Cluster : 쿠버네티스 API 서버를 통해서 관련 리소스를 배포합니다.
    • StatefulSet : MySQL Server instances - MySQL 서버
    • Deployment : MySQL Routers - Proxy 역할로 애플리케이션의 쿼리를 서버에 전달, RW/RO
    • Service : MySQL Router, 개별 MySQL 서버로 접속 주소 생성 (Headless 서비스, SRV 레코드)
    • MySQL Shell : MySQL Router 와 MySQL Server 에 툴 포함

※ MySQL Shell 8.0

MySQL Shell은 MySQL용 고급 클라이언트 및 코드 편집기입니다.

https://dev.mysql.com/doc/mysql-shell/8.0/en/ 

 

Kubernetes Operational View

실습 모니터링과 확인을 위해 여러 Kubernetes Operational View 을 설치합니다.

설치방법 : https://codeberg.org/hjacobs/kube-ops-view

 

MySQL Operator for Kubernetes

MySQL Operator for Kubernetes 을 설치합니다.

설치방법 : https://github.com/mysql/mysql-operator

  • MySQL InnoDB 클러스터를 설치합니다.

  • 접속을 위해  접속정보에 대한 변수를 지정합니다.
MIC=mycluster.mysql-cluster.svc.cluster.local # MYSQL 라우터입니다
MDB1=mycluster-0.mycluster-instances.mysql-cluster.svc.cluster.local
MDB2=mycluster-1.mycluster-instances.mysql-cluster.svc.cluster.local
MDB3=mycluster-2.mycluster-instances.mysql-cluster.svc.cluster.local
MYSQLIP=$(kubectl get svc -n mysql-cluster mycluster -o jsonpath={.spec.clusterIP})
  • 마스터 노드에서 mariadb-client 설치 후 MySQL 라우터에 접속을 확인합니다.

https://mariadb.com/docs/connect/clients/mariadb-client/

  • MySQL 라우터에서 MySQL 파드로 접속을 확인합니다.

  • 샘플 데이터베이스를 복제합니다.

 

  • 데이터베이스를 생성한 후 확인합니다.

  • 라우터 설정을 확인합니다.

  • 캐시 정보를 확인합니다.

  • 테스트를 위해 pod를 배포합니다.

MySQL 라우터를 통한 쿼리 부하분산을 확인합니다. (Single-Primary 모드)

  • MySQL 라우터정책이 first-available 라서 모두 프라이머리로 전달됩니다.

  • pod에서 mysql 라우터로 6446로 접속을 확인합니다.
  • 부하분산이 되지 않습니다.

  • pod에서 mysql 라우터로 6447로 접속을 확인합니다.
  • 부하분산(round-robin) 됨을 확인할 수 있습니다.

  • MySQL 에서 해당 부하분산에 관한 정책을 확인합니다.
  • 싱글 프라이머리 모드로 하나의 마스터에 두개의 세컨더리로 작동중입니다.
  • 6446으로 쿼리를 보내면 부하분산이 되지 않으며, 6447로 쿼리를 보내면 두대의 세컨더리 (mycluster1 과 2) 로 라운드로빈 방식으로 부하분산되는 정책을 확인할 수 있습니다. 

  • 데이터베이스에 정보를 추가합니다.

  • 마스터 노드에서 test 데이터베이스에 데이터를 삽입 한 후 복제를 확인합니다.

Comments