Os balanceadores de carga são um componente essencial na alta disponibilidade do banco de dados; especialmente ao tornar as alterações de topologia transparentes para os aplicativos e implementar a funcionalidade de divisão de leitura e gravação. O ClusterControl fornece uma variedade de recursos para implantar, monitorar e configurar com segurança as principais tecnologias de balanceamento de carga de código aberto do setor.
No ano passado, adicionamos suporte para ProxySQL e adicionamos vários aprimoramentos para HAProxy e Maxscale do MariaDB. Continuamos essa tradição com a versão mais recente do ClusterControl 1.5.
Com base no feedback que recebemos de nossos usuários, melhoramos a forma como o ProxySQL é gerenciado. Também adicionamos suporte para HAProxy e Keepalived para serem executados em clusters PostgreSQL.
Nesta postagem do blog, veremos essas melhorias...
ProxySQL - Melhorias no gerenciamento de usuários
Anteriormente, a interface do usuário só permitia que você criasse um novo usuário ou adicionasse um existente, um de cada vez. Um feedback que recebemos de nossos usuários foi que é muito difícil gerenciar um grande número de usuários. Ouvimos e no ClusterControl 1.5, agora é possível importar grandes lotes de usuários. Vamos dar uma olhada em como você pode fazer isso. Em primeiro lugar, você precisa ter seu ProxySQL implantado. Em seguida, vá para o nó ProxySQL e, na guia Usuários, você verá um botão “Importar usuários”.

Depois de clicar nele, uma nova caixa de diálogo será aberta:

Aqui você pode ver todos os usuários que o ClusterControl detectou em seu cluster. Você pode rolar por eles e escolher os que deseja importar. Você também pode selecionar ou desmarcar todos os usuários de uma exibição atual.

Assim que você começar a digitar na caixa Pesquisar, o ClusterControl filtrará os resultados não correspondentes, restringindo a lista apenas aos usuários relevantes para sua pesquisa.

Você pode usar o botão "Selecionar tudo" para selecionar todos os usuários que correspondem à sua pesquisa. Claro, depois de selecionar os usuários que deseja importar, você pode limpar a caixa de pesquisa e iniciar outra pesquisa:

Observe “(7 selecionados)” - informa quantos usuários, no total (não apenas desta pesquisa), você selecionou para importar. Você também pode clicar nele para ver apenas os usuários que você selecionou para importar.

Quando estiver satisfeito com sua escolha, você pode clicar em “Avançar” para ir para a próxima tela.

Aqui você precisa decidir qual deve ser o hostgroup padrão para cada usuário. Você pode fazer isso por usuário ou globalmente, para todo o conjunto ou um subconjunto de usuários resultante de uma pesquisa.

Depois de clicar no botão “Importar usuários”, os usuários serão importados e aparecerão na guia Usuários.
ProxySQL - Gerenciamento do Agendador
O agendador do ProxySQL é um módulo semelhante ao cron que permite que o ProxySQL inicie scripts externos em intervalos regulares. A programação pode ser bastante granular - até uma execução a cada milissegundo. Normalmente, o escalonador é usado para executar scripts do verificador Galera (como proxysql_galera_checker.sh), mas também pode ser usado para executar qualquer outro script que você desejar. No passado, o ClusterControl usava o agendador para implantar o script do verificador Galera, mas isso não era exposto na interface do usuário. A partir do ClusterControl 1.5, agora você tem controle total.

Como você pode ver, um script foi programado para ser executado a cada 2 segundos (2000 milissegundos) - esta é a configuração padrão para o cluster Galera.

A captura de tela acima nos mostra opções para editar entradas existentes. Observe que o ProxySQL suporta até 5 argumentos para os scripts que ele executará por meio do agendador.

Se você quiser que um novo script seja adicionado ao agendador, você pode clicar no botão “Add New Script” e você será apresentado a uma tela como a acima. Você também pode visualizar como o script completo ficará quando executado. Após preencher todos os campos de “Argumento” e definir o intervalo, você pode clicar no botão “Adicionar novo script”.

Como resultado, um script será adicionado ao agendador e ficará visível na lista de scripts agendados.
Baixe o whitepaper hoje PostgreSQL Management &Automation with ClusterControlSaiba o que você precisa saber para implantar, monitorar, gerenciar e dimensionar o PostgreSQLBaixe o whitepaper
PostgreSQL - Construindo a pilha de alta disponibilidade
Configurar a replicação com failover automático é bom, mas os aplicativos precisam de uma maneira simples de rastrear o mestre gravável. Então adicionamos suporte para HAProxy e Keepalived em cima dos clusters PostgreSQL. Isso permite que nossos usuários do PostgreSQL implantem uma pilha completa de alta disponibilidade usando o ClusterControl.

Na subguia Load Balancer, agora você pode implantar o HAProxy - se estiver familiarizado com a forma como o ClusterControl implanta a replicação do MySQL, é uma configuração muito semelhante. Instalamos o HAProxy em um determinado host, dois backends, lê na porta 3308 e escreve na porta 3307. Ele usa tcp-check, esperando que uma determinada string retorne. Para produzir essa string, as etapas a seguir são executadas em todos os nós do banco de dados. Em primeiro lugar, xinet.d está configurado para executar um serviço na porta 9201 (para evitar confusão com a configuração do MySQL, que usa a porta 9200).
# default: on
# description: postgreschk
service postgreschk
{
flags = REUSE
socket_type = stream
port = 9201
wait = no
user = root
server = /usr/local/sbin/postgreschk
log_on_failure += USERID
disable = no
#only_from = 0.0.0.0/0
only_from = 0.0.0.0/0
per_source = UNLIMITED
O serviço executa o script /usr/local/sbin/postgreschk, que valida o estado do PostgreSQL e informa se um determinado host está disponível e qual é o tipo de host (mestre ou escravo). Se tudo estiver ok, ele retorna a string esperada pelo HAProxy.
Assim como no MySQL, os nós HAProxy em clusters PostgreSQL são vistos na interface do usuário e a página de status pode ser acessada:

Aqui você pode ver os dois back-ends e verificar se apenas o mestre está ativo para o back-end r/w e todos os nós podem ser acessados por meio do back-end somente leitura. Você também pode obter algumas estatísticas sobre tráfego e conexões.
O HAProxy ajuda a melhorar a alta disponibilidade, mas pode se tornar um único ponto de falha. Precisamos ir além e configurar a redundância com a ajuda do Keepalived.

Em Manage -> Load balancer -> Keepalived, você escolhe os hosts HAProxy que deseja usar e o Keepalived será implantado em cima deles com um IP virtual anexado à interface de sua escolha.
A partir de agora, toda a conectividade deverá ir para o VIP, que será anexado a um dos nós do HAProxy. Se esse nó for desativado, o Keepalived derrubará o VIP nesse nó e o exibirá em outro nó HAProxy.
Isso é tudo para os recursos de balanceamento de carga introduzidos no ClusterControl 1.5. Experimente-os e deixe-nos saber como você