Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
MAXSCALE 2.0
IMPLEMENTAÇÃO E CASOS DE USO
By Wagner Bianchi, Principal Remote DBA @ MariaDB Corporation
Email: wagner.bian...
MEETUP SÃO PAULO, 2017
WAGNER BIANCHI
Wagner Bianchi ou somente Bianchi, é atualmente Principal Remote DBA na US/Finlandes...
MEETUP SÃO PAULO, 2017
AGENDA
▸ Explorando o cenário de trabalho;
▸ Instalando Maxscale 2.0;
▸ Configurando o Maxscale 2.0 ...
MEETUP SÃO PAULO, 2017
EXPLORANDO O CENÁRIO DE TRABALHO
▸ VirtualBox + Vagrant
▸ Pastebin (https://tinyurl.com/nyjyvxk):
$...
MEETUP SÃO PAULO, 2017
SOBRE O MAXSCALE
▸ Maxscale é um Database Proxy;
▸ Vários built-in routers e monitors;
▸ Fácil confi...
MEETUP SÃO PAULO, 2017
INSTALANDO E INICIAND O MAXSCALE
▸ Faça o download do Maxscale 2.0:
▸ Inicie o Maxscale através do ...
MEETUP SÃO PAULO, 2017
INSTALANDO E INICIAND O MAXSCALE
▸ Verifique o arquivo de log:
[root@maxscale ~]# tail -f -n100 /var...
MEETUP SÃO PAULO, 2017
REQUISITOS MÍNIMOS MAXSCALE CONFIGS
▸ Os requisitos mínimos para iniciar o Maxscale (arquivo /etc/m...
MEETUP SÃO PAULO, 2017
DEFININDO A [MAXSCALE] SECTION
▸ Globalmente, todo arquivo de configuração do Maxscale começa com um...
MEETUP SÃO PAULO, 2017
MAXKEYS, SENHA DE ACESSO AO BANCO CRIPTOGRAFADA
▸ O client maxkeys é parte da instalação do Maxscal...
MEETUP SÃO PAULO, 2017
MAXSCALE CLIENT INTERFACE: MAXADMIN
▸ Configurações para o Maxadmin (arquivo /etc/maxscale.cnf):
[Ma...
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (OVERVIEW)
Data Writes
Reads
Reads
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT
▸ O ReadWriteSplit é um módulo disponível no Maxscale;
▸ Projetado aumenta...
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (SERVICE)
▸ Configurações para o serviço [readwritesplit_router]:
▸ Aqui te...
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (MYSQL MONITOR)
▸ Configurações para o MySQL Monitor [monitor]:
▸ Aqui temo...
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (LISTENER)
▸ Configurações para o listener [readwritesplit_listener] - qual...
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (RODANDO)
▸ Após iniciar o maxscale:
▸ Serviços ativos:
[root@maxscale max...
MEETUP SÃO PAULO, 2017
MAXSCALE::READWRITESPLIT (STATISTICS)
▸ Depois de alguns rounds de sysbench (oltp.lua):
MaxScale> s...
MEETUP SÃO PAULO, 2017
MAXSCALE::SCHEMAROUTER
accounts_west
accounts_east
accounts_central
MEETUP SÃO PAULO, 2017
MAXSCALE::SCHEMAROUTER
▸ Seguindo o mesmo esquema de configurações, o log nos mostra que:
MariaDB Co...
MEETUP SÃO PAULO, 2017
MAXSCALE::SCHEMAROUTER
▸ Características desse serviço:
▸ Cada MariaDB envolvido precisa ter difere...
MEETUP SÃO PAULO, 2017
MAXSCALE::BINLOGROUTER
Binary Log Download
Reading Binary Logs
MEETUP SÃO PAULO, 2017
CONCLUSÃO
▸ Database Proxy atualmente é parte básica da topologia de bancos de dados;
▸ É possível ...
MEETUP SÃO PAULO, 2017
ANY … QUESTIONS?
Wagner Bianchi
Prochain SlideShare
Chargement dans…5
×

Meetup São Paulo, Maxscale Implementação e Casos de Uso

308 vues

Publié le

Maxscale Implementação e Casos de Uso mostra como implementar o Maxscale e explora os routers ReadWriteSplit, Schemarouter e Binlogrouter.

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Meetup São Paulo, Maxscale Implementação e Casos de Uso

  1. 1. MAXSCALE 2.0 IMPLEMENTAÇÃO E CASOS DE USO By Wagner Bianchi, Principal Remote DBA @ MariaDB Corporation Email: wagner.bianchi@mariadb.com Twitter: @wagnerbianchijr
  2. 2. MEETUP SÃO PAULO, 2017 WAGNER BIANCHI Wagner Bianchi ou somente Bianchi, é atualmente Principal Remote DBA na US/Finlandesa MariaDB Corporation, tendo trabalhado anteriormente em empresas como Percona, Pythian, IBM e Oracle, sempre com operações e entrega de serviços. Bianchi é focado em MariaDB/MySQL/Percona Server, atuando em projetos de alta-disponibilidade, escalabilidade e análise de performance. Além disso, como trabalha em ambiente de operações, tem experiência com soluções de provisionamento, orchestration e monitoramento. Formado em Gerenciamento de Bancos de Dados pela Faculdade Infórium de Tecnologia, com MBA em Administração pela Função Getúlio Vargas e MBA Oracle Database, Bianchi milita na área de sistemas, bancos de dados e operações há mais de 11 anos. Além disso, Bianchi é Oracle Certified Expert (OCE) e Oracle ACE Director desde 2014. Twitter: @wagnerbianchijr Email: wagner.bianchi@mariadb.com 2
  3. 3. MEETUP SÃO PAULO, 2017 AGENDA ▸ Explorando o cenário de trabalho; ▸ Instalando Maxscale 2.0; ▸ Configurando o Maxscale 2.0 para: ▸ Maxscale::ReadWriteSplit; ▸ Maxscale::Schemarouter; ▸ Maxscale::Binlogrouter; 3
  4. 4. MEETUP SÃO PAULO, 2017 EXPLORANDO O CENÁRIO DE TRABALHO ▸ VirtualBox + Vagrant ▸ Pastebin (https://tinyurl.com/nyjyvxk): $ vagrant status Current machine states: box01 running (virtualbox) (MASTER, SSL) box02 running (virtualbox) (SLAVE, SSL) box03 running (virtualbox) (SLAVE, SSL) maxscale running (virtualbox) (SLAVE, SSL) Vagrantfile: arquivo de configurado do projeto Vagrant (necessário box "centos7.0_x86_64") MariaDB.repo: repositório YUM MariaDB 10.1 (CentOS 7) setup_env.sh: script que vai instalar os pacotes, iniciar os serviços e replicação setup_maxscale.sh: script que fará a instalação do maxscale com configuração básica server-01.cnf: arquivo de configuração do MariaDB Server no box01 server-01.cnf: arquivo de configuração do MariaDB Server no box02 server-01.cnf: arquivo de configuração do MariaDB Server no box03 maxscale.cnf: arquivo de configurações básicas para o Maxscale 4
  5. 5. MEETUP SÃO PAULO, 2017 SOBRE O MAXSCALE ▸ Maxscale é um Database Proxy; ▸ Vários built-in routers e monitors; ▸ Fácil configuração e monitoramento dos bancos de dados; ▸ Onde possível, deve ser utilizado; ▸ Rápido particionamento de escritas e leituras; ▸ Possibilidades inúmeras; 5
  6. 6. MEETUP SÃO PAULO, 2017 INSTALANDO E INICIAND O MAXSCALE ▸ Faça o download do Maxscale 2.0: ▸ Inicie o Maxscale através do systemd: ▸ Ou se existir um script que você queira apontar: $ sudo rpm -Uvih https://downloads.mariadb.com/MaxScale/2.0.3/rhel/7/x86_64/maxscale-2.0.3-1.rhel.7.x86_64.rpm $ systemctl status maxscale.service $ systemctl start maxscale.service $ systemctl status maxscale.service $ sudo maxscale —config=/root/maxscale_config/readwritesplit.cnf
  7. 7. MEETUP SÃO PAULO, 2017 INSTALANDO E INICIAND O MAXSCALE ▸ Verifique o arquivo de log: [root@maxscale ~]# tail -f -n100 /var/log/maxscale/maxscale1.log MariaDB Corporation MaxScale/var/log/maxscale/maxscale1.log Mon May 8 16:25:00 2017 ----------------------------------------------------------------------- 2017-05-08 16:25:00 notice : Working directory: /var/log/maxscale 2017-05-08 16:25:00 notice : MariaDB MaxScale 2.0.3 started 2017-05-08 16:25:00 notice : MaxScale is running in process 4670 2017-05-08 16:25:00 notice : Configuration file: /etc/maxscale.cnf 2017-05-08 16:25:00 notice : Log directory: /var/log/maxscale 2017-05-08 16:25:00 notice : Data directory: /var/lib/maxscale 2017-05-08 16:25:00 notice : Module directory: /usr/lib64/maxscale 2017-05-08 16:25:00 notice : Service cache: /var/cache/maxscale […snip…] 2017-05-08 16:25:00 notice : Started MaxScale log flusher. 2017-05-08 16:25:00 notice : Server changed state: box01[192.168.50.11:3306]: new_master. [Running] -> [Master, Running] 2017-05-08 16:25:00 notice : Server changed state: box02[192.168.50.12:3306]: new_slave. [Running] -> [Slave, Running] 2017-05-08 16:25:00 notice : Server changed state: box03[192.168.50.13:3306]: new_slave. [Running] -> [Slave, Running] 2017-05-09 19:57:44.323 notice : A Master Server is now available: 192.168.50.11:3306
  8. 8. MEETUP SÃO PAULO, 2017 REQUISITOS MÍNIMOS MAXSCALE CONFIGS ▸ Os requisitos mínimos para iniciar o Maxscale (arquivo /etc/maxscale.cnf): ▸ Threads ▸ Service ▸ Listener ▸ MySQL Monitor ▸ Maxadmin Configuration
  9. 9. MEETUP SÃO PAULO, 2017 DEFININDO A [MAXSCALE] SECTION ▸ Globalmente, todo arquivo de configuração do Maxscale começa com uma sessão [maxscale], como abaixo: ▸ threads: # de threads utilizadas pelo Maxscale * (1.4 | 2.0 | 2.1) ▸ auth_connect_timeout: timeout para conexão com backend; ▸ auth_read_timeout: tempo em segundos de timeout para leitura de dados; ▸ ms_timeout: habilita milissegundos nos logs; [maxscale] threads=auto auth_connect_timeout=900000 auth_read_timeout=900000 ms_timestamp=1
  10. 10. MEETUP SÃO PAULO, 2017 MAXKEYS, SENHA DE ACESSO AO BANCO CRIPTOGRAFADA ▸ O client maxkeys é parte da instalação do Maxscale: ▸ Quando iniciar o Maxscale, os logs apontarão: #: generate keys [root@maxscale ~]# maxkeys Generating .secrets file in /var/lib/maxscale. #: generate the encrypted password to add to the maxscale config file [root@maxscale ~]# maxpasswd /var/lib/maxscale/ <password do usuário no db> DF5822F1038A154FEB68E667740B1160 notice : Using encrypted passwords. Encryption key: '/var/lib/maxscale/.secrets'
  11. 11. MEETUP SÃO PAULO, 2017 MAXSCALE CLIENT INTERFACE: MAXADMIN ▸ Configurações para o Maxadmin (arquivo /etc/maxscale.cnf): [MaxAdmin] type=service router=cli [MaxAdmin Unix Listener] type=listener service=MaxAdmin protocol=maxscaled socket=default [MaxAdmin Inet Listener] type=listener service=MaxAdmin protocol=maxscaled address=localhost port=6603
  12. 12. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (OVERVIEW) Data Writes Reads Reads
  13. 13. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT ▸ O ReadWriteSplit é um módulo disponível no Maxscale; ▸ Projetado aumentar a escala de leitura, mantendo a consistência dos dados; ▸ Consultas de leitura são enviadas à todos e/ou somente slaves; ▸ Consultas de escrita são enviadas ao master; ▸ Vamos definir o arquivo ~/maxscale_configs/readwritesplit.conf nos próximos slides;
  14. 14. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (SERVICE) ▸ Configurações para o serviço [readwritesplit_router]: ▸ Aqui temos: ▸ max_slave_lagging=30 ▸ max_slave_connections=2 ▸ router_options para detectar o slave mais adiantado (evitar ler stall data) [readwritesplit_router] type=service router=readwritesplit servers=box01,box02,box03 max_slave_replication_lag=30 max_slave_connections=2 router_options=slave_selection_criteria=LEAST_BEHIND_MASTER,master_accept_reads=false user=maxuser passwd=B264592E96D87B1175F315D5931A60D2
  15. 15. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (MYSQL MONITOR) ▸ Configurações para o MySQL Monitor [monitor]: ▸ Aqui temos: ▸ detect_replication_lag=true ▸ detect_stale_master=true ▸ events ▸ script [monitor] type=monitor module=mysqlmon servers=box01,box02,box03 monitor_interval=100 detect_replication_lag=true detect_stale_master=true script=/root/maxscale_configs/max_failover_check.wb events=master_down,slave_down user=maxmon passwd=B264592E96D87B1175F315D5931A60D2
  16. 16. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (LISTENER) ▸ Configurações para o listener [readwritesplit_listener] - qual porta connectar? ▸ Aqui temos: ▸ A aplicação se conecta ao endereço -h address -P 53306 ▸ A variável address não é mandatório e pode ser omitida (bind to all interfaces) ▸ Suporte nativo à SSL [readwritesplit_listener] type=listener service=readwritesplit_router protocol=MySQLClient address=192.168.50.100 port=53306
  17. 17. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (RODANDO) ▸ Após iniciar o maxscale: ▸ Serviços ativos: [root@maxscale maxscale_configs]# maxadmin list servers Servers. -------------------+-----------------+-------+-------------+-------------------- Server | Address | Port | Connections | Status -------------------+-----------------+-------+-------------+-------------------- box01 | 192.168.50.11 | 3306 | 10 | Master, Running box02 | 192.168.50.12 | 3306 | 122 | Slave, Running box03 | 192.168.50.13 | 3306 | 98 | Slave, Running -------------------+-----------------+-------+-------------+-------------------- [root@maxscale maxscale_configs]# maxadmin list services Services. --------------------------+----------------------+--------+--------------- Service Name | Router Module | #Users | Total Sessions --------------------------+----------------------+--------+--------------- readwritesplit_router | readwritesplit | 43 | 216 MaxAdmin | cli | 3 | 3 --------------------------+----------------------+--------+---------------
  18. 18. MEETUP SÃO PAULO, 2017 MAXSCALE::READWRITESPLIT (STATISTICS) ▸ Depois de alguns rounds de sysbench (oltp.lua): MaxScale> show service "readwritesplit_router" Service 0x109ba70 Service: readwritesplit_router Router: readwritesplit (0x7fab5e36c2c0) State: Started Number of router sessions: 2822 Current no. of router sessions: 0 Number of queries forwarded: 5644 Number of queries forwarded to master:2815 (49.88%) Number of queries forwarded to slave: 2829 (50.12%) Number of queries forwarded to all: 0 (0.00%) Started: Tue May 9 22:44:15 2017 Root user access: Disabled Backend databases: 192.168.50.11:3306 Protocol: MySQLBackend 192.168.50.12:3306 Protocol: MySQLBackend 192.168.50.13:3306 Protocol: MySQLBackend Users data: 0x10b0570 Total connections: 2823 Currently connected: 1657
  19. 19. MEETUP SÃO PAULO, 2017 MAXSCALE::SCHEMAROUTER accounts_west accounts_east accounts_central
  20. 20. MEETUP SÃO PAULO, 2017 MAXSCALE::SCHEMAROUTER ▸ Seguindo o mesmo esquema de configurações, o log nos mostra que: MariaDB Corporation MaxScale/var/log/maxscale/maxscale1.log Wed May 10 02:03:07 2017 ----------------------------------------------------------------------- 2017-05-10 02:03:07 notice : Working directory: /var/log/maxscale 2017-05-10 02:03:07 notice : MariaDB MaxScale 2.0.3 started 2017-05-10 02:03:07 notice : MaxScale is running in process 4289 2017-05-10 02:03:07 notice : Configuration file: /root/maxscale_configs/schemarouter.cnf 2017-05-10 02:03:07 notice : Log directory: /var/log/maxscale 2017-05-10 02:03:07 notice : Data directory: /var/lib/maxscale 2017-05-10 02:03:07 notice : Module directory: /usr/lib64/maxscale 2017-05-10 02:03:07 notice : Service cache: /var/cache/maxscale 2017-05-10 02:03:07 notice : Initializing Schema Sharding Router. 2017-05-10 02:03:07 notice : Loaded module schemarouter: V1.0.0 from /usr/lib64/maxscale/libschemarouter.so 2017-05-10 02:03:07 notice : Initialise the MySQL Monitor module V1.4.0. 2017-05-10 02:03:07 notice : Loaded module mysqlmon: V1.4.0 from /usr/lib64/maxscale/libmysqlmon.so 2017-05-10 02:03:07 notice : No query classifier specified, using default 'qc_sqlite'. 2017-05-10 02:03:07 notice : Loaded module qc_sqlite: V1.0.0 from /usr/lib64/maxscale/libqc_sqlite.so 2017-05-10 02:03:07 notice : Schemarouter: Authentication data is fetched from all servers. To disable this add 'auth_all_servers=0' to the service. 2017-05-10 02:03:07 notice : Loaded 3 MySQL Users for service [Sharded Service]. 2017-05-10 02:03:07 notice : Loaded module MySQLClient: V1.1.0 from /usr/lib64/maxscale/libMySQLClient.so 2017-05-10 02:03:07 notice : Listening connections at 0.0.0.0:4000 with protocol MySQL 2017-05-10 02:03:07 notice : MaxScale started with 1 server threads. 2017-05-10 02:03:07 notice : Started MaxScale log flusher.
  21. 21. MEETUP SÃO PAULO, 2017 MAXSCALE::SCHEMAROUTER ▸ Características desse serviço: ▸ Cada MariaDB envolvido precisa ter diferente bancos de dados de usuário; ▸ Caso haja um mesmo banco de dados em mais de um db, problema; ▸ O router determina quais são os bancos e seus hosts ao iniciar o Maxscale; ▸ As consultas são roteadas com base em uma tabela montado onStart; [root@maxscale maxscale_configs]# maxadmin list servers Servers. -------------------+-----------------+-------+-------------+-------------------- Server | Address | Port | Connections | Status -------------------+-----------------+-------+-------------+-------------------- accounts_east | 192.168.50.14 | 3306 | 16534 | Running accounts_west | 192.168.50.15 | 3306 | 7590 | Running -------------------+-----------------+-------+-------------+--------------------
  22. 22. MEETUP SÃO PAULO, 2017 MAXSCALE::BINLOGROUTER Binary Log Download Reading Binary Logs
  23. 23. MEETUP SÃO PAULO, 2017 CONCLUSÃO ▸ Database Proxy atualmente é parte básica da topologia de bancos de dados; ▸ É possível adicionar caches de consultas, filtros e muitos outros serviços; ▸ Combinar os módulos só depende da criatividade do administrador de sistemas; ▸ Persistent Connections para sistemas que trabalham com Connection Pooling; ▸ Além de módulos, possui filtros como: ▸ Database Firewall; ▸ Query Cache; ▸ Query Log; ▸ Named Server (regex based routing); ▸ Top Filter (query statistics); ▸ Tee Filter (query mirroring).
  24. 24. MEETUP SÃO PAULO, 2017 ANY … QUESTIONS? Wagner Bianchi

×