Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

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

275 visualizaciones

Publicado el

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

Publicado en: Tecnología
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

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

×