2. 목 차
I. MaxScale 소개
― 개요
― 특징
― 라이센스
― 아키텍처
II. MaxScale 구성 및 운영
― 설치
― maxscale.cnf 예시
― Configure Concepts
― High Availability
― 운영
― 성능
III. MaxScale Limitation
― configure / security
― protocol / Authenticator
― Filter / Monitor
― Router
IV. MaxScale 활용
― Router
― HA
― Flexibility & Scalability
6. 개요
query query
result
result
…Apps…
• [Database]
MySQL 5.1 later
MariaDB/Percona all versions
ClustrixDB
• [Cluster]
Galera Cluster
Replication
MySQL Cluster
• [OS]
RHEL 5 later
CentOS 5 later
Ubuntu 12.04 later
Debian 7 later
openSUSE 13.1
SLES 11 later
7. 특징
MaxScale is a database proxy and more specifically
Database를 방해하지 않으면서, Apps에 영향을 주지 않으면서,
Database와 Apps를 완벽하게 분리할 수 있고, 관리프로세스를 실행할 수 있어요.
보안성 유연성 고가용성 데이터 스트리밍
SQL-Injection / DDoS등의
공격에 대한 보호기능으로서
Secure Database Firewall
Application 코드변경 없이
Scale-out Infrastructure 관리
SPOF없는 가동시간 보장과
업그레이드를 위한
최소 다운타임 제공
실시간 분석을 위해서
Data lake에 트랜잭션
데이터 스트리밍제공
8. 특징
보안성
SQL-Injection, DDoS, 비인증접속 등의
보안위협으로부터 데이터 보호
Data in Motion
▪ 데이터 이동(Network)시 end-to-end SSL 제공
Data in Use
▪ MaxAdmin Security -local only access
Data at Rest
▪ Firewall Filter: Whitelisting/Blacklisting
▪ DDos 공격보호를 위한 Client Connection 제한 가능
Query
Firewall Filter
Select from customer
Where id = 5:SELECT *
FROM CUSTOMERS;
MaxScale
1 3
2
Client
Query failed: 1141
Error: Required WHERE/HAVING
clause is missing
Error
SQ
L
9. 특징
유연성
Content Aware(강화된 Proxy기능)
▪ 서버의 요구내용 인식
▪ 서버의 구성 및 상태 인식
Query Routing
▪ Load balancing: 트랜잭션 로드밸런싱과 모니터링
▪ Read/Write 분할처리
Replication
▪ Large Master-Slave구조에서 고성능 복제(Binlog서버)
Multi-tenant Database Scaling
▪ Schema sharding을 위한 분산처리 지원
Read
Write
10. 특징
고가용성(HA)
SPOF없는 고가용성 지원
Ensure database uptime
▪ 자동 Fail-Over
▪ New Master로 Slave들의 Master정보 변경.
▪ Master가 Fail상태일때도 Read Transaction 지원
Minimize database downtime
▪ 사용자 영향 없이 DB upgrade 지원
▪ Tee-filter 통해 쿼리 복제하여 신규DB로 전송
Master
script
master_down event
Failover Script
CHANGE MASTER to new master;
START SLAVE
Slaves
STOP SLAVE
Promote as master
binlog cache
1 4
3
2
4
12. 라이센스
BSL (Business Source License)
▪ Maxscale 2.0 ~ 2.0.4 은 BSL 1.0 적용
▪ BSL은 Closed Source 또는 Open Core 라이센스 모델의 새로운 대안입니다. BSL에서 소스
코드는 항상 자유롭게 사용할 수 있으며 특정 시점 (즉, 변경 날짜)에 오픈 소스가 될 수
있습니다. BSL의 특정 수준 이하의 사용은 항상 완전 무료입니다. 지정된 수준 (고급 사용자)
이상으로 사용하면 변경 날짜까지 공급 업체 라이선스가 필요하며 이 시점에서 모든 사용은
무료가 됩니다. (참고 https://mariadb.com/bsl-faq-mariadb )
▪ BSL 적용받는 또다른 Project들은?
+ MariaDB ColumnStore Backup Restore Tool
+ MariaDB ColumnStore MaxScale CDC Data Adapter
▪ + MariaDB ColumnStore Kafka Data Adapter
▪ + MariaDB Kubernetes Operator
https://mariadb.com/projects-using-bsl-11/
▪ 약은 약사에게~, BSL라이센스는 MariaDB에게~
23. 설치
• 미리 download 한 RPM 패키지 혹은 yum repository를 구성하여 install
• MaxScale이 DB에서 사용 할 유저 생성
• Configure 설정 (사용 할 port 방화벽 open) 기본 /etc/maxscale.cnf
• MaxScale 기동
https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-installation-guide/
# rpm -ivh maxscale-2.3.9-1.centos.7.x86_64.rpm
# curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
# yum install maxscale*
MariaDB [(none)]> create user '[user]'@'[host]' identified by '[password]';
MariaDB [(none)]> grant select on mysql.user to '[user]'@'[host]';
MariaDB [(none)]> grant select on mysql.db to '[user]'@'[host]';
MariaDB [(none)]> grant select on mysql.table_priv to '[user]'@'[host]';
MariaDB [(none)]> grant show databases, replication_client on *.* to '[user]'@'[host]';
# service maxscale start
# systemctl start maxscale
24. 기본 환경구성(/etc/maxscale.cnf 예시)
https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-configuration-usage-scenarios/
[maxscale]
threads=auto
[Write service]
type=service
router=readconnroute
router_options=master
servers=DB1,DB2,DB3
user=max
passwd=maxscalePW
[DB1]
type=server
address=192.168.0.100
port=3306
protocol=MySQLBackend
user=max
passwd=maxscalePW
[DB2]
…
[DB3]
…
[DB Monitor]
type=monitor
module=mysqlmon
servers=DB1,DB2,DB3
user=max
passwd=maxscalePW
monitor_interval=60000
[MaxAdmin]
type=service
router=cli
[maxadmin listener]
type=listener
service=MaxAdmin
protocol=maxscaled
socket=default
각 섹션 별 maxscale.cnf 예시
[ ] = 섹션(정해진 것이 아닌 임의의 지정)
[Listener]
type=listener
service=Write service
protocol=MySQLClient
port=3306
address=0.0.0.0
26. Configure Concepts
https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-configuration-usage-scenarios/#objects
Objects
Section Description
Server
MariaDB MaxScale을 통해 클라이언트를 연결할 수 있는 개별 데이터베이스 서버
Protocol MaxScale과 MaxScale 클라이언트 또는 MaxScale에 노출 된 서버 간의 통신을 담당
Monitor 특정 종류의 클러스터 상태를 모니터링하고 MaxScale의 라우터에서 해당 상태를 사용할 수 있게 함
Filter MaxScale의 요청 처리 라우터 앞에 위치하여 요청에 대한 정보를 거부, 처리, 변경 또는 기록
Router 요청의 특성 또는 라우터가 구현하는 알고리즘에 따라 요청을 backend 서버로 라우팅 (readconnroute / readwritesplit 등)
Service 데이터베이스 집합을 추상화하여 클라이언트에 단일 데이터베이스로 표시
Listener MaxScale이 수신 대기하는 포트를 정의. 당 포트에 도착한 연결 요청은 리스너가 연결된 서비스로 전달
Status Description
Running 정상 상태
Master Master 서버를 표시
Slave Slave 서버를 표시
Maintenance 점검이 필요한 상태 (서버에 연결이 되지 않고 수동으로 켜지지만 어떠한 이유로 연결이 차단 됨)
Slave of External Master 모니터링 되지 않는 slave
28. 운영
• maxadmin 사용을 위한 configure 설정
• Maxadmin cli 접속
• Command 확인
[MaxAdmin]
type=service
router=cli
[MaxAdmin Unix Listener]
type=listener
service=MaxAdmin
protocol=maxscaled
socket=default
# maxadmin
MaxAdmin>
# maxadmin
MaxAdmin> help
29. 운영
• Linux shell 에서 maxadmin cli에 접속하지 않고도 maxctrl 명령으로 동일한 요건 수행 가능
• maxctrl은 REST-API 와 통신.
• maxadmin의 대체용.
Ex)
# maxctrl list servers
# maxctrl list listener
Etc.
30. 성능
MaxScale 2.0.5 (up to)
Hardware: Two physical servers, 16 cores / 32 hyperthreads, 12
8GB RAM and an SSD drive, connected using GBE LAN. One ru
ns MaxScale and sysbench, the other 4 MariaDB servers setup a
s Master and 3 Slaves.
Workload: OLTP read-only, 100 simple selects per iteration, no
transaction boundaries.
● direct: Sysbench uses all
servers directly in
round-robin fashion.
● rcr: MaxScale readonnroute
router.
● rws: MaxScale readwritesplit
router.
https://www.slideshare.net/MariaDB/m18-maxscale
31. 성능
https://www.slideshare.net/MariaDB/m18-maxscale
MaxScale 2.1.0
● The architectural changeth
at allowed the removal of a l
arge number of locks provide
d a dramatic improvement
for readconnroute.
● No change for readwritesplit.
● With small number of clients the
introduced cache improved the
performance, with large number
no impact.
34. • 2.1.2 및 이전 버전에서는 configure 파일 작성 시 한 줄에 1024 자로 제한
― MaxScale 2.1.3에서 16384 자로 증가
― MaxScale 2.3.0은이 제한을 16777216 자로 증가
• 2.2.12 및 이전 버전에서는 configure 파일의 섹션 이름이 49 자로 제한
― MaxScale 2.2.13에서 1023 자로 증가
제한사항
• Maxscale의 parser는 WITH 구문을 올바르게 구문 분석하지만, WITH 절을 정의하는 SELECT에 사용 된 열, 함수
및 표를 수집하지 못함
• 결과적으로 데이터베이스 방화벽은 WITH 절의 SELECT가 금지 된 열을 참조하는 WITH 문을 차단하지 않음
Security (MariaDB 10.2 사용 시)
Configure
35. • XA트랜잭션 탐지 불가
― XA 명령은 알 수 없는 명령으로 처리
― 데이터베이스를 잠재적으로 수정할 수 있는 작업으로 취급(readwritesplit 일 경우, 마스터로 라우트 됨)
― XA 트랜잭션 내부에서 수행 된 SELECT 쿼리는 XA 트랜잭션의 일부가 아닌 서버로 라우팅
― XA 트랜잭션 수행 시 auto commit을 비활성화 하여 수행가능
제한사항
• prepared statement를 사용하여 autocommit 모드 변경 시 문제 발생
― 모드 변경이 되어도 maxscale은 이를 인지하지 못함
Prepared Statements
Query Classification
SET autocommit=0;
XA START 'MyXA’;
INSERT INTO test.t1 VALUES(1);
XA END 'MyXA’;
XA PREPARE 'MyXA’;
XA COMMIT 'MyXA’;
SET autocommit=1;
set autocommit=1
PREPARE hide_autocommit FROM "set autocommit=0"
EXECUTE hide_autocommit
변경 되었으나 인지하지 못함
36. • MySQL / MariaDB 프로토콜 지원의 한계 (MariaDBClient)
― Compression은 Server handshake에 포함되지 않음
― KILL QUERY ID <query_id> 유형 문을 지원하지 않음 (DB에서 직접실행 해야 함)
― KILL 명령은 비동기적으로 실행되고 결과는 무시되므로 사용자는 권한이 없어도 성공한 것처럼 보여짐
제한사항
• GSSAPI authenticator 제한
― backend 연결이 GSSAPI 인증을 사용할 때만 GSSAPI 인증을 지원
― 다른 backend 인증 모듈을 사용하는 클라이언트 측 GSSAPI 인증은 지원되지 않음
• MySQL authenticator (MySQLAuth) 제한
― MySQL 구형 패스워드는 지원되지 않음 (MySQL 4.1 버전 이상의 인증 프로토콜 사용)
― 사용자가 연결할 호스트에 따라 다른 암호를 사용하는 경우 MariaDB MaxScale은 백엔드 데이터베이스에 연결할 때 사용해야하는 암호를 다
르게 인식하지 못함 (연결이 실패되고 사용자이름을 사용할 수 없음)
― 넷마스크 설정 시, 0 또는 255만 지원 (ex. 255.255.255.0 = 가능 / 255.255.255.192 = 미지원)
Authenticator
Protocol
37. • Database Firewall 제한 (dbfwfilter)
― 다중 명령문을 지원하지 않음 (클라이언트에 오류가 전송됨)
• Tee filter 제한 (tee)
― binary protocol prepared statements를 지원하지 않음. The execution of a prepared statements through a service that uses the tee filter is
not guaranteed to succeed on the service where the filter branches to as it does on the original service.
― binary protocol prepared statements 구문이 server-generated ID로 식별 됨. The ID sent to the client from the main service is not
guaranteed to be the same that is sent by the branch service.
제한사항
• 하나의 모니터만 사용 가능
― 동일 서버를 두대이상에서 모니터링할 경우 오류로 간주됨
• Galera Cluster 모니터링 제한 (galeramon)
― wsrep_local_index를 기반으로 기본 Master가 선택 됨
― 서버 우선 순위 메커니즘의 영향을 받을 수 있음
Monitor
Filter
38. • Avrorouter 제한 (avrorouter)
― avrorouter는 다음 데이터 유형, 변환 또는 SQL 문을 지원하지 않음: BIT, 정수 유형에서 문자열 유형으로 CAST 함수,
CREATE TABLE ... AS SELECT 구문
― avrorouter는 어떤 충돌 복구도 하지 않음. 즉, avroouter를 시작하기 전에 avro 파일을 유효한 블록 길이로 잘라 사용해야 함
― binlog checksum을 지원하지 않음.
• connection router 제한 (readconnroute)
― LOAD DATA LOCAL INFILE 로 binary data를 송신을 지원하지 않음
• Read/Write Splitter 제한 (readwritesplit)
― 마스터 서버로 라우팅 되는 쿼리: open transaction 내에서 쿼리가 실행 된 경우
: 구문에 저장 프로시저 또는 UDF 호출이 포함되어 있는 경우
: 하나의 쿼리 안에 여러 개의 명령문이 있는 경우
― Readwritesplit은 JDBC 배치 명령문의 파이프 라이닝을 지원하지 않음
― multi-statement 쿼리가 readwritesplit 라우터를 통해 실행되면 항상 마스터로 라우팅
― 다중 명령문 쿼리 내에서 LOAD DATA LOCAL INFILE 문을 실행 불가 (MaxScale hang issue)
― USE <db name> 및 SET autocommit = 0이 포함한 몇몇의 쿼리는 복사본을 각 백엔드 서버로 보내고 마스터의 응답을 클라이언트에 전달
― use_sql_variables_in 매개 변수를 all로 설정하면 SELECT 쿼리가 사용자 변수를 수정하면 라우팅되지 않고 클라이언트가 오류를 수신
제한사항
Router
40. Router
• Case ) 전통적인 물리장비(L4)의 대체.
[A Service]
type=service
router=readconroute
servers=srv1,srv2,srv3,srv4….
router_options=running #(master, slave, synced, ndb, running)
• Case ) Readwritesplite 통한 Master/Slave구조의 지능적인 분산처리.
[Split-Service]
type=service
router=readwritesplite
servers=srv1,srv2,srv3,srv4
• Case ) Backend 정보의 은닉 / 보안강화
#maxscale ip – 10.10.10.1
# grant all privileges on *.* to ‘appuser’@’ 10.10.10.1’;
[A Service-Listener]
type=listener
service=A Service
protocol=MariaDBClient
port = 43306
[srv1]
type=server
address=20.20.20.1
protocol=MariaDBBackend
port = 3306
41. HA
• Case ) 다양한 Cluster구성에 대한 지원.
#mariadbmon : Master-Slave Replication Cluster’s Monitoring
#mmmon : Multi-Master Replication Cluster’s Monitoring(deprecatred)
#galeramon : Galera Cluster Monitoring
• Case ) Master Node 장애에 대한 Auto-Failover.
[MyMonitor]
type=monitor
module=mariadbmon
servers=server1,server2,server3
monitor_interval=2000 #2sec
failcount=5
auto_failover=true #master ha
auto_rejoin=true #slave join
#events=master_down, slave_down
#script=
42. Flexibility & Scalability
• Case ) Tee Filter를 통한 신규 version에 대한 검증
[A-Service]
type=service
router = readconroute
filters=NewDBClone
[NewDBClone]
type=filter
module=tee
service=NewDB
[NewDB]
type=service
router = readconroute
servers = newsrv1, newsrv2
Case ) schmearouter를 통한 단순 Database 샤딩.
[Shard-Router]
type=service
router=schemarouter
servers=server1,server2
• Case ) binlogrouter를 통한 binlog Server role.
[Replication]
type=service
router=binlogrouter
user=maxscale
password=maxpwd
server_id=3
binlogdir=/var/lib/maxscale/
mariadb10-compatibility=1
44. 적용사례
• Galera Cluster의 Routing Solution
module=galeramon
disable_master_failback=0|1
• ColumnStore 서비스의 Routing Solution
• Master/Slave 구조에서의 Routing & HA Solution
• Readwritesplite Router를 통한 Read Only와 Write Transaction 지능적인 분산처리. But~
• QueryLogFilter 통해서 Request에 대한 모든 SQL문을 기록해보자~(for ISMS).
OMG, 로그파일이 각 세션별로 만들어져요~^^;;
• 많은 모듈에 적용되는 필터링에 대한 정규표현식이 익숙하지 않아서~.
Maxscale은 정규표현식에 PCRE2 (Perl-Compatibility Regular Expression)라이브러리를 사용합니다.
https://www.pcre.org/current/doc/html/pcre2syntax.html
• 계정 사용시 root는 사용하지 마세요.
enable_root_user = 1
• Backend Server의 계정추가후 MaxAdmin 에서 maxadmin>reload dbusers 수행 필요. ( auth fail후 30초 마다 갱신)
46. docker 구축방법, readwritesplit multi user?
• Docker 이용
https://hub.docker.com/r/mariadb/maxscale/
• 인증/권한
- MaxScale 설치 host에 대한 권한 부여.
- 계정 / 비번 서버마다 모두 동일해야 함.( Only one)
https://mariadb.com/kb/en/mariadb-maxscale-22-mariadb-maxscale-configuration-usage-scenarios/#authentication
47. 성능 , Transaction Routing
• 성능
2.1에 성능이 많이 개선된 거 같아요. 2.2 추천.
2019.07.24 현재 GA버전
2.2.21
2.3.9
• Transaction Routing
MaxScale도입 전에 반드시 서비스되는 SQL패턴을 인지하고
MaxScale 제약사항에 해당되는 부분이 없는지 확인해야 합니다.
반대로 Maxscale 구성 이후에 신규 작성하는 SQL/PROJECT라면
개발가이드에 MaxScale 제약사항을 배포하는게 좋겠어요.
48. CDC, LB, HA
• CDC
https://mariadb.com/resources/blog/streaming-data-from-mariadb-server-into-mariadb-columnstore-via-mariadb-maxscale/
• Load-Balancing
[RW Service]
type=service
weightby=rw_weight
…
[server1]
type=server
rw_weight=(가중치 수)
• HA
KeepAlived 이용 (https://mariadb.com/resources/blog/maxscale-ha-setup-using-keepalived-and-maxctrl/)
pacemaker & corosync 이용 (https://mariadb.com/kb/en/mariadb-maxscale-22-how-to-make-mariadb-maxscale-high-available/)
Notas do Editor
취약한 시스템통합이나 DB 처리시간이 증가한다면,
고객이 실시간으로 제품을 구매하거나 쇼핑하기가 힘들겁니다.
특히 분석 처리는 운영프로세스 FLOW와 통합하는데 어려움이 있습니다.
이렇게 급변하는 환경변화에 적응하기 위해서
프로그램 개발자는 지속적으로 신규기술과 Application을 개발해야 합니다.
개발자나 DBA나 여러가지 고민거리가 생깁니다.
웹 어플리케이션에서 다양한 이기종 데이터베이스에 걸쳐서 수행되는
높은 트래픽이나 빈번한 트랜잭션을 가지는 미션 크리티컬한 작업들이 점점 증가하고 있습니다.
개발자나 DBA는 고객수요를 만족시키면서 사용자 서비스에 영향없이 운영중인 데이터베이스를 확장해야 합니다.
Maxscale은 이렇게 Application과 Database사이에 위치하며 운영시스템에 유연성을 제공합니다.
Maxscale은 현재 MySQL, MariaDB, Percona Server for MySQL, ClustrixDB 를 지원하고 있습니다.
Maxscale은 Database Proxy 입니다.
DB와 Application을 완전히 분리해서
Application에 영향을 주지않고, Application은 DB를 영향받지 않으면서
플러그인 아키텍처를 통해서 유연성을 확장할 수 있습니다.
Maxscale은 보안성, 유연성, 고가용성, 데이터스트리밍의 4가지 핵심적인 특징을 가진 장점을 제공합니다.
Maxscale은 3가지 상태에 대해 데이터를 보호합니다.
Data in Motion
데이터가 네트워크를 통해 이동중일때, 위협에 노출되는 문제를 방지하기 위해서 데이터를 안전하게 서버 어플리케이션에서
이동할 수 있도록 end-to end SSL 기능을 제공합니다.
Data in Use
데이터가 사용 중 일때, 주요관심사는 Access 제어입니다.
MaxAdmin 보안은 공격자가 Maxscale구성 정보의 손상이나 백엔드 DB서버의 접속정보에 엑세스 하지 못하도록 합니다.
Data at Rest
데이터 저장상태의 경우, 잠재적인 공격으로부터 보호할 필요가 있습니다.
SQL-Injection공격을 방어하기 위해서, Maxscale은 Whilelist와 Blacklist 기능 모두를 제공합니다.
또한 DDoS공격방어를 위해서, 연결비율 제한 기능을 제공합니다. (Backend DB로 고정된 Connection수 구성가능)
필터링
- 규칙에 일치하는 쿼리
- 특정사용자가 규칙에 일치하는 쿼리
- 특정패턴에 일치하는 쿼리
우측 그림을 통해서 전형적인 SQL-Injection 유형을 볼 수 있습니다.
공격자는 모든고객정보를 빼내기 위해서 sub select 쿼리를 삽입하려고 합니다.
이런유형은 보통 보안위협 뿐 아니라, 성능문제를 일으킬수 있습니다.
Whilelist/Blacklist를 통해서 Maxscale은 높은 보안위협수준을 제공합니다.
대량의 데이터 Access방지,
MaxScale는 엔드 – 투 – 엔드 SSL 네트워크 레이어 암호화를 제공합니다 – 이는 승인되지 않은 데이터의 잡아 쿼리 및 데이터 패킷을 스니핑하는 해커를 방지 할 수있다.
Maxscale은 이러한 확장요구를 위해서 3가지 유형을 제공합니다.
Query Routing
- 로드밸런싱 – Maxscale은 서버의 트랜잭션 부하를 모니터링하고 부하를 조절합니다.
- 동적쿼리 라우팅 – DB서버 상태뿐 아니라 쿼리타입을 기준으로 성능확장을 위해서 적절한 서버로 쿼리를 라우팅 합니다.
이런방식으로 우리는 어플리케이션 레이어의 변경없이 DB를 확장할 수 있습니다.
- 트래픽 프로파일 기반 라우팅 – 온라인 어플의 쿼리면 Master로, 보고용이면 Slave 쿼리를 전송합니다.
Replication(Binlog Server기능)
Master의 부하증가없이 다수의 slaves에 Replication을 구성하기 위한 Binlog Server기능을 제공합니다.
예를들어 Booking.com은 Binlog Server에 Slave로 25대를 Slave로 구성하여 총 1000대의 서버를 운영하고 있다고 합니다.
Multi-tenant Database Scaling
각 테넌트는 자신의 스키마 샤드를 가지며, 기존 사용자기반에 영향없이
DB나 데이터 볼륨 증가에 따라 DB를 확장할 수 있습니다.
Maxscale이 Schema Sharding Router역할 수행합니다.
Maxscale 7개의 Filter 모듈 제공
1. Named Server Filter : 규칙적인 표현 매칭되는 쿼리 라우팅
2. Query Log ALL Filter(QLA) : 모든 쿼리 로깅
3. Regex Filter : 정규표현 매칭(5.1의 type 키워드를 Engine 키워드로 rewirte 시 유용)
4. Tee Filter : 쿼리복사본을 만들어 다른서비스로 전달용 필터(신규버전 db의 성능/기능 test에 유용).
5. Top Filter : 모든 쿼리문중 소요시간 top n개 모니터링용 필터.
6. Database Firewall Filter : 방화벽 규칙 통한 쿼리차단용 필터.(Access 제한)
7. RabbitMQ Filter : 쿼리를 추출하고 이를 표준형태로 변환하는 필터.
Maxscale은 단일고장점 없이 100% 운영할수 있는 고가용성 솔루션입니다.
자동 FailOver기능을 통해서 DB업데이트를 확인합니다.
이것은 Master가 Fail인경우,
Master 장애를 감지하고 Slave를 Master로 승격시킵니다.
또한 모든 Slave들을 승격된 master를 가리키도록 합니다.
Maxscale은 Active/Standby와 Active/Passive 구성을 지원합니다.(Maxscale이 2대 설치)
또한 신규버전의 성능과 기능의 검증을 위하여 사용자에게
업그레이드 하는 동안 동시에 현재버전을 운영해서 db downtim을 최소화 한다.
Active/Standby – VIP통하여 Traffic을 제어합니다.(Active Maxscale, Standby Maxscale 둘다 실행중인 상태)
Active/Passive – Active Maxscale 실행, Passive Maxscale 중지상태에서 Active fail이면 Passive가 corosync/pacemaker에 의해
시작됨.
이에 대한 해답은 역시 실시간 분석처리가 정답입니다.
실시간 분석만이 몇초/몇분안에 분석/보고/자동화/사업목적에 부합하는 지능적인 처리가 가능합니다.
Maxscale은 이 데이터가 가지는 시간의 가치를 최대화 하기위해서
데이터 스트리밍 기술을 도입했습니다.
Maxscale은 Kafka Producer에 바이너리 로그 이벤트를 복제합니다.
이 데이터는 기계학습(머신러닝)이나 실시간 분석을 위한 데이터로 활용될 수 있습니다.
또한 이기능은 어플리케이션 scale-out의 성능상 이점을 제공합니다.
예를 들어서
Booking.com은 Master 1대에 25대의 이상의 slave를 운영할때 mastger 노드를 오버로드해서 여러대의 binlog server 형태가 가능합니다.
이렇게 Booking.com은 Master와 Slave Node사이에 Maxscale을 통해서 복제부하를 줄였습니다.