관리 메뉴

가끔 보자, 하늘.

MariaDB, Galera Cluster, MaxScale 전체 정리 본문

개발 이야기/DB, 데이터분석, AI

MariaDB, Galera Cluster, MaxScale 전체 정리

가온아 2019. 7. 4. 14:18

MaxScale 추가 설정하다가 이전 내용을 한번에 다 정리해봤습니다. CentOS7 최소 버전이 설치된 환경에서 MariaDB 10.1 버전을 기준으로 진행된 내용입니다.

 

[ MariaDB 설치하기 ]

1. mariadb repo 파일을 만듭니다. (/etc/yum.repos.d/MariaDB.repo)

[mariadb]  
name = MariaDB  
baseurl = http://yum.mariadb.org/10.1/centos7-amd64  
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB  
gpgcheck=0 

2. MariaDB를 설치합니다.

yum install -y MariaDB MariaDB-server MariaDB-client 

[ Galera Cluster 설정 ]

 

1. 우선 config 파일을 설정합니다.
vi /etc/my.cnf.d/server.cnf

[mysqld] 
init_connect='SET NAMES utf8' 
character-set-server = utf8 
collation-server=utf8_unicode_ci 

[galera] 
# Mandatory settings 
wsrep_on=ON 
wsrep_provider=/usr/lib64/galera/libgalera_smm.so 
wsrep_cluster_address='gcomm://'  ### 추가 서버에서는 기존 가동중인 서버 ip를 입력하세요.
wsrep_cluster_name='cluster_name' 
wsrep_node_address='172.xx.xx.xx'  ### 자신의 ip를 입력하세요.
wsrep_node_name='server1'
wsrep_sst_method=rsync 
wsrep_auto_increment_control=off 
binlog_format=row 
default_storage_engine=InnoDB 
innodb_autoinc_lock_mode=2 

bind-address=0.0.0.0 

wsrep_slave_threads=1 
innodb_flush_log_at_trx_commit=0 


2. 방화벽 설정
  추가할 포트는 TCP 3306/4568/4444 port와 TCP, UDP 4567 입니다.

firewall-cmd --permanent --zone=public --add-port=해당 포트/tcp 


3. selinux 설정

 최소 버전에는 semanage가 없어 설치해야 합니다.

yum install policycoreutils-python  

아래와 같이 추가 설정을 해주세요.

> semanage port -a -t mysqld_port_t -p tcp 4567 
> semanage port -a -t mysqld_port_t -p tcp 4568 
> semanage port -a -t mysqld_port_t -p tcp 4444 
> semanage port -a -t mysqld_port_t -p udp 4567 
> semanage permissive -a mysqld_t 

 

이제 mariadb를 실행하여 테스트용 DB와 테이블을 만들어 서버별로 모두 존재하는지 테스트 해보시면 됩니다. 

클러스터 첫번째 node를 실행할 때는 gcomm에 node ip를 명시하지 않지만, 모두 가동후에는 다른 node들에 대한 ip를 추가한 후 재시작 하시기 바랍니다.

 


[ MaxScale 설치 ]

 

 HA Proxy(http://www.haproxy.org/.  high availability, load balancing, and proxying for TCP and HTTP-based applications. 주로 Load balancer로 사용됨. H/W 형식을 오픈소스로 구현한 프로젝트)와 유사하며, DB read/write 쿼리를 지정된 DB 서버로 분산하는 기능이 있는 등 DB에 좀 더 특화되어 있습니다.

1. yum 저장소 설치

curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash 


2. MaxScale을 설치합니다. 

yum install -y maxscale 


3. MaxScale을 위한 유저 생성합니다. 필요한 권한만 설정합니다.

  create user 'maxscale'@'ip' identified by 'maxscalePW'; 
  grant select on mysql.user to 'maxscale'@'ip'; 
  grant select on mysql.db to 'maxscale'@'ip'; 
  grant select on mysql.tables_priv to 'maxscale'@'ip'; 
  grant show databases on *.* to 'maxscale'@'ip'; 


4. MaxScale을 모니터링 하기 위한 유저 계정을 생성합니다.

  create user 'ms_user'@'%' identified by 'ms_userPW'; 
  grant show databases on *.* to ms_user@'%'; 
  flush privileges; 



6. vi /etc/maxscale.cnf , config 파일 설정, 아래 내용을 통으로 사용하면 됩니다.

#Global MaxScale Settings 
[maxscale] 
threads=auto 

#Define Server Nodes 
[server1] 
type=server 
address=172.xx.xx.01
port=3306 
protocol=MariaDBBackend 

[server2] 
type=server 
address=172.xx.xx.02
port=3306 
protocol=MariaDBBackend 

[server3] 
type=server 
address=172.xx.xx.03
port=3306 
protocol=MariaDBBackend 


#Define Monitoring Service 
[Galera-Monitor] 
type=monitor 
module=galeramon 
servers=server1,server2,server3 
user=maxscale 
password=maxscalePW 
monitor_interval=1000 

#Define Galera Service 
[Galera-Service] 
type=service 
router=readconnroute 
router_options=synced 
servers=server1,server2,server3 
user=maxscale 
passwd=maxscalePW 

#Define Galera Listener 
[Galera-Listener] 
type=listener 
service=Galera-Service 
protocol=MariaDBClient 
port=4306 ### 기존 3306 포트 말고 이 포트로 쿼리를 보내면 됩니다.

#Define Administration Service 
[MaxAdmin-Service] 
type=service 
router=cli 

#Define Administration Listener 
[MaxAdmin-Listener] 
type=listener 
service=MaxAdmin-Service 
protocol=maxscaled 
socket=default 


7. 방화벽 설정. 쿼리를 받기 위한 포트입니다. 수정 가능합니다.

firewall-cmd --permanent --zone=public --add-port=4306/tcp 
firewall-cmd --reload 


8. MaxScale 시작 

systemctl start maxscale.service 
systemctl enable maxscale.service 



9. 테스트

 > maxctrl (maxadmin보다 깔끔하게 출력됩니다.)
          list servers
          show service Galera-Service 
반응형