본문 바로가기
Kubernetes

MySQL on Kubernetes 카카오 강연 내용 정리

by SE_123 2023. 8. 12.
반응형

URL: https://if.kakao.com/2020/session/75

MySQL on Kubernetes: 발표자도 데이터베이스를 컨테이너로 운영하게 될 줄 몰랐다


DBaaS 환경의 Mysql

→ 전통적인 방식(PM, VM)에서 벗어나 클라우드 데이터베이스를 쿠버네티스로 제공하기 위해

DBaaS란?

→ 데이터베이스를 서비스로 제공하는 것(ex. RDS, Aurora)

  • 필요 리소스가 없음
  • 설치 시간이 적음
  • Database 전문 지식까지는 필요하지 않다.
  • MSA 환경에서 세분화 된 DB로 변화에 적합하다.

컨테이너 위에서의 DBaas는?

  • OS를 제외한 DB만으로 빠르게 구성하고 효율적으로 리소스를 사용할 수 있다.
  • 생성시간이 매우 적다.
  • 클라우드 환경에서 더 쉽게 더 자주 데이터베이스를 요청하는데 적합하다.
  • 대규모 DB에서 성능 차이가 크게 발생할 것이다.

왜 쿠버네티스인가?

  • VM 대비 높은 리소스 관리 효율
  • 쿠버네티스 자체가 기본 os가 되어가는 중이다.
  • 큰 장애 이슈가 없다.

앞으로의 방향성

  • 자동화 : 반복적인 모든 것을 자동화 가능하도록(← 자동 백업, 자동 복구 등)
  • 고급 기능: DBA가 없이도 무중단 스키마 변경등의 고급기능을 지원하도록 해야한다.
  • 이기종 DB 마이그레이션 기능, 빅데이터, 확장기능 등이 필요하다.(Not just MySQL)

 

Architecture

  1. 멱등성 : 여러번 같은 연산을 실행해도 결과가 달라지지 않는 성질
  2. 선언적 API: Object(객체)는 Application 또는 Infra 구성을 정의한다. API는 정확한 상태가 아니라 의도한 상태를 나타낸다.
  3. CRD

Controller

  • 이벤트 실행 중간에 이벤트가 실패할 가능성도 있으므로, controller는 멱등성을 가지도록 구현해야 하다.

HA

  • Replica를 구성해야 하며, (A,B,C) healthcheck에 따른 HA 구성이 필요하다.

 

Database 구조

  • yaml 파일작성 후 Helm으로 InstanceSet 생성한다.
  • 각 인스턴스에는, 실제 데이터베이스 pod와 데이터베이스의 성능데이터를 수집하는 mysql Exporter pod가 페어 단위로 생성 됨
    • 성능수집(healthcheck)을 위한 vm을 따로 구성할 필요 X( 추가작업이 필요 없음)
    • 프로메테우스에 적재하여 모니터링 시 이용 가능
  • Primary 서비스와 Standby 서비스로 나누어진다.
    • Primary: HA구조에서 항상 Source(main) DB를 바라본다.
    • Standby: HA구조에서 항상 Replica DB를 바라봄 , Read io 분산이 가능MySQL on Kubernetes: 발표자도 데이터베이스를 컨테이너로 운영하게 될 줄 몰랐다