Pesquisa de site

Como implantar um cluster CockroachDB seguro no Ubuntu


CockroachDB é um banco de dados SQL escalonável e nativo da nuvem para a construção de serviços em nuvem escalonáveis. Ele foi especialmente projetado para armazenar cópias de dados em vários locais para fornecer acesso rápido. É um banco de dados SQL distribuído construído no armazenamento transacional e de valores-chave. A TI pode sobreviver a falhas de discos, máquinas e data centers com interrupção de latência quase nula e sem intervenção manual.

Este tutorial mostrará como configurar três clusters CockroachDB de três nós em um servidor Ubuntu.

Pré-requisitos

  • Três servidores rodando Ubuntu 20.04.
  • Uma senha root é configurada no servidor.

Para este tutorial, usaremos a seguinte configuração:

endereço IP do nome do host

nó1 104.245.33.97

nó2 216.98.11.175

nó3 45.58.38.224

Começando

Antes de começar, você precisará atualizar todos os nós para a versão mais recente. Você pode atualizar todos os nós um por um executando o seguinte comando:

apt-get update -y

Depois que todos os nós forem atualizados, reinicie-os para aplicar as alterações.

Configurar sincronização de horário

Antes de começar, você precisará configurar uma sincronização de horário entre todos os nós. Você pode fazer isso usando o chrony. Chrony é uma implementação flexível do Network Time Protocol (NTP). É usado para sincronizar o relógio do sistema de diferentes servidores NTP

Primeiro, instale o chrony com o seguinte comando:

apt-get install chrony -y

Depois de instalado, edite o arquivo de configuração do chrony com o seguinte comando:

nano /etc/chrony/chrony.conf

Encontre o pool padrão e substitua-o pelas seguintes linhas:

pool 0.id.pool.ntp.org iburst maxsources 4
pool 1.id.pool.ntp.org iburst maxsources 1
pool 2.id.pool.ntp.org iburst maxsources 1
pool 3.id.pool.ntp.org iburst maxsources 2

Salve e feche o arquivo, reinicie o serviço chrony e habilite-o para iniciar na reinicialização do sistema com o seguinte comando:

systemctl restart chrony
systemctl enable chrony

Depois de terminar, você pode prosseguir para a próxima etapa.

Instale o CockroachDB

Primeiro, você precisará instalar o CockroachDB em todos os nós.

Você pode baixar a versão mais recente do CockroachDB em seu site oficial com o seguinte comando:

wget https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz

Assim que o download for concluído, extraia o arquivo baixado com o seguinte comando:

tar -xvzf cockroach-latest.linux-amd64.tgz

Em seguida, copie o binário CockroachDB para o diretório /usr/local/bin com o seguinte comando:

cp cockroach-*/cockroach /usr/local/bin/

Em seguida, verifique a versão do CockroachDB usando o seguinte comando:

cockroach version

Você deve obter a seguinte saída:

Build Tag:    v20.1.6
Build Time:   2020/09/24 18:16:45
Distribution: CCL
Platform:     linux amd64 (x86_64-unknown-linux-gnu)
Go Version:   go1.13.9
C Compiler:   gcc 6.3.0
Build SHA-1:  be8c0a720e98a147263424cc13fc9bfc75f46013
Build Type:   release

Note: Run all commands on all nodes.

Criar certificados

Primeiro, crie um diretório para armazenar arquivos de certificado em todos os nós. Execute o seguinte comando em todos os nós para criar um diretório certs:

mkdir ~/certs

Em seguida, você precisará criar um certificado CA, um certificado raiz e um certificado de cliente.

Criar certificado CA

No node1, crie um certificado CA com o seguinte comando:

cockroach cert create-ca --certs-dir=certs --ca-key=certs/ca.key

Este comando irá gerar ca.key e ca.crt dentro do diretório ~/certs.

Em seguida, copie a CA gerada para ambos os nós usando o seguinte comando:

scp ~/certs/ca.crt ~/certs/ca.key [email :~/certs/
scp ~/certs/ca.crt ~/certs/ca.key [email :~/certs/

Criar certificado de cliente

Em seguida, você precisará gerar um certificado de cliente para proteger a comunicação entre o SQL e o cluster.

Execute o seguinte comando em todos os nós para gerar o certificado do cliente:

cockroach cert create-client root --certs-dir=certs --ca-key=certs/ca.key

Quando terminar, você poderá prosseguir com a criação do certificado do servidor.

Criar certificados de servidor

Em seguida, você precisará gerar o certificado do servidor para proteger a comunicação entre os servidores no cluster CockroachDB.

No node1, execute o seguinte comando para gerar o certificado do servidor:

cockroach cert create-node localhost $(hostname) 104.245.33.97 --certs-dir=certs --ca-key=certs/ca.key

No node2, execute o seguinte comando para gerar o certificado do servidor:

cockroach cert create-node localhost $(hostname) 216.98.11.175 --certs-dir=certs --ca-key=certs/ca.key

No node3, execute o seguinte comando para gerar o certificado do servidor:

cockroach cert create-node localhost $(hostname) 45.58.38.224 --certs-dir=certs --ca-key=certs/ca.key

Isso irá gerar os arquivos node.key e node.crt dentro do diretório ~/certs.

Você pode listar todos os certificados com o seguinte comando:

cockroach --certs-dir=certs cert list

Você deve obter a seguinte saída:

Certificate directory: certs
  Usage  | Certificate File |    Key File     |  Expires   |                 Notes                  | Error
---------+------------------+-----------------+------------+----------------------------------------+--------
  CA     | ca.crt           |                 | 2030/10/06 | num certs: 1                           |
  Node   | node.crt         | node.key        | 2025/10/02 | addresses: localhost,db1,104.245.33.97 |
  Client | client.root.crt  | client.root.key | 2025/10/02 | user: root                             |
(3 rows)

Quando terminar, você pode prosseguir para a próxima etapa.

Iniciar cluster CockroachDB

Neste ponto, todos os certificados estão prontos para iniciar o cluster.

No node1, execute o seguinte comando para inicializar o cluster Secure CockroachDB:

cockroach start --background --certs-dir=certs --advertise-host=104.245.33.97 --listen-addr=104.245.33.97

Você pode verificar o status do cluster com o seguinte comando:

cockroach node status --certs-dir=certs --host=104.245.33.97

Você deve obter a seguinte saída:

  id |       address       |     sql_address     |  build  |            started_at            |            updated_at            | locality | is_available | is_live
-----+---------------------+---------------------+---------+----------------------------------+----------------------------------+----------+--------------+----------
   1 | 104.245.33.97:26257 | 104.245.33.97:26257 | v20.1.6 | 2020-09-28 08:34:44.939507+00:00 | 2020-09-28 08:36:10.492789+00:00 |          | true         | true
(1 row)

Quando terminar, você pode prosseguir para a próxima etapa.

Adicione ambos os nós ao cluster

Em seguida, você deve adicionar ambos os nós ao cluster seguro CockroachDB.

No node2, execute o seguinte comando para adicioná-lo ao cluster seguro CockroachDB.

cockroach start --background --certs-dir=certs --advertise-host=216.98.11.175 --listen-addr=216.98.11.175 --join=104.245.33.97:26257

No nó 3, execute o seguinte comando para adicioná-lo ao cluster seguro CockroachDB.

cockroach start --background --certs-dir=certs --advertise-host=45.58.38.224 --listen-addr=45.58.38.224 --join=104.245.33.97:26257

Em seguida, volte para node1 e verifique o status do seu cluster com o seguinte comando:

cockroach node status --certs-dir=certs --host=104.245.33.97

Você deverá ver que todos os nós foram adicionados ao cluster.

  id |       address       |     sql_address     |  build  |            started_at            |            updated_at            | locality | is_available | is_live
-----+---------------------+---------------------+---------+----------------------------------+----------------------------------+----------+--------------+----------
   1 | 104.245.33.97:26257 | 104.245.33.97:26257 | v20.1.6 | 2020-09-28 08:34:44.939507+00:00 | 2020-09-28 08:45:42.014332+00:00 |          | true         | true
   2 | 216.98.11.175:26257 | 216.98.11.175:26257 | v20.1.6 | 2020-09-28 08:37:12.209878+00:00 | 2020-09-28 08:45:40.747232+00:00 |          | true         | true
   3 | 45.58.38.224:26257  | 45.58.38.224:26257  | v20.1.6 | 2020-09-28 08:39:37.913658+00:00 | 2020-09-28 08:45:37.97068+00:00  |          | true         | true
(3 rows)

Neste ponto, o cluster CockroachDB é iniciado e escutando na porta 8080.

Quando terminar, você pode prosseguir para a próxima etapa.

Acesse o painel do CockroachDB

CockroachDB fornece uma interface web simples e fácil de usar para monitorar o cluster. Antes de acessar a interface web do CockroachDB, você precisará criar um usuário administrador e definir uma senha para ele.

Primeiro, faça login no shell SQL do banco de dados barata com o seguinte comando:

cockroach sql --certs-dir=certs --host=104.245.33.97

Em seguida, crie um usuário chamado hitesh e defina a senha com o seguinte comando:

CREATE USER hitesh WITH PASSWORD 'mypassword';

Em seguida, saia do shell SQL e acesse a interface da web CockroachDB usando a URL https://node1-ip-address:8080. Você deverá ver a seguinte página:

Forneça seu nome de usuário e senha de administrador e clique no botão LOG IN. Você deverá ver o painel do CockroachDB na próxima página:

Verifique a replicação do banco de dados

Em seguida, você precisará verificar se o banco de dados está replicado entre todos os nós.

No node1, faça login no shell SQL com o seguinte comando:

cockroach sql --certs-dir=certs --host=104.245.33.97

Em seguida, crie um banco de dados denominado testdb1 e testdb2 com o seguinte comando:

create database testdb1;
create database testdb2;

Em seguida, verifique os bancos de dados com o seguinte comando:

show databases;

Você deverá ver todos os bancos de dados na seguinte saída:

  database_name
-----------------
  defaultdb
  postgres
  system
  testdb1
  testdb2
(5 rows)

Time: 3.568509ms

Em seguida, vá para o Node2 e verifique se o banco de dados está replicado.

No node2, faça login no shell SQL com o seguinte comando:

cockroach sql --certs-dir=certs --host=216.98.11.175

Execute o seguinte comando para mostrar os bancos de dados:

show databases;

Você deverá ver testdb1 e testdb2 na seguinte saída:

  database_name
-----------------
  defaultdb
  postgres
  system
  testdb1
  testdb2
(5 rows)

Time: 19.196903ms

O resultado acima indica que a replicação do banco de dados está funcionando no cluster CockroachDB.

Conclusão

Parabéns! Você instalou e configurou com sucesso um cluster CockroachDB seguro em um servidor Ubuntu 20.04. Agora você pode adicionar mais nós ao cluster facilmente. Sinta-se à vontade para me perguntar se tiver alguma dúvida. Para mais informações, você pode visitar a documentação oficial do CockroachDB.

Artigos relacionados: