Um ambiente multinuvem é uma boa opção para um Plano de Recuperação de Desastres (DRP), mas pode ser uma tarefa demorada, pois você precisa configurar a conectividade entre os diferentes provedores de nuvem e então precisa implantar e gerenciar seu cluster de banco de dados em dois locais diferentes.
Neste blog, mostraremos como realizar uma implantação multinuvem para PostgreSQL em dois dos provedores de nuvem mais populares no momento, AWS e Google Cloud. Para esta tarefa, usaremos alguns dos recursos que o ClusterControl pode oferecer, como Scaling e Replicação Cluster-to-Cluster.
Vamos supor que você tenha uma instalação do ClusterControl em execução e já tenha criado duas contas de provedor de nuvem diferentes.
Preparando seu ambiente de nuvem
Primeiro, você precisa criar seu ambiente em seu provedor de nuvem principal. Nesse caso, usaremos a AWS com 2 nós PostgreSQL:
Certifique-se de ter o tráfego SSH e PostgreSQL permitido em seu servidor ClusterControl editando seu grupo de segurança:
Em seguida, vá para o provedor de nuvem secundário e crie pelo menos uma máquina virtual que será o nó escravo. Usaremos o Google Cloud Platform com 1 nó PostgreSQL.
E novamente, verifique se você está permitindo tráfego SSH e PostgreSQL do seu ClusterControl servidor:
Neste caso, estamos permitindo o tráfego sem nenhuma restrição na origem , mas é apenas um exemplo e não é recomendado na vida real.
Implantar um cluster PostgreSQL na nuvem
Nós usaremos o ClusterControl para esta tarefa, então presumimos que você o tenha instalado.
Vá ao seu servidor ClusterControl e selecione a opção “Deploy”. Se você já tem uma instância do PostgreSQL em execução, então você precisa selecionar a opção “Import Existing Server/Database”.
Ao selecionar PostgreSQL, você deve especificar Usuário, Chave ou Senha e porta para se conectar por SSH aos seus nós PostgreSQL. Você também precisa do nome do seu novo cluster e se deseja que o ClusterControl instale o software e as configurações correspondentes para você.
Verifique os requisitos do usuário do ClusterControl para obter mais informações sobre esta etapa.
Após configurar as informações de acesso SSH, você deve definir o usuário 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á.
Ao adicionar seus servidores, você pode inserir o IP ou o nome do host. Nesta etapa, você também pode adicionar o nó colocado no Cloud Provider secundário, pois o ClusterControl não possui nenhuma limitação sobre a rede a ser usada, mas para deixar mais claro, vamos adicioná-lo na próxima seção. O único requisito aqui é ter acesso SSH ao nó.
Na última etapa, você pode escolher se sua replicação será síncrona ou Assíncrono.
Caso você esteja adicionando seu nó remoto aqui, é importante usar a replicação assíncrona, caso contrário, seu cluster pode ser afetado pela latência ou problemas de rede.
Você pode monitorar o status de criação no monitor de atividades do ClusterControl.
Quando a tarefa for concluída, você poderá ver seu novo cluster PostgreSQL no tela principal do ClusterControl.
Adicionando um nó escravo remoto na nuvem
Depois de criar seu cluster, você pode executar várias tarefas nele, como implantar/importar um balanceador de carga ou um nó escravo de replicação.
Vá para ações de cluster e selecione “Adicionar escravo de replicação”:
Vamos usar a opção “Adicionar novo escravo de replicação”, pois estamos assumindo que o nó remoto é uma instalação nova, caso contrário, você pode usar a opção “Importar Replication Slave existente”.
Aqui, você só precisa escolher seu servidor Master, digite o endereço IP para seu novo servidor escravo e a porta do banco de dados. Em seguida, você pode escolher se deseja que o ClusterControl instale o software e se o escravo de replicação deve ser síncrono ou assíncrono. Novamente, se você estiver adicionando um nó em um datacenter diferente, deverá usar a replicação assíncrona para evitar problemas relacionados ao desempenho da rede.
Dessa forma, você pode adicionar quantas réplicas quiser e distribuir o tráfego de leitura entre elas usando um balanceador de carga, que também pode ser implementado com o ClusterControl.
Você pode monitorar a criação do escravo de replicação no monitor de atividade do ClusterControl.
E verifique sua topologia final na seção Topology View.
Replicação de cluster para cluster na nuvem
Em vez de usar a opção “Add Replication Slave” para ter um ambiente Multi-Cloud, você pode usar o recurso ClusterControl Cluster-to-Cluster Replication para adicionar um cluster remoto. No momento, esse recurso possui uma limitação para o PostgreSQL que permite que você tenha apenas um nó remoto, portanto, é bastante semelhante à forma anterior, mas estamos trabalhando para remover essa limitação em breve em uma versão futura.
Para criar um novo Cluster Slave, vá para ClusterControl -> Select Cluster -> Cluster Actions -> Create Slave Cluster.
O cluster escravo será criado por streaming de dados do cluster mestre atual.
Nesta seção, você deve escolher o nó mestre do cluster atual de quais os dados serão replicados.
Quando você for para a próxima etapa, você deve especificar User, Key ou Senha e porta para conectar por SSH aos seus servidores. Você também precisa de um nome para o seu Slave Cluster e se quiser que o ClusterControl instale o software e as configurações correspondentes para você.
Após configurar as informações de acesso SSH, você deve definir a versão do banco de dados, datadir, porta e credenciais de administrador. Como ele usará a replicação de streaming, certifique-se de usar a mesma versão de banco de dados e credenciais usadas no cluster mestre. Você também pode especificar qual repositório usar.
Nesta etapa, você precisa adicionar o servidor para o novo Slave Cluster . Para esta tarefa, você pode inserir o endereço IP ou o nome do host do nó do banco de dados.
Você pode monitorar a criação do cluster escravo no monitor de atividades do ClusterControl. Quando a tarefa estiver concluída, você poderá ver o cluster na tela principal do ClusterControl.
Conclusão
Esses recursos do ClusterControl permitem que você configure rapidamente a replicação entre diferentes provedores de nuvem para um banco de dados PostgreSQL (e diferentes tecnologias) e gerencie a configuração de maneira fácil e amigável. Sobre a comunicação entre os Cloud Providers, por questões de segurança, deve-se restringir o tráfego apenas de fontes conhecidas, portanto apenas do Cloud Provider 1 para Cloud Provider 2 e vice-versa.