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

 

[ MariaDB 설치하기 ]

1. 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 

'개발 이야기 > DATABASE' 카테고리의 다른 글

MariaDB, Galera Cluster, MaxScale 전체 정리  (0) 2019.07.04
SELinux for Galera cluster  (0) 2019.07.03
mariadb 시작 오류  (0) 2019.03.18
Galera 포트 리스트 및 용어 정리  (0) 2019.02.19
MariaDB MaxScale (발)번역  (0) 2015.01.23
mysql query browser 세션 문제  (0) 2014.07.02

(원문) https://mariadb.com/products/mariadb-maxscale


MariaDB MaxScale을 활용한 유연한 확장성, 고 가용성 그리고 좋은 가변성 DB 서비스


MariaDB MaxScale은 오픈소스이며, DB 중심의 Proxy로 이 제품은 MariaDB Ent/Ent-Cluster, MariaDB 5.5, MariDB 10 그리고 Oracle MySQL에서 작동한다. 이 제품은 유연한 증설과 사용자 추가 기능이 가능하도록 설계된 장착형(Pluggable)으로 설계되어 있다. 가볍고, 빠른 속도 networking core로 처리량을 극대화할 수 있게 제작되었다.MariaDB MaxScale은 클라이언트 제품과 DB 클러스터간의 연결이 가능하고, statement-based 부하분산이 가능하다. 이 제품은 DBA들과 개발자, 그리고 정보 설계자들의 의견을 쉽게 적용할 수 있도록 조직의 DB 하부구조에 대해서 규모를 조절할 수 있도록 되어 있다.


규모조정 (Scalability)

이 제품은 제품의 코드를 변경하지 않으면서도 당신의 DB 하부구조의 규모 조정을 도와준다. MaxScale은 MariaDB Galera Cluster, MariaDB Master-Slave Replication,  그리고 Oracle MySQL Server Replication 위해 연결 기반구조와 성명 기반의 부하분산을 제공한다. 


고가용성(High Availability)

이 제품은 당신에게 계획적이든 계획적이지 않은 연결 중단 동안  downtime이 발생하지 않도록 한다.


개발자 친화적(Developer Friendly)

당신이 MaxScale을 배포할 때도(?), 당신이 제품 재생산 혹은 코드의 변화없이 같은 연결을 통해  당신의 제품이 지속적으로 작동할 수 있도록 해준다.


성능좋은 변환 서비스(Powerful transformative services)

MaxScale의 장착형 설계는 당신의 제품에 변형을 하지 않고도 고유한 DB 서비스의 생성이 가능하다. 이 제품의 확장가능한 설계는 MariaDB Ent유저들에게는 잘 알려진 커뮤니티 맴버들에 의해 만들어진 새로운 플러그인을 활용할 수 있다. 


이 제품의 1.0 버전에 포함된 플러그인 서비스들은 아래와 같은 제품이 있다.


* Continuity during migration : 오래된 제품을 지원하는 쿼리를 변경하면서, 서비스 중단 없이 비동기적으로 제품을 이관할 수 있다.

* Security : 문제가 될만한 쿼리를 차단한다.

* Monitor Query Performance : 병목현상이 발생하는 쿼리를 기록하고 정의한다.

* Cross technology processing : DB, 저장엔진 혹은 제품에 쿼리를 복재한다. 잘 알려진 NoSQL DB나 InnoDB와 같은  트랜젝션 저장 엔진에 데이타를 보낸다.


우리의 유저들을 포함한 이미 개발된 고유의 서비스들에 대한 예


* High Performance Binlog Relay : 통신부하와 복구문제를 해결하기 위한 간단한 전달 서버로 MaxSacle을 통해 master에서 slave로 Binlog를 복제한다. 

* Hint based routing : 복제 혹은 사간 제한에 기반하는 경로를 결정에 영향을 줄 내용들을 SQL내용에 담아 전달한다.   

* Route to sharded databases : 분산 개요(sharding schema)를 위한  제품 단계의 정보 없이 분산할 수 있는 경로 처리

* Hardened Active-Active multi-master replication : 다중 master  구조로 deadlock 상태가 발생하지 않도록 최적화한 Galera 다중 마스터 연결.

* Geo-Replication : MaxScale을 이용한 지리적으로 분산된 데이타 센터들에 복제하는 다중화 고 가용성 클러스터



+ Recent posts