Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
MaxScale
목 차
I. MaxScale 소개
― 개요
― 특징
― 라이센스
― 아키텍처
II. MaxScale 구성 및 운영
― 설치
― maxscale.cnf 예시
― Configure Concepts
― High Availab...
MaxScale 소개
개요
Database
Customer Centric
Front-end
Transaction Focused
Back-end
▪ Continuous Delivery
▪ Microservices
▪ Modular deploy...
개요
Database
Customer Centric
Front-end
Transaction Focused
Back-end
▪ Continuous Delivery
▪ Microservices
▪ Modular deploy...
개요
query query
resultresult
…Apps…
• [Database]
MySQL 5.1 later
MariaDB/Percona all versions
ClustrixDB
• [Cluster]
Galera...
특징
MaxScale is a database proxy and more specifically
Database를 방해하지 않으면서, Apps에 영향을 주지 않으면서,
Database와 Apps를 완벽하게 분리할 수 있...
특징
보안성
SQL-Injection, DDoS, 비인증접속 등의
보안위협으로부터 데이터 보호
Data in Motion
▪ 데이터 이동(Network)시 end-to-end SSL 제공
Data in Use
▪ Max...
특징
유연성
Content Aware(강화된 Proxy기능)
▪ 서버의 요구내용 인식
▪ 서버의 구성 및 상태 인식
Query Routing
▪ Load balancing: 트랜잭션 로드밸런싱과 모니터링
▪ Read/W...
특징
고가용성(HA)
SPOF없는 고가용성 지원
Ensure database uptime
▪ 자동 Fail-Over
▪ New Master로 Slave들의 Master정보 변경.
▪ Master가 Fail상태일때도 Re...
특징
데이터 스트리밍
Slaves
Binlog,
Avro,
JSON
Master
MaxScale
Binary log
events
Avro or
JSON
events
실시간 분석을 위해서 data lake에 트랜잭션 데이...
라이센스
BSL (Business Source License)
▪ Maxscale 2.0 ~ 2.0.4 은 BSL 1.0 적용
▪ BSL은 Closed Source 또는 Open Core 라이센스 모델의 새로운 대안입니...
라이센스
GA Latest Releases (2019-07-20 현재)
• MaxScale 2.3.9 : 2019-07-04
• MaxScale 2.2.21 : 2019-05-08 √
• MaxScale 2.1.17 :...
아키텍처
Applications
Containers
MariaDB Platform
MariaDB MaxScale
CDC
MariaDB Server
InnoDB + MyRocks
MariaDB Server
ColumnSt...
아키텍처
MaxScale
• Threading
• Logging
• Plugin loading
• Lifetime management
APIs Protocol Authenticator Filter Router Query...
아키텍처
MaxScale
Protocol
Filter Filter
Servers State
Router
Protocol
Monitor
Client
Servers
Query
Classifier
monitors
update...
아키텍처
객체 설명 종류 비고
Protocol 서버간 통신.
mariadbclient
mariadbbackend
Filter Router앞에서 Request에 대한 정보 거부,처리,변경,기록.
dbfwfilter
cac...
아키텍처
객체 설명 주요 옵션
Readconroute 매개변수/가중치에 따른 가벼운 로드밸런서. router_options (master,slave, synced, ndb,running)
Readwritesplit 클러...
아키텍처
객체 설명 주요 옵션/비고
namedserverfilter 패치되는 패턴에 일치하는 SQL을 특정 Server로 라우팅. match= *from *users
qlafilter 세션별로 모든 SQL 기록. mat...
아키텍처
객체 설명 주요 옵션/비고 소개(버전)
ccrfilter 일관된 주요읽기 수행제어. 주요하지 않는 읽기는 스케일아웃. match =. * INSERT. * 2.1
insertstream 트랜잭션에 다수의 INS...
MaxScale 구성 및 운영
설치
https://mariadb.com/downloads/#mariadb_platform-mariadb_maxscale
MariaDB MaxScale 선택
설치하고자 하는 버전 선택
MaxScale를 설치하려는 OS ...
설치
• 미리 download 한 RPM 패키지 혹은 yum repository를 구성하여 install
• MaxScale이 DB에서 사용 할 유저 생성
• Configure 설정 (사용 할 port 방화벽 open)...
기본 환경구성(/etc/maxscale.cnf 예시)
https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-configuration-usage-scenarios...
Configure Concepts
https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-configuration-usage-scenarios/#concepts
...
Configure Concepts
https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-configuration-usage-scenarios/#objects
O...
High Availability
https://mariadb.com/resources/blog/maxscale-ha-setup-using-keepalived-and-maxctrl/
MaxScale
With
Keepali...
운영
• maxadmin 사용을 위한 configure 설정
• Maxadmin cli 접속
• Command 확인
[MaxAdmin]
type=service
router=cli
[MaxAdmin Unix Listene...
운영
• Linux shell 에서 maxadmin cli에 접속하지 않고도 maxctrl 명령으로 동일한 요건 수행 가능
• maxctrl은 REST-API 와 통신.
• maxadmin의 대체용.
Ex)
# maxc...
성능
MaxScale 2.0.5 (up to)
Hardware: Two physical servers, 16 cores / 32 hyperthreads, 12
8GB RAM and an SSD drive, connect...
성능
https://www.slideshare.net/MariaDB/m18-maxscale
MaxScale 2.1.0
● The architectural changeth
at allowed the removal of a...
성능
https://www.slideshare.net/MariaDB/m18-maxscale
MaxScale 2.2.2
MaxScale Limitation
• 2.1.2 및 이전 버전에서는 configure 파일 작성 시 한 줄에 1024 자로 제한
― MaxScale 2.1.3에서 16384 자로 증가
― MaxScale 2.3.0은이 제한을 16777216 자로 증가
...
• XA트랜잭션 탐지 불가
― XA 명령은 알 수 없는 명령으로 처리
― 데이터베이스를 잠재적으로 수정할 수 있는 작업으로 취급(readwritesplit 일 경우, 마스터로 라우트 됨)
― XA 트랜잭션 내부에서 수행...
• MySQL / MariaDB 프로토콜 지원의 한계 (MariaDBClient)
― Compression은 Server handshake에 포함되지 않음
― KILL QUERY ID <query_id> 유형 문을 지원...
• Database Firewall 제한 (dbfwfilter)
― 다중 명령문을 지원하지 않음 (클라이언트에 오류가 전송됨)
• Tee filter 제한 (tee)
― binary protocol prepared st...
• Avrorouter 제한 (avrorouter)
― avrorouter는 다음 데이터 유형, 변환 또는 SQL 문을 지원하지 않음: BIT, 정수 유형에서 문자열 유형으로 CAST 함수,
CREATE TABLE .....
MaxScale 활용
Router
• Case ) 전통적인 물리장비(L4)의 대체.
[A Service]
type=service
router=readconroute
servers=srv1,srv2,srv3,srv4….
router_optio...
HA
• Case ) 다양한 Cluster구성에 대한 지원.
#mariadbmon : Master-Slave Replication Cluster’s Monitoring
#mmmon : Multi-Master Replic...
Flexibility & Scalability
• Case ) Tee Filter를 통한 신규 version에 대한 검증
[A-Service]
type=service
router = readconroute
filters...
MaxScale 적용사례
적용사례
• Galera Cluster의 Routing Solution
module=galeramon
disable_master_failback=0|1
• ColumnStore 서비스의 Routing Solution
•...
docker 구축방법, readwritesplit multi user?
• Docker 이용
https://hub.docker.com/r/mariadb/maxscale/
• 인증/권한
- MaxScale 설치 host에...
성능 , Transaction Routing
• 성능
2.1에 성능이 많이 개선된 거 같아요. 2.2 추천.
2019.07.24 현재 GA버전
2.2.21
2.3.9
• Transaction Routing
MaxScal...
CDC, LB, HA
• CDC
https://mariadb.com/resources/blog/streaming-data-from-mariadb-server-into-mariadb-columnstore-via-maria...
MaxScale 소개
MaxScale 소개
Nächste SlideShare
Wird geladen in …5
×

MaxScale 소개

438 Aufrufe

Veröffentlicht am

MaxScale의 이해도가 필요하시면~

Veröffentlicht in: Ingenieurwesen
  • Als Erste(r) kommentieren

MaxScale 소개

  1. 1. MaxScale
  2. 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
  3. 3. MaxScale 소개
  4. 4. 개요 Database Customer Centric Front-end Transaction Focused Back-end ▪ Continuous Delivery ▪ Microservices ▪ Modular deployment ▪ Security ▪ Scalability ▪ High quality data management Application Database Customer Centric Front-end Transaction Focused Back-end ▪ Continuous Delivery ▪ Microservices ▪ Modular deployment ▪ Security ▪ Scalability ▪ High quality data management
  5. 5. 개요 Database Customer Centric Front-end Transaction Focused Back-end ▪ Continuous Delivery ▪ Microservices ▪ Modular deployment ▪ Security ▪ Scalability ▪ High quality data management Application Database Customer Centric Front-end Transaction Focused Back-end ▪ Continuous Delivery ▪ Microservices ▪ Modular deployment ▪ Security ▪ Scalability ▪ High quality data management MaxScale
  6. 6. 개요 query query resultresult …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. 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. 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. 9. 특징 유연성 Content Aware(강화된 Proxy기능) ▪ 서버의 요구내용 인식 ▪ 서버의 구성 및 상태 인식 Query Routing ▪ Load balancing: 트랜잭션 로드밸런싱과 모니터링 ▪ Read/Write 분할처리 Replication ▪ Large Master-Slave구조에서 고성능 복제(Binlog서버) Multi-tenant Database Scaling ▪ Schema sharding을 위한 분산처리 지원 Read Write
  10. 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
  11. 11. 특징 데이터 스트리밍 Slaves Binlog, Avro, JSON Master MaxScale Binary log events Avro or JSON events 실시간 분석을 위해서 data lake에 트랜잭션 데이터 스트리밍 제공. ▪ Binary Log Event에서 변경데이터를 캡처하고 이를 AVRO or JSON형식으로 변환하여 이를 실시간으로 Kafka broker통해 하둡, 카산드라 같은 빅데이터 플랫폼에 데이터를 제공하는 Producer역할 수행 Data Warehouse Slaves Binlog, Avro, JSON
  12. 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에게~
  13. 13. 라이센스 GA Latest Releases (2019-07-20 현재) • MaxScale 2.3.9 : 2019-07-04 • MaxScale 2.2.21 : 2019-05-08 √ • MaxScale 2.1.17 : 2018-05-16 • MaxScale 2.0.6 : 2017-06-14 • MaxScale 1.4.5 : 2017-02-01
  14. 14. 아키텍처 Applications Containers MariaDB Platform MariaDB MaxScale CDC MariaDB Server InnoDB + MyRocks MariaDB Server ColumnStore Transactional Analytical Kubernetes (Helm) Docker (Compose) C JDBC ODBC Node.js Ingest streaming data Kafka connector Administration SQL Diagnostic Manager SQLyog MariaDB Backup MariaDB Flashback Import bulk data Spark connector C/Java/Python API
  15. 15. 아키텍처 MaxScale • Threading • Logging • Plugin loading • Lifetime management APIs Protocol Authenticator Filter Router Query Classifier Monitor … … … … … … MariaDBClient MySQLAuth DBFwfilter ReadWriteSplit qc_sqlite MariaDBMon • REST-API (8989) • Admin Functionality • etc. Core Utility maxadmin maxbinlog check MaxCtrl
  16. 16. 아키텍처 MaxScale Protocol Filter Filter Servers State Router Protocol Monitor Client Servers Query Classifier monitors updates uses modified parser from sqlite
  17. 17. 아키텍처 객체 설명 종류 비고 Protocol 서버간 통신. mariadbclient mariadbbackend Filter Router앞에서 Request에 대한 정보 거부,처리,변경,기록. dbfwfilter cache regexfilter qlafilter [section가능] Routers Request의 특성에 따라 백엔드로 라우팅 제공. readconnroute readwritesplit Monitor 특정 클러스터상태, 라우팅 상태 등을 모니터링, failover. mariadbmon, mysqlmon galeramon, mmmon auroramon, csmon [section가능] Server 백엔드 서버정보 사용자정의 [section가능] Service 데이터베이스 추상화 집합(like single database) 사용자정의 [section가능] Listener MaxScale이 수신대기 포트정보. 리스너에 연결된 서비스로 전달. 사용자정의 [section가능] * section : maxscale config상의 단위 https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-configuration-usage-scenarios 구성요소 (버전간 다소 차이가 있어요.) module
  18. 18. 아키텍처 객체 설명 주요 옵션 Readconroute 매개변수/가중치에 따른 가벼운 로드밸런서. router_options (master,slave, synced, ndb,running) Readwritesplit 클러스터의 일관성을 유지하면서 읽기/쓰기 분산 로드밸런서. router_options ( 많아요 ^^;;) Binlogrouter Master와 Slave사이에서 복제 프로토콜 프록시 모듈. binlogdir Avrorouter Master or Binlogserver로부터 avro 형식파일로 자동변환 후 CDC 프로토콜에 응답가능. avrodir (https://avro.apache.org/docs/current/) Cli maxadmin cli interface SchemaRouter 데이터베이스 기반 샤딩, ignore_databases HintRouter 힌트에 따른 패킷 라우팅 ?? beta버전….(introduced in 2.2) debugcli port=4442, protocol=telnetd (admin / mariadb) cat 모든 서버에 명령을 라우팅. 실험용. * section : maxscale config상의 단위 https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-configuration-usage-scenarios Router (버전간 다소 차이가 있어요.)
  19. 19. 아키텍처 객체 설명 주요 옵션/비고 namedserverfilter 패치되는 패턴에 일치하는 SQL을 특정 Server로 라우팅. match= *from *users qlafilter 세션별로 모든 SQL 기록. match=select.*from.*customer.*where regexfilter 매치되는 패턴에 대한 SQL 변경. 정규식 String을 replace 처리. match=TYPEs*= replace=ENGINE= tee 매치되는 패턴에 대한 SQL의 이중으로 복사 전송. match=insert[ ]*into[ ]*orders topfilter 매치되는 패턴에 대한 모니터링(보고서). filebase = 경로 dbfwfilter 매치되는 패턴에 대한 SQL 차단. rules = role1.cnf mqfilter RabbitMQ 필터. 정규화된 SQL/응답을 RabbitMQ 브로커로 푸시. Filters @ 복수의 필터적용은 ‘|’ 사용 filters = top | qlafilter
  20. 20. 아키텍처 객체 설명 주요 옵션/비고 소개(버전) ccrfilter 일관된 주요읽기 수행제어. 주요하지 않는 읽기는 스케일아웃. match =. * INSERT. * 2.1 insertstream 트랜잭션에 다수의 INSERT문을 LOAD DATA LOCAL INFILE~로 변환 2.1 실험용 masking 특정 컬럼의 반환값을 마스킹처리. rules = rule2.cnf 2.1 luafilter lua 스크립트에서 일부 함수를 호출하는 필터. 2.1 실험용 maxrows 결과셋으로 전달되는 rows를 제한하는 필터. max_resultset_size=64Ki 2.1 tpmfilter 트랜잭션 성능 모니터링 필터 filename=tpm.log 2.1 cache select 결과값에 대한 캐싱후 제공. max_count = 1000 2.1 binlogfilter 빈로그 복제처리의 필터링 처리.(match or exclude) exclude=/[.]orders/ 2.3 comment 요청 SQL에 주석 삽입. inject="IP=$IP" 2.3 throttlefilter 세션의 최대쿼리빈도 (초당 쿼리 수)를 구성가능한 값으로 제한에 사용 max_qps = 500 2.3 Filters( After 2.1)
  21. 21. MaxScale 구성 및 운영
  22. 22. 설치 https://mariadb.com/downloads/#mariadb_platform-mariadb_maxscale MariaDB MaxScale 선택 설치하고자 하는 버전 선택 MaxScale를 설치하려는 OS 플랫폼 선택 원하는 버전 혹은 설치종류가 없을 경우 (rpm/binary)
  23. 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. 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
  25. 25. Configure Concepts https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-configuration-usage-scenarios/#concepts Glossary Word Description connection routing MariaDB MaxScale이 클라이언트의 연결을 수락하고 단일 연결을 사용하여 해당 연결의 데이터를 단일 데이터베이스로 라우팅하는 요청을 처리하는 방법 statement routing 연결 내의 각 요청을 개별적으로 처리하는 방법 module 별도의 코드 엔티티, MariaDB MaxScale에 동적으로 로드되어 사용 가능한 기능을 향상 connection failover MariaDB MaxScale과 데이터베이스 서버 간 사용되는 연결이 실패하면 클라이언트의 개입없이 MariaDB MaxScale에 의해 다른 서버로 자동 대체 backend database MariaDB MaxScale 뒤에 위치하며 MariaDB MaxScale을 통해 응용 프로그램에 의해 액세스되는 데이터베이스를 지칭하는 용어 REST API HTTP 관리 인터페이스
  26. 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
  27. 27. High Availability https://mariadb.com/resources/blog/maxscale-ha-setup-using-keepalived-and-maxctrl/ MaxScale With Keepalived MaxScale With COROSYNC/PACEMAKER OR
  28. 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. 29. 운영 • Linux shell 에서 maxadmin cli에 접속하지 않고도 maxctrl 명령으로 동일한 요건 수행 가능 • maxctrl은 REST-API 와 통신. • maxadmin의 대체용. Ex) # maxctrl list servers # maxctrl list listener Etc.
  30. 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. 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.
  32. 32. 성능 https://www.slideshare.net/MariaDB/m18-maxscale MaxScale 2.2.2
  33. 33. MaxScale Limitation
  34. 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. 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. 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. 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. 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
  39. 39. MaxScale 활용
  40. 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. 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. 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
  43. 43. MaxScale 적용사례
  44. 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초 마다 갱신)
  45. 45. 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
  46. 46. 성능 , 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 제약사항을 배포하는게 좋겠어요.
  47. 47. 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/)

×