일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 영어
- s3
- JavaScript
- unity
- build
- AWS
- Git
- 설정
- 유니티
- mariadb
- nodejs
- Linux
- 구글
- Python
- ssh
- Kibana
- API
- Ai
- sample
- error
- MSSQL
- logstash
- 엘라스틱서치
- docker
- elasticsearch
- MySQL
- JS
- Windows
- ChatGPT
- Today
- Total
가끔 보자, 하늘.
MariaDB, Galera Cluster, MaxScale 전체 정리 본문
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
'개발 이야기 > DB, 데이터분석, AI' 카테고리의 다른 글
Collo - slideshare 링크 공유 (0) | 2019.11.05 |
---|---|
Collo - 실시간 마이그레이션 툴 (0) | 2019.09.30 |
SELinux for Galera cluster (0) | 2019.07.03 |
ES QueryDSL에서 aggregation에 order 설정 제한 (0) | 2019.01.03 |
Elasticsearch 특정 문서만 지우기 (50) | 2018.09.11 |