MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Migrando do Maxscale para o ProxySQL Load Balancer

Um balanceador de carga de banco de dados, ou proxy, é um serviço de middleware entre a camada de aplicativo e a camada de banco de dados. O aplicativo se conecta ao proxy do banco de dados e o proxy encaminha a conexão ao banco de dados. Existem alguns benefícios usando um proxy de banco de dados, por exemplo:dividir consultas de leitura e gravação, consultas de cache, distribuir consultas com base em algum algoritmo de roteamento, reescrever consultas e dimensionar sua carga de trabalho somente leitura. Um proxy de banco de dados também abstrai a topologia do banco de dados (e quaisquer alterações) para a camada do aplicativo, de modo que os aplicativos só precisam se conectar a um único endpoint.

Existem vários proxies de banco de dados, de opções comerciais a de código aberto, por exemplo, HAProxy, Nginx, ProxySQL, Maxscale etc. Neste blog, discutiremos como migrar proxies de banco de dados do Maxscale para o ProxySQL com a ajuda do ClusterControl.

Arquitetura atual com Maxscale

Considere uma arquitetura de banco de dados altamente disponível que consiste em 3 nós em um Galera Cluster e, em cima dele, 2 serviços Maxscale e Keepalived para alta disponibilidade do proxy de banco de dados. O Galera Cluster é uma replicação “virtualmente” síncrona, usa uma certificação baseada em replicação garantindo que seus dados estarão disponíveis em todos os nós. A arquitetura atual é mostrada abaixo:

Maxscale é um proxy de banco de dados da MariaDB Corporation, que atua como middleware entre aplicativos e bancos de dados.

Aqui está a arquitetura de topologia para balanceadores de carga Galera Cluster e Maxscale no ClusterControl. Você pode implantar tudo isso diretamente do ClusterControl ou importar bancos de dados e nós proxy existentes para o ClusterControl. Você pode ver sua topologia de banco de dados na guia Topologia.

Implantar ProxySQL e Keepalived

ProxySQL é outro proxy de banco de dados do ProxySQL, que fornece alguns recursos como cache de consulta, reescrita de consultas, divisão de consultas para gravação e leitura com base no padrão de consultas. Para implantar o ProxySQL no ClusterControl, você precisa ir para Manage -> Load Balancers em seu cluster. O ClusterControl suporta alguns proxies de banco de dados diferentes; HAProxy, ProxySQL, MaxScale.

Escolha ProxySQL, e ele mostrará a página abaixo:

Precisamos escolher o endereço do servidor onde o ProxySQL será instalado. Podemos instalar nos nodes existentes ou se você quiser ter um node dedicado para ProxySQL, basta digitar o endereço IP na lista. Preencha a senha para usuários de Administração e Monitoramento, Adicione o usuário do aplicativo no ProxySQL ou você pode configurar mais tarde. Habilite os servidores de banco de dados a serem incluídos no balanceamento de carga definido no ProxySQL. Clique no botão Implantar ProxySQL. Precisamos ter pelo menos 2 ProxySQL para alta disponibilidade.

Se esquecermos de adicionar um usuário de banco de dados ao ProxySQL durante a configuração, podemos configurá-lo na guia de usuário do ProxySQL conforme mostrado abaixo:

O ProxySQL requer que os usuários do banco de dados também sejam configurados no ProxySQL.

Após a implantação do ProxySQL, continuamos a configurar o Keepalived em cada host do ProxySQL. Os serviços Keepalived atuarão como funções de mestre/backup nas instâncias do ProxySQL. O serviço Keepalived usa VIP (Endereço IP Virtual), portanto, o aplicativo se conectará a um Endereço IP virtual na função mestre e encaminhará a conexão para o ProxySQL local. Se os serviços falharem, o VIP será automaticamente transferido para outro nó.

A implantação do keepalived no ClusterControl é feita na mesma página do proxy do banco de dados, basta escolher a guia Keepalived. Escolha o tipo de balanceador de carga, que é ProxySQL, e adicione o ProxySQL atual para Keepalived1 e Keepalived2. Preencha o endereço IP virtual e a interface de rede. E, finalmente, clique no botão Deploy Keepalived.

Executar dois ProxySQL com serviços Keepalived nos dá uma camada de proxy de alta disponibilidade. No ClusterControl, ele é mostrado na visualização de topologia abaixo:

Alternância

A alternância do tráfego é realmente simples, basta alterar a conexão do endereço IP na camada de aplicação para usar o Endereço IP Virtual para ProxySQL, e então monitorar o tráfego através do ProxySQL.