如何在 Ubuntu 上部署安全的 CockroachDB 集群如何在 Ubuntu 上部署安全的 CockroachDB 集群如何在 Ubuntu 上部署安全的 CockroachDB 集群如何在 Ubuntu 上部署安全的 CockroachDB 集群
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 上部署安全的 CockroachDB 集群

CockroachDB 是一个可扩展的云原生 SQL 数据库,用于构建可扩展的云服务。它专门设计用于在多个位置存储数据副本以提供快速访问。它是一个基于事务和键值存储构建的分布式 SQL 数据库。 IT 可以承受磁盘、机器和数据中心故障,几乎零延迟中断,无需人工干预。

本教程将向您展示如何在 Ubuntu 服务器上设置三个三节点 CockroachDB 集群。

先决条件

  • 三台服务器运行 Ubuntu 20.04。
  • 服务器配置了 root 密码。

对于本教程,我们将使用以下设置:

主机名 IP 地址

节点1 104.245.33.97

节点2 216.98.11.175

节点3 45.58.38.224

入门

在开始之前,您需要将所有节点更新到最新版本。您可以通过以下命令将所有节点一一更新:

apt-get update -y

更新所有节点后,重新启动它们以应用更改。

设置时间同步

在开始之前,您需要在所有节点之间设置时间同步。您可以使用 chrony 来完成此操作。 Chrony 是网络时间协议 (NTP) 的灵活实现。用于同步不同NTP服务器的系统时钟

首先,使用以下命令安装 chrony:

apt-get install chrony -y

安装后,使用以下命令编辑 chrony 配置文件:

nano /etc/chrony/chrony.conf

找到默认池并将其替换为以下行:

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

保存并关闭文件,然后重新启动 chrony 服务,并使用以下命令使其在系统重新引导时启动:

systemctl restart chrony
systemctl enable chrony

完成后,您可以继续下一步。

安装 CockroachDB

首先,您需要在所有节点上安装 CockroachDB。

您可以使用以下命令从其官方网站下载最新版本的 CockroachDB:

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

下载完成后,使用以下命令解压下载的文件:

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

接下来,使用以下命令将 CockroachDB 二进制文件复制到 /usr/local/bin 目录:

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

接下来,使用以下命令验证 CockroachDB 版本:

cockroach version

您应该得到以下输出:

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.

创建证书

首先,在所有节点上创建一个目录来存放证书文件。在所有节点上运行以下命令创建 certs 目录:

mkdir ~/certs

接下来,您需要创建 CA 证书、根证书和客户端证书。

创建CA证书

在node1上,使用以下命令创建CA证书:

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

此命令将在 ~/certs 目录中生成 ca.key 和 ca.crt。

接下来,使用以下命令将生成的 CA 复制到两个节点:

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

创建客户端证书

接下来,您需要生成客户端证书来保护 SQL 和集群之间的通信。

在所有节点上执行以下命令生成客户端证书:

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

完成后,您可以继续创建服务器证书。

创建服务器证书

接下来,您需要生成服务器证书以保护 CockroachDB 集群上的服务器之间的通信。

在node1上执行以下命令生成服务器证书:

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

在node2上执行以下命令生成服务器证书:

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

在node3上执行以下命令生成服务器证书:

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

这将在 ~/certs 目录中生成 node.key 和 node.crt 文件。

您可以使用以下命令列出所有证书:

cockroach --certs-dir=certs cert list

您应该得到以下输出:

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)

完成后,您可以继续下一步。

启动 CockroachDB 集群

至此,所有证书都已准备好,可以启动集群了。

在node1上,运行以下命令来初始化Secure CockroachDB Cluster:

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

您可以使用以下命令检查集群的状态:

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

您应该得到以下输出:

  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)

完成后,您可以继续下一步。

将两个节点添加到集群

接下来,您必须将两个节点添加到 CockroachDB 安全集群。

在node2上,运行以下命令将其添加到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

在节点3上,运行以下命令将其添加到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

接下来,返回到 node1 并使用以下命令检查集群的状态:

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

您应该看到所有节点都已添加到集群中。

  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)

至此,CockroachDB集群已启动并监听8080端口。

完成后,您可以继续下一步。

访问 CockroachDB 仪表板

CockroachDB 提供了一个简单易用的 Web 界面来监控集群。在访问 CockroachDB Web 界面之前,您需要创建一个管理员用户并为其设置密码。

首先,使用以下命令登录 cockroach DB SQL shell:

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

接下来,创建一个名为 hitesh 的用户并使用以下命令设置密码:

CREATE USER hitesh WITH PASSWORD 'mypassword';

接下来,退出 SQL shell,然后使用 URL https://node1-ip-address:8080 访问 CockroachDB Web 界面。您应该看到以下页面:

提供您的管理员用户名和密码,然后单击登录输入按钮。您应该在下一页中看到 CockroachDB 仪表板:

验证数据库复制

接下来,您需要验证数据库是否在所有节点之间复制。

在 node1 上,使用以下命令登录 SQL shell:

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

接下来,使用以下命令创建名为 testdb1 和 testdb2 的数据库:

create database testdb1;
create database testdb2;

接下来,使用以下命令验证数据库:

show databases;

您应该在以下输出中看到所有数据库:

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

Time: 3.568509ms

接下来,转到Node2并验证数据库是否已复制。

在node2上,使用以下命令登录SQL shell:

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

运行以下命令来显示数据库:

show databases;

您应该在以下输出中看到 testdb1 和 testdb2:

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

Time: 19.196903ms

上面的结果表明数据库复制在CockroachDB集群上正在工作。

结论

恭喜!您已在 Ubuntu 20.04 服务器上成功安装并设置了安全的 CockroachDB 集群。您现在可以轻松地将更多节点添加到集群中。如果您有任何疑问,请随时问我。想要了解更多信息,可以访问CockroachDB官方文档。

©2015-2025 艾丽卡 support@alaica.com