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.