帮助中心
如何在Ubuntu 24.04上安装CockroachDB集群

如何在Ubuntu 24.04上安装CockroachDB集群


CockroachDB 是一种高弹性、可扩展的分布式 SQL 数据库,设计用于轻松处理大规模数据工作负载。当安装在 Ubuntu 上时,它提供了一个开源、云原生数据库解决方案,具有强大的一致性、高可用性和水平可扩展性。CockroachDB 的架构允许它在多个节点上自动复制和分发数据,确保数据完整性,并最大限度地减少硬件故障停机时间。CockroachDB 与 PostgreSQL 的兼容性使其成为开发人员的一个多功能选择,他们需要一个强大的数据库系统来处理要求苛刻的应用程序。在 Ubuntu 上安装 CockroachDB 可以让用户利用这些高级功能,同时受益于 Ubuntu 操作系统的安全性和稳定性。


CockroachDB 可将数据存储在多个位置,从而加快数据交付速度。此外,它还易于扩展,并能为你的应用程序提供高可用性和容错性。


在本指南中,我们将向你展示如何在 Ubuntu 24.04 服务器上安装 CockroachDB 集群。


安装前提


在继续深入之前,请确保你具备以下条件:


  • 两到三台Ubuntu 24.04服务器。
  • 拥有管理员权限的非根目录用户。


设置用户


在安装 CockroachDB 之前,你需要创建一个新的系统用户和组 cockroach。这将用于运行 CockroachDB 服务。


首先,运行下面的命令添加新的系统用户 cockroach,其主目录为 /opt/cockroachdb。

sudo adduser --home /opt/cockroachdb --system --group cockroach

现在用以下命令将 /opt/cockroachdb 目录的所有权更改为用户和组 cockroach:

sudo chown -R cockroach:cockroach /opt/cockroachdb


下载 CockroachDB 二进制文件


要安装CockroachDB,你可以轻松地从GitHub页面下载,然后将CockroachDB二进制文件移动到Ubuntu系统的bin目录下。


访问 CockroachDB GitHub 页面,获取最新版本的链接。像这样使用wget命令下载:

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

下载完成后,解压缩 CockroachDB 并将 cockroach 二进制文件移至 /usr/bin 目录。

tar -xf cockroach-v24.1.1.linux-amd64.tgz
cp -i cockroach-*/cockroach /usr/bin/

现在用以下命令检查 CockroachDB 的版本:

cockroach --version

在下面的输出中,你可以看到 CockroachDB v24 已经安装。



生成TLS证书


要创建 CockroachDB 集群,必须生成 SSL/TLS 证书来确保集群安全。你需要在服务器之间生成并分发 CA 证书,然后为用户和服务器生成证书。


在继续之前,请在服务器 1 和服务器 2 上运行以下命令。这样,就能为 TLS 证书字符串创建 certs 和 private 目录。

mkdir -p /opt/cockroachdb/{certs,private}


生成 CA 证书


本节将从服务器 1 生成 CA 证书,并通过 scp 或安全拷贝上传到服务器 2。


在服务器 1 上运行以下命令生成 CA(证书颁发机构)证书。CA 证书 ca.crt 和 ca.key 将被生成。

cockroach cert create-ca
–certs-dir=/opt/cockroachdb/certs
–ca-key=/opt/cockroachdb/private/ca.key


现在使用 scp 或安全拷贝将 ca.crt 和 ca.key 上传到服务器 2。确保可以顺利登录服务器 2。

scp /opt/cockroachdb/private/ca.key root@192.168.5.16:/opt/cockroachdb/private/
scp /opt/cockroachdb/certs/ca.crt root@192.168.5.16:/opt/cockroachdb/certs/



生成客户端证书


生成 CA 证书后,你将生成用于管理 CockroachDB 集群的客户端证书。只有拥有该证书的用户才能连接和管理 CockroachDB 集群。


为用户 root 生成并签署客户端证书运行以下 cockroach 命令。

cockroach cert create-client \
root \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key


生成服务器证书


本节将在服务器 1 和服务器 2 上生成服务器证书。


在服务器 1 上运行以下命令生成服务器证书。确保将 IP 地址和主机名与你的信息一致。

cockroach cert create-node \
server1 \
192.168.5.15 \
localhost \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key


现在,转到服务器 2,用以下命令生成节点证书。用 server2 信息更改 IP 地址和主机名。

cockroach cert create-node \
server2 \
192.168.5.16 \
localhost \
--certs-dir=/opt/cockroachdb/certs \
--ca-key=/opt/cockroachdb/private/ca.key

最后,在服务器 1 和服务器 2 上运行下面的命令,将证书和私有目录的所有权更改为用户 cockroach。

sudo chown -R cockroach:cockroach /opt/cockroachdb/{certs,private}



将 CockroachDB 作为服务运行


生成 SSL/TLS 证书后,为每台 CockroachDB 服务器创建一个 systemd 服务文件。这样你就可以在后台运行 CockroachDB,并使用 systemctl 对其进行轻松管理。


使用 nano 编辑器创建新的 systemd 服务文件 /etc/systemd/system/cockroachdb.service 。

sudo nano /etc/systemd/system/cockroachdb.service

对于 server1,插入以下配置。在 --advertise-addr 选项中,输入 server1 的 IP 地址。在 --join 选项中,同时输入 server1 和 server2 的 IP 地址。

[Unit]
Description=Cockroach Database cluster node
Requires=network.target

[Service]
Type=notify
WorkingDirectory=/opt/cockroachdb
ExecStart=/usr/bin/cockroach start --certs-dir=/opt/cockroachdb/certs --advertise-addr=192.168.5.16 --join=192.168.5.15,192.168.5.16
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroach
User=cockroach

[Install]
WantedBy=default.target

对于服务器 2,请输入以下配置。在 --advertise-addr 选项中,输入服务器 2 的 IP 地址。在 --join 选项中,输入服务器 1 和服务器 2 的 IP 地址。

[Unit]
Description=Cockroach Database cluster node
Requires=network.target

[Service]
Type=notify
WorkingDirectory=/opt/cockroachdb
ExecStart=/usr/bin/cockroach start --certs-dir=/opt/cockroachdb/certs --advertise-addr=192.168.5.16 --join=192.168.5.15,192.168.5.16
TimeoutStopSec=60
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=cockroach
User=cockroach

[Install]
WantedBy=default.target

完成后保存并退出文件。


现在运行下面的 systemctl 命令重新加载 systemd 管理器并应用更改。

sudo systemctl daemon-reload

然后在服务器 1 和服务器 2 上启动并启用 cockroachdb 服务。

sudo systemctl enable --now cockroachdb


最后,使用以下命令检查 cockroachdb 服务状态:

sudo systemctl status cockroachdb

你会看到 cockroachdb 服务正在服务器 1 和服务器 2 上运行。



创建 CockroachDB 集群


这样,CockroachDB 就在服务器 1 和服务器 2 上运行了。现在,你可以从其中一台服务器初始化 CockroachDB 集群。


在服务器 1 上,运行下面的 cockroach init 命令来初始化 CockroachDB 集群。如果成功,你会看到输出集群成功初始化。

cockroach init --certs-dir=/opt/cockroachdb/certs --host=192.168.5.15:26257

现在运行下面的命令检查集群初始化日志。如果 CockroachDB 集群正在运行,你会得到 CockroachDB 节点启动的输出。

grep ‘node starting’ /opt/cockroachdb/cockroach-data/logs/cockroach.log -A 11


接下来,运行下面的 cockroach 命令来验证列表服务器和 CockroachDB 集群状态。

sudo cockroach node --certs-dir=/opt/cockroachdb/certs --host=server1 ls
sudo cockroach node --certs-dir=/opt/cockroachdb/certs --host=server1 status


下面可以看到,服务器 1 和服务器 2 在 CockroachDB 集群上可用,状态为激活。



现在运行下面的 cockroach sql 命令访问 CockroachDB shell。你可以在这里管理 CockroachDB 集群中的数据库和用户。

sudo cockroach sql --certs-dir=/opt/cockroachdb/certs --host=server1:26257

运行以下查询创建新的管理员用户 alice,密码为 p4ssw0rd。

CREATE USER alice WITH PASSWORD 'p4ssw0rd';
GRANT admin TO alice;


键入 quit 退出 CockroachDB 服务器。



访问 CockroachDB 网络管理


默认情况下,CockroachDB 网络管理运行在 8080 端口。这允许你通过网络浏览器管理 CockroachDB。


要访问 CockroachDB 网络管理控制面板,请使用网络浏览器访问 http://server1:8080。输入用户名和密码,然后点击登录。




如果你有正确的用户名和密码,你会看到类似下面的 CockroachDB 管理面板:



结论


恭喜你!你已经在 Ubuntu 24.04 服务器上完成了 CockroachDB 集群的安装。此外,你还学会了如何通过命令行和网络管理面板来查看 CockroachDB 集群的状态。最后,你已经通过 CockroachDB SQL shell 创建了一个管理员用户。


购物车