[MariaDB & HA] Galera Cluster 설치 - 이중화 / HA 구성
원문출처 : https://da-new.tistory.com/84
MariaDB의 이중화는 Galera Cluster로 진행합니다.
# MariaDB Galera Cluster
# 이미 필요한 yum 패키지와 MariaDB 설치에 필요한 repo는 기존에 세팅이 되었다 생각하고 진행합니다.
1. Galera Cluster Install
# Galera Cluster 설치
shell> yum install -y galera
# MariaBackup 설치
shell> yum install -y MariaDB-backup
당연한 이야기지만 Galera Cluster 설치를 진행합니다.
MariaBackup은 MariaDB의 물리적 백업 유틸리티인데요.
SST(State Snapshot Transfer)의 한 방식으로 MariaBackup을 사용합니다.
SST(State Snapshot Transfer)는 상태 스냅샷 전송으로 다른 노드와 동기화 하는 방식을 말합니다.
2. Galera Cluster 동기화 유저 생성
mysql
> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY '[PW 설정]';
> SHOW GRANTS FOR 'sstuser'@'localhost';
> GRANT ALL ON *.* TO 'sstuser'@'localhost';
> FLUSH PRIVILEGES;
Galera Cluster 동기화에 사용될 계정을 각 노드 별로 동일하게 생성합니다.
3. 방화벽 설정
shell> firewall-cmd --state
shell> firewall-cmd --permanent --add-service=mysql
shell> firewall-cmd --permanent --add-port={3306,4444,4567,4568}/tcp
shell> firewall-cmd --permanent --add-port=4567/udp
shell> firewall-cmd --reload
shell> firewall-cmd --list-ports
방화벽을 설정하여줍니다.
3306 : MariaDB의 기본 포트 / 저번 MariaDB설치 때 설정하셨을 거라 생각이 드네요.
4444 : SST(State Snapshot Transfer)에 사용되는 포트 / 새 노드가 추가될 경우 동기화
4567 : Galera Cluster 복제에 사용되는 포트 / UDP와 TCP 둘 다 사용하며, 복제 트래픽, 다중 복제에 사용
4568 : IST(Incremental State Transfer)에 사용되는 포트 / 기존 노드와 비교하여 트랜잭션 동기화에 사용
4. SELinux 허용
- Galera Cluster 의 모든 설정이 완료후 다시 1로 변경할 예정입니다.
# SELinux 허용모드 변경
shell> setenforce 0
shell> sestatus
5. Galera Cluster 설정
MariaDB의 기본 설정이 들어있는 파일 들 중 server 설정 파일을 열어서 수정합니다.
기본적으로 Galera와 관련 된 설정들은 주석처리가 되어있습니다.
해당 주석을 해제하며, 설정값을 입력합니다.
shell> vi /etc/my.cnf.d/server.cnf
> 문서 내용 수정
-----------------------------
[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_address=gcomm://[갈레라 서버 IP 1],[갈레라 서버 IP 2] # 구성하는 노드 전부 입력
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_cluster_name='[클러스터 명]'
wsrep_node_address='[현재 노드 서버 IP]'
wsrep_node_name='[현재 노드 명]'
wsrep_sst_method=mariabackup
wsrep_sst_auth='[동기화 유저 명]:[유저 비밀번호]' # 위에 생성한 sstuser id/pw
구성하는 각 노드별 해당 값을 전부 입력합니다.
6. Galera Cluster MariaDB 실행
Master가 될 1번서버에서는 아래의 명령어로 클러스터를 구성하며, 서비스를 실행합니다.
shell> galera_new_cluster
# 혹시 Galera Cluster를 재실행할때 서비스가 올라오지 않을 경우 아래의 파일을 수정하여 Master를 변경하여 줍니다.
shell> vi /data/mariadb/mysql/grastate.dat
> 문서 내용 수정
-----------------------------
safe_to_bootstap: 1
# Master에서 클러스터를 구성하여 서비스를 실행하면, 나머지 노드들에서 MariaDB를 실행합니다.
shell> systemctl start mariadb
# 이렇게 구성을 완료한 갈레라 클러스터는 아래의 명령어로 구동을 확인 할 수 있습니다.
mysql
> SHOW STATUS LIKE 'wsrep%';
7. SELinux 차단
# SELinux 허용모드 변경
shell> setenforce 1
shell> sestatus