MySQL 클러스터 · 2 min read · Oct 02, 2025

로드 밸런싱된 MySQL 클러스터 설정 방법

로드 밸런싱된 MySQL 클러스터 설정 방법

버전 1.0
저자: Falko Timme

이 튜토리얼은 두 개의 스토리지 노드와 하나의 관리 노드로 구성된 MySQL 5 클러스터를 구성하는 방법을 보여줍니다. 이 클러스터는 실제로 두 개의 노드를 사용하는 고가용성 로드 밸런서에 의해 로드 밸런싱됩니다. 이 로드 밸런서는 heartbeat(다른 노드가 여전히 살아 있는지 확인)와 ldirectord(요청을 MySQL 클러스터의 노드로 분배)를 제공하는 Ultra Monkey 패키지를 사용합니다.

이 문서에서는 모든 노드에 대해 Debian Sarge를 사용합니다. 따라서 다른 배포판에서는 설정이 약간 다를 수 있습니다. 이 설정에서 사용하는 MySQL 버전은 5.0.19입니다. MySQL 5를 사용하고 싶지 않다면 MySQL 4.1도 사용할 수 있지만, 테스트해보지는 않았습니다.

이 방법서는 실용적인 가이드를 목적으로 하며, 이론적 배경은 다루지 않습니다. 이론적 배경은 웹의 많은 다른 문서에서 다루어집니다.

이 문서는 어떤 종류의 보증 없이 제공됩니다! 이는 이러한 시스템을 설정하는 유일한 방법이 아님을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 제가 선택한 방법입니다. 이것이 여러분에게 작동할 것이라는 보증을 제공하지 않습니다!

1 내 서버들

저는 모두 같은 네트워크(이 예제에서는 192.168.0.x)에 있는 다음의 Debian 서버를 사용합니다:

  • sql1.example.com: 192.168.0.101 MySQL 클러스터 노드 1
  • sql2.example.com: 192.168.0.102 MySQL 클러스터 노드 2
  • loadb1.example.com: 192.168.0.103 로드 밸런서 1 / MySQL 클러스터 관리 서버
  • loadb2.example.com: 192.168.0.104 로드 밸런서 2

또한 가상 IP 주소가 필요합니다: 192.168.0.105. 이 IP 주소는 로드 밸런서에 의해 MySQL 클러스터에 할당되어 애플리케이션이 클러스터에 접근할 수 있는 단일 IP 주소를 제공합니다.

MySQL 클러스터에 두 개의 MySQL 클러스터 노드를 두고 싶지만, 주로 한 가지 이유로 세 번째 노드인 MySQL 클러스터 관리 서버가 여전히 필요합니다: 두 개의 MySQL 클러스터 노드 중 하나가 실패하고 관리 서버가 실행되지 않으면 두 클러스터 노드의 데이터가 일관성이 없게 됩니다(“split brain”). MySQL 클러스터를 구성하는 데에도 필요합니다.

따라서 일반적으로 우리의 설정을 위해 다섯 대의 머신이 필요합니다:

2 MySQL 클러스터 노드 + 1 클러스터 관리 서버 + 2 로드 밸런서 = 5

MySQL 클러스터 관리 서버는 많은 리소스를 사용하지 않으므로 시스템이 아무것도 하지 않고 그냥 앉아 있게 되므로 첫 번째 로드 밸런서를 같은 머신에 배치할 수 있습니다. 이렇게 하면 한 대의 머신을 절약할 수 있어 최종적으로 네 대의 머신이 됩니다.

2 MySQL 클러스터 관리 서버 설정

먼저 MySQL 5.0.19( max 버전!)를 다운로드하고 클러스터 관리 서버( ndb_mgmd)와 클러스터 관리 클라이언트( ndb_mgm - 클러스터에서 무슨 일이 일어나고 있는지 모니터링하는 데 사용됨)를 설치해야 합니다. 다음 단계는 loadb1.example.com( 192.168.0.103)에서 수행됩니다:

loadb1.example.com:

mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\ glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/bin/ndb_mg*
cd /usr/src
rm -rf /usr/src/mysql-mgm

다음으로 클러스터 구성 파일인 /var/lib/mysql-cluster/config.ini를 생성해야 합니다:

loadb1.example.com:

mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini

| [NDBD DEFAULT] NoOfReplicas=2 [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] [TCP DEFAULT] # 클러스터 관리 노드 섹션 [NDB_MGMD] # 관리 노드의 IP 주소(이 시스템) HostName=192.168.0.103 # 스토리지 노드 섹션 [NDBD] # 첫 번째 스토리지 노드의 IP 주소 HostName=192.168.0.101 DataDir= /var/lib/mysql-cluster [NDBD] # 두 번째 스토리지 노드의 IP 주소 HostName=192.168.0.102 DataDir=/var/lib/mysql-cluster # 각 스토리지 노드당 하나의 [MYSQLD] [MYSQLD] [MYSQLD] |

파일에서 IP 주소를 적절하게 바꿔주세요.

그런 다음 클러스터 관리 서버를 시작합니다:

loadb1.example.com:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini  

시스템 부팅 시 관리 서버를 자동으로 시작하는 것이 좋으므로 매우 간단한 init 스크립트와 적절한 시작 링크를 생성합니다:

loadb1.example.com:

echo ‘ndb_mgmd -f /var/lib/mysql-cluster/config.ini’ > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd
update-rc.d ndb_mgmd defaults

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.