PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como implantar um Canvas LMS altamente disponível com um cluster de banco de dados PostgreSQL

Nestes tempos de pandemia, as plataformas Learning Management System (LMS) estão se tornando cada vez mais importantes para permitir que você continue aprendendo remotamente quando o sistema educacional tradicional simplesmente não estiver mais disponível.

Ter uma plataforma LMS sem Alta Disponibilidade pode ser um problema em caso de falha, pois todos os seus esforços para manter o sistema funcionando não farão sentido sem ter o banco de dados disponível o tempo todo.

Neste blog, veremos um aplicativo LMS popular chamado Canvas LMS e como implantá-lo de maneira de alta disponibilidade usando PostgreSQL e ClusterControl.

O que é Canvas?

Canvas é um Learning Management System (LMS) baseado na web. Ele é usado por instituições de ensino, educadores e alunos para acessar e gerenciar materiais de aprendizado de cursos on-line e comunicar sobre desenvolvimento de habilidades e conquistas de aprendizado.

O Canvas inclui uma variedade de ferramentas personalizáveis ​​de criação e gerenciamento de cursos, análises e estatísticas de cursos e usuários e ferramentas de comunicação interna.

Implantação do banco de dados do Canvas LMS PostgreSQL

Primeiro, vamos implantar um PostgreSQL Cluster, que será usado pelo aplicativo Canvas LMS. Para isso, usaremos o ClusterControl para implantar 3 nós PostgreSQL (1 nó Primário e 2 nós Standby), e 2 Load Balancers HAProxy com Keepalived configurado entre eles.

HAProxy é um balanceador de carga que distribui o tráfego de uma origem para um ou mais destinos e pode definir regras e/ou protocolos específicos para esta tarefa. Se algum dos destinos parar de responder, ele será marcado como off-line e o tráfego será enviado para o restante dos destinos disponíveis.

Keepalived é um serviço que permite configurar um endereço IP virtual dentro de um grupo ativo/passivo de servidores. Este endereço IP virtual é atribuído a um servidor ativo. Caso este servidor falhe, o Endereço IP é migrado automaticamente para o servidor passivo “Secundário”, permitindo que ele continue trabalhando com o mesmo Endereço IP de forma transparente para os sistemas.

Então, vamos ver como implementar a topologia mencionada usando ClusterControl.

Implantação de banco de dados

Para realizar um deployment a partir do ClusterControl, basta selecionar a opção “Deploy” e seguir as instruções que aparecem.

Ao selecionar PostgreSQL, você deve especificar Usuário, Chave ou Senha e Porta para se conectar por SSH aos seus servidores. Você também pode adicionar um nome para seu novo cluster e se desejar que o ClusterControl instale o software e as configurações correspondentes para você.

Depois de configurar as informações de acesso SSH, você precisa definir as credenciais do banco de dados , versão e datadir (opcional). Você também pode especificar qual repositório usar.

Na próxima etapa, você precisa adicionar seus servidores ao cluster que você criará usando o endereço IP ou o nome do host.

Na última etapa, você pode escolher se sua replicação será síncrona ou Assíncrono e, em seguida, basta pressionar “Implantar”

Quando a tarefa for concluída, você poderá ver seu novo cluster PostgreSQL no tela principal do ClusterControl.

Agora que você criou seu cluster, pode executar várias tarefas nele, como adicionar um balanceador de carga (HAProxy) ou uma nova réplica.

Implantação do balanceador de carga

Para realizar uma implantação do balanceador de carga, selecione a opção “Adicionar balanceador de carga” nas ações do cluster e preencha as informações solicitadas.

Você só precisa adicionar IP ou nome de host, porta, política e o nós que você vai usar.

Implantação mantida

Para realizar uma implantação Keepalived, selecione a opção “Add Load Balancer” nas ações do cluster e, em seguida, vá para a aba Keepalived.

Aqui, selecione os nós HAProxy e especifique o endereço IP virtual que ser usado para acessar o banco de dados.

Neste momento, você deve ter a seguinte topologia:

Agora, vamos conectar este ambiente ao Canvas LMS para alta disponibilidade.

Como configurar o Canvas LMS

Primeiro, você precisará instalá-lo. Existem diferentes maneiras de fazer isso, usando uma configuração automatizada no Docker, manualmente ou até mesmo usando diferentes abordagens, como QuickStart ou instalação Orientada à Produção. Você pode verificar a documentação oficial para escolher o melhor método para você.

Depois de instalar o Canvas LMS, você pode continuar a configurar o arquivo database.yml para usar o ambiente de alta disponibilidade do PostgreSQL que acabou de implantar.

$ cat config/database.yml

production:

  adapter: postgresql

  encoding: utf8

  database: canvas_production

  host: VIRTUAL_IPADDRESS

  username: CANVAS_USER

  password: CANVAS_PASSWD

  timeout: 5000

Aqui, substitua:

  • VIRTUAL_IPADDRESS para endereço IP virtual configurado no Keepalived

  • CANVAS_USER para o usuário do banco de dados Canvas

  • CANVAS_PASSWD para a senha do banco de dados Canvas

Certifique-se de que você pode acessar seu banco de dados usando seu endereço IP virtual como host e isso é permitido no arquivo de configuração pg_hba.conf PostgreSQL. Você pode testá-lo executando o seguinte comando em seu servidor de aplicativos:

$ psql -h VIRTUAL_IPADDRESS -U CANVAS_USER canvas_production

Recurso de recuperação automática do ClusterControl

Então, a questão é, além do processo de implantação, qual é o papel do ClusterControl aqui?

Em caso de falha, o ClusterControl promoverá o nó de espera mais avançado para primário, além de notificá-lo sobre o problema. Ele também faz failover do restante do nó em espera para replicar a partir do novo servidor primário.

Por padrão, o HAProxy é configurado com duas portas diferentes:leitura-gravação e somente leitura. Na porta de leitura e gravação, você tem seu nó primário como online e o restante dos nós como offline, e na porta somente leitura, você tem os nós primário e de espera online.

Quando o HAProxy detecta que um de seus nós não está acessível, ele automaticamente o marca como offline e não o considera para enviar tráfego para ele. A detecção é feita por scripts de verificação de integridade configurados pelo ClusterControl no momento da implantação. Eles verificam se as instâncias estão ativas, se estão em recuperação ou são somente leitura.

Quando o ClusterControl promove um nó em espera, o HAProxy marca o primário antigo como offline para ambas as portas e coloca o nó promovido online na porta de leitura/gravação.

Se o seu HAProxy ativo, ao qual é atribuído um endereço IP virtual ao qual seus sistemas se conectam, falhar, o Keepalived migra esse endereço IP para seu HAProxy passivo automaticamente. Isso significa que seus sistemas podem continuar a funcionar normalmente.

Conclusão


Neste blog, falamos sobre a importância de ter um ambiente PostgreSQL de alta disponibilidade para usar com sua plataforma Canvas LMS e como o ClusterControl pode ajudá-lo nas tarefas de implantação e recuperação automática. Também mencionamos como melhorar esse ambiente adicionando HAProxy e Keepalived para fins de alta disponibilidade.