Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

211 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×