如何在 Ubuntu 服务器上部署安全的 CockroachDB 集群
在此页
- 先决条件
- 我们会做什么?
- 第 1 步 - 使用 Chrony 设置 NTP 服务器
- 第 2 步 - 下载并安装 CockroachDB
- 第 3 步 - 创建证书
- 创建 CA 并复制到所有节点
- 创建客户端证书
- 创建服务器证书
- 测试 CockroachDB 仪表板
- 测试数据库复制
CockroachDB 是由 CockroachLabs 开发的开源云原生 SQL 数据库。它是一个基于事务和键值存储的分布式 SQL 数据库。 CockroachDB 是可扩展的 SQL 数据库,可与 Google Spanner 数据库进行比较。它基于 PostgreSQL 协议线和生产就绪。
在本教程中,我们将向您展示如何在 Ubuntu 18.04 上设置 Secure CockroachDB 集群。您将学习如何设置安全集群、访问 CockroachDB 管理仪表板、在 CockroachDB 上创建新用户、在 CockroachDB 上创建和显示数据库。
先决条件
为了运行 CockroachDB 集群,我们需要多台服务器。我们将使用三台 Ubuntu 18.04 服务器,详细主机名和 IP 地址如下。
node1 10.5.5.21
node2 10.5.5.22
node3 10.5.5.23我们将要做什么?
- 使用 Chrony 设置 NTP 服务器 systemctl restart chrony
systemctl enable chrony - 下载并安装 CockroachDB
- 创建证书
- 初始化 CockroachDB 集群
- 将节点添加到 CockroachDB 集群
- 测试
第 1 步 - 使用 Chrony 设置 NTP 服务器
首先,我们必须保持集群上服务器之间的时间同步。因此,我们需要在所有服务器上安装 NTP 包。对于本指南,我们将使用 chrony。
使用以下命令将 chrony 包安装到所有服务器。
sudo apt install chrony -y
安装完成后,转到 /etc/chrony/ 配置目录并编辑文件 chrony.conf。
cd /etc/chrony/
vim chrony.conf删除默认 NTP 池并替换为您自己的国家/地区池。
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 服务,然后将 chrony 添加到启动服务中。
systemctl restart chrony
systemctl enable chrony因此,服务器之间的时间将同步到相同的 NTP 池服务器。
第 2 步 - 下载并安装 CockroachDB
在此步骤中,我们将在所有服务器上下载并安装 CockroachDB。因此,在所有集群服务器上运行所有命令。
创建一个名为 binary 的新目录并进入其中。
mkdir -p binary; cd binary
下载适用于 Linux 的压缩的 cockroachdb 二进制文件并解压缩。
wget https://binaries.cockroachdb.com/cockroach-latest.linux-amd64.tgz
tar -xvzf cockroach-latest.linux-amd64.tgz现在将 cockroach 二进制文件复制到 /etc/local/bin 目录。
cp cockroach-*/cockroach /usr/local/bin/
之后,您可以运行 cockroach 命令并探索基本命令以获取帮助、检查版本等。
cockroach version
CockroachDB 已安装在所有服务器上。
第 3 步 - 创建证书
现在我们要生成一些证书来保护 CockrouchDB 集群。我们可以使用 OpenSSL 或 cockroach 命令行来生成证书文件。
我们将生成 CA 证书和密钥,并为集群上的每个节点生成用户根证书和证书。
创建证书目录 ~/.cockroach-certs 和它的环境变量。
mkdir -p ${HOME}/.cockroach-certs/
export COCKROACH_CERTS_DIR='${HOME}/.cockroach-certs/'创建 CA 并复制到所有节点
在 node1 服务器上,使用下面的 cockroach 命令创建证书颁发机构。
cockroach cert create-ca \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key您将在 ~/.cockroach-certs 目录中获得 ca.key 和 ca.crt。
之后,使用 scp 命令将 ca 证书和密钥复制到所有服务器,如下所示。
复制到node2服务器。
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key :~/.cockroach-certs/
复制到node3服务器。
scp ~/.cockroach-certs/ca.crt ~/.cockroach-certs/ca.key :~/.cockroach-certs/
现在确保 CA 证书和密钥已上传到所有主机服务器。
创建客户端证书
创建证书颁发机构后,我们需要生成客户端证书。客户端证书将用于保护内置 SQL shell 和集群之间的通信。
使用以下 cockroach 命令在所有服务器上生成客户端证书。
cockroach cert create-client \
root \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key您将获得用户根 client.root.crt 和 client.root.key 的客户端证书。
创建服务器证书
服务器证书将用于保护 CockroachDB 集群上服务器之间的通信。为了加入安全集群,您需要为每个服务器生成服务器证书。
在 node1 上,使用以下命令创建服务器证书。
cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.21 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key用自己的 IP 地址更改 IP 地址。
在 node2 上,使用以下命令创建服务器证书。
cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.22 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key用自己的 IP 地址更改 IP 地址。
在 node3 上,使用以下命令创建服务器证书。
cockroach cert create-node \
localhost \
$(hostname) \
10.5.5.23 \
--certs-dir=$COCKROACH_CERTS_DIR \
--ca-key=$COCKROACH_CERTS_DIR/ca.key用自己的 IP 地址更改 IP 地址。
现在您将在 ~/.cockroach-certs 目录中获得服务器证书 node.crt 和 node.key。
第 4 步 - 启动安全 CockroachDB 集群
创建一些 SSL 证书后,我们将从 node1 服务器初始化 Secure CockroachDB 集群。
在 node1 服务器上运行以下命令。
cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.21 --listen-addr=10.5.5.21确保没有错误。
之后,通过运行下面的 cockroach 命令检查集群节点状态。
cockroach node status --host=10.5.5.21
您将获得 IP 地址为 10.5.5.21 的节点 1 已启动并运行 CockroachDB v2.1.6。
第 5 步 - 将节点添加到集群
接下来,我们将 node2 和 node3 添加到 CockroachDB 安全集群。
确保 CA 和服务器证书位于 ~/.cockroach-certs 目录中。
ls -lah ~/.cockroah-certs/
现在运行以下命令添加 IP 地址为 10.5.5.22 的节点 2。将它添加到 CockroachDB 集群。
cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.22 --listen-addr=10.5.5.22 \
--join=10.5.5.21:26257完成后,转到 node3 并运行以下命令。
cockroach start \
--background --certs-dir=$COCKROACH_CERTS_DIR \
--advertise-host=10.5.5.23 --listen-addr=10.5.5.23 \
--join=10.5.5.21:26257用自己的 IP 地址更改 IP 地址。
现在 node2 和 node3 已经添加到 Secure CockroachDB 集群中。使用以下命令从 node1 服务器检查它。
cockroach node status --host=10.5.5.21
而且你会得到三个不同的服务器正在运行的蟑螂v2.1.6。
第 6 步 - 测试
对于最后一步,我们将通过访问管理仪表板并测试服务器之间的数据库复制来测试我们的 CockroachDB 安全集群安装。
测试 CockroachDB 仪表板
CockroachDB 提供漂亮的仪表板 UI 来监控集群。打开您的 Web 浏览器并输入服务器 IP 地址,然后输入端口 8080。
您将获得如下所示的 CockroachDB 登录页面。
为了登录到仪表板,我们需要在 CockroachDB 数据库上创建一个用户。
返回到您的 node1 终端并使用以下命令登录到 cockroachdb SQL shell。
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21现在使用下面的查询创建一个名为 hakase 的新用户,密码为 [email #。
CREATE USER hakase WITH PASSWORD '#';
输入 \q 退出 CockroachDB SQL shell。
现在回到网络浏览器,在登录页面上输入用户 hakase 和密码 [email #,然后单击“登录”按钮。
您将获得如下所示的 CockroachDB 管理仪表板。
测试数据库复制
现在我们要通过在 node1 上创建数据库并从 node2 或 node3 检查数据库来测试 CockroachDB 集群上服务器之间的数据库复制。
在 node1 上,使用以下命令访问 CockroachDB SQL shell。
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.21使用以下查询创建两个数据库 hakasedb 和 hakasedb2。
create database hakasedb;
create database hakasedb2;现在打印数据库列表并确保您获得我们刚刚创建的两个数据库。
show databases;
接下来,登录到 node2 服务器并使用以下命令访问 CockroachDB SQL shell。
cockroach sql --certs-dir=$COCKROACH_CERTS_DIR \
--host=10.5.5.22检查数据库列表。
show databases;
你会得到 hakasedb 并且 hakasedb2 已经被复制到 node2 服务器。
最后,成功完成了使用 Ubuntu 18.04 的 Secure CockroachDB Cluster 的安装和配置。