CS/DB

[DB] DB 클러스터 설정

셰욘 2024. 12. 4. 16:23
728x90

클러스터란?

여러 대의 컴퓨터가 모여서 하나의 시스템으로 동작하는 것

 

클러스터는 왜 홀수로 구성해야 될까?

  • 쉽게 말하자면 클러스터 내의 서버들은 대표 서버를 선정하기 위해 투표를 진행한다.
  • 만약에 서버가 짝수면, 투표가 동률이 나올 수 있다.
  • 서버가 홀수면 투표에서 동률이 나올 수 없다 => 무조건 표를 제일 많이 받는 서버가 뽑힌다.
  • mariadb에서는 투표 = '쿼럼' 이라고 한다.

홀수로 구성했을 때 과반수의 개수를 계산하는 게 훨씬 쉬워서 대부분의 클러스터를 구성하는 프로그램 모두 홀수로 구성한다

 


클러스터 구성 실습 (DB 서버 3대)

1) 서버 중지

systemctl stop mariadb

2) 설정 추가 (3대 중 1대만 먼저 실행)

vi /etc/mysql/mariadb.conf.d/50-server.cnf


마지막 줄에 다음 내용 추가

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name="MariaDB_Cluster"	# 3대의 컴퓨터를 묶었을 때 내가 지어줄 이름
wsrep_node_address="[IP 주소]"	# 현재 컴퓨터의 IP 주소

 

 

설정 후 재시작

systemctl restart mariadb

 


3) 클러스터 구성 실행 (3대 중 1대만 먼저 설정)

galera_new_cluster

 


4) 설정 변경 (나머지 서버 설정)

systemctl stop mariadb
vi /etc/mysql/mariadb.conf.d/50-server.cnf

 

아래 내용 추가

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://[IP 주소 1],[IP 주소 2],[IP 주소 3]"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_cluster_name="MariaDB_Cluster"	# 3대의 컴퓨터를 묶었을 때 내가 지어줄 이름
wsrep_node_address="[IP 주소]"	# 현재 컴퓨터의 IP 주소

 


5) 서버 재시작

systemctl restart mariadb

 


6) 처음에 설정했던 서버 설정 변경 (1대)

vi /etc/mysql/mariadb.conf.d/50-server.cnf

# 아래 부분 수정
wsrep_cluster_address="gcomm://[IP 주소 1],[IP 주소 2],[IP 주소 3]"

 


7) 최종 확인

mariadb -u root -p
show status like 'wsrep_cluster_status';
	# 모든 노드에서 Primary
	
show status like 'wsrep_cluster_size';
	# 모든 노드에서 클러스터의 총 노드 수(3)
         
show status like 'wsrep_local_state_comment';
	# 모든 노드에서 Synced


DB 생성 실습

3대 중 아무 곳에서 DB 생성

 CREATE DATABASE test1;

 

3대에서 모두 생성이 되었나 확인

 

 


 

DB 중지 실습

3대 중에 아무 서버 1대를 중지 시켜보자

나는 10.10.10.124 서버를 중지시켰다.

systemctl stop mariadb

 

나머지 2대 중 1대에서 DB를 생성

CREATE DATABASE test2;

 

 

중지한 서버를 다시 실행시켜보자

=> 위에서 만들었던 DB가 잘 들어가 있는 것을 확인할 수 있따 !!

728x90