Post

데이터베이스 - 부하 분산(Load Balancing)

오늘은 데이터베이스에 대한 부하를 분산시키는 대표적인 방법 2가지에 대해 알아보자. 😉

클러스터링(Clustering)

클러스터링은 여러 서버 또는 인스턴스를 하나의 그룹으로 묶는 개념이다. 데이터베이스를 클러스터링한다는 것은 여러 개의 데이터베이스 서버를 그룹으로 묶고 클러스터 관리자에 의해 데이터베이스 로드를 균등하게 분산하여 단일 장애 지점이 없도록 하는 것이다.

작동 방식

  • 클러스터 환경에서는 데이터베이스의 여러 인스턴스가 동기화되어 일관된 데이터 세트를 제공한다.
  • 클러스터 관리자는 현재 로드, 쿼리 유형 또는 쿼리되는 데이터를 기반으로 쿼리를 다른 노드로 라우팅할 수 있다.
  • 클러스터링에는 클러스터의 모든 노드가 액세스할 수 있는 공유 스토리지 시스템이 포함되는 경우가 많지만 각 노드가 자체 스토리지를 갖는 아키텍처도 있다.

클러스터 관리자는 로드 밸런서랑 다른가?

클러스터 관리자(Cluster Manager)와 로드 밸런서(Load Balancer)는 비슷해보이지만 서로 다른 역할을 한다.

  • 역할
    • 클러스터 관리자(Cluster Manager)
      • 클러스터 내의 모든 노드를 모니터링하고 관리한다.
      • 클러스터의 상태를 체크하고 노드 사이의 일관성을 유지합니다.
      • 노드의 실패를 감지하고, 자동 장애 복구를 수행합니다.
      • 클러스터 구성을 변경하고, 노드를 추가하거나 제거하는 역할을 합니다.
    • 로드 밸런서(Load Balancer)
      • 네트워크 트래픽을 여러 서버 또는 노드에 분산시켜 로드를 관리한다.
      • 사용자 요청을 처리할 최적의 서버를 선택하여 트래픽을 전달한다.
      • 성능 최적화와 응답 시간 감소를 목적으로 한다.

결론적으로 클러스터 관리자는 클러스터의 상태와 노드 관리에 중점, 로드 밸런서는 트래픽 분산과 성능 최적화에 중점을 둔다.

db-clustering

Database Server와 Storage ❗️

  • Database Server
    • 데이터베이스 서버는 데이터베이스 관리 시스템(DBMS)이 설치된 컴퓨터 서버를 말한다.
    • 이 서버들은 사용자의 쿼리를 처리하고, 데이터의 조작 및 관리를 담당한다.
    • 클러스터 환경에서 각 서버는 데이터를 처리하는 책임을 공유하고, 때로는 다른 서버들과 데이터를 동기화한다.
    • 이 서버들은 종종 자체 로컬 스토리지를 가지고 있거나, 공유 스토리지에 접근할 수 있다.
  • Storage
    • 스토리지는 데이터 파일, 데이터베이스, 로그 파일 등의 데이터를 물리적으로 저장하는 장치를 의미한다.
    • 클러스터 환경에서 중앙 스토리지는 모든 데이터베이스 서버에 의해 공유될 수 있으며, 이는 모든 서버가 일관된 데이터 뷰를 가지도록 한다.

레플리케이션(replication)

데이터베이스 레플리케이션(replication)은 데이터를 하나 이상의 데이터베이스 서버(일반적으로 마스터-슬레이브 구성)에 복사하고 동기화하는 프로세스이다. 이는 데이터의 가용성과 안정성을 높이며, 읽기 쿼리의 부하를 분산시키고, 지리적으로 분산된 사용자에게 데이터 접근성을 개선하기 위해 사용된다.

db-replication

작동방식

  • 변경사항 기록
    • 마스터 데이터베이스에서 데이터 변경사항이 발생하면, 이러한 변경사항은 먼저 로컬 로그 파일에 기록된다. 이 로그 파일은 바이너리 로그, 트랜잭션 로그, 레플리케이션 로그 등으로 불린다.
  • 로그 전송
    • 마스터 서버는 로그 파일에 기록된 변경사항을 슬레이브 서버로 전송한다. 이 과정은 비동기적으로 일어날 수도 있고, 동기적으로 일어날 수도 있으며, 설정에 따라 다르다.
  • 로그 적용
    • 슬레이브 서버는 받은 로그 파일을 자신의 데이터베이스에 적용하여 마스터 데이터베이스의 상태를 반영한다.
  • 오류 검사 및 동기화 유지
    • 레플리케이션 과정에서 오류가 발생할 수 있으며, 마스터와 슬레이브 간의 데이터 불일치를 방지하기 위해 정기적인 오류 검사와 동기화 절차가 수행된다.
  • 읽기 및 쓰기 작업
    • 보통 쓰기 작업은 마스터 서버에서 수행되고, 슬레이브 서버는 주로 읽기 작업을 처리한다. 이를 통해 부하 분산을 달성하고, 마스터 서버의 부하를 줄일 수 있다.

결론적으로 쓰기 및 삭제에 대한 부하 분산은 클러스터링 읽기의 경우는 레플리케이션을 사용하며, 레플리케이션과 클러스터링을 함께 사용함으로써, 읽기 및 쓰기 요청 모두에 대한 부하를 효과적으로 분산하고, 시스템의 성능과 가용성을 최적화할 수 있다. ❗️

This post is licensed under CC BY 4.0 by the author.

© zwoong. Some rights reserved.