CockroachDB 是一种高弹性、可扩展的分布式 SQL 数据库,设计用于轻松处理大规模数据工作负载。当安装在 Ubuntu 上时,它提供了一个开源、云原生数据库解决方案,具有强大的一致性、高可用性和水平可扩展性。CockroachDB 的架构允许它在多个节点上自动复制和分发数据,确保数据完整性,并最大限度地减少硬件故障停机时间。CockroachDB 与 PostgreSQL 的兼容性使其成为开发人员的一个多功能选择,他们需要一个强大的数据库系统来处理要求苛刻的应用程序。在 Ubuntu 上安装 CockroachDB 可以让用户利用这些高级功能,同时受益于 Ubuntu 操作系统的安全性和稳定性。
CockroachDB 可将数据存储在多个位置,从而加快数据交付速度。此外,它还易于扩展,并能为你的应用程序提供高可用性和容错性。
在本指南中,我们将向你展示如何在 Ubuntu 24.04 服务器上安装 CockroachDB 集群。
在继续深入之前,请确保你具备以下条件:
在安装 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,你可以轻松地从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 已经安装。
要创建 CockroachDB 集群,必须生成 SSL/TLS 证书来确保集群安全。你需要在服务器之间生成并分发 CA 证书,然后为用户和服务器生成证书。
在继续之前,请在服务器 1 和服务器 2 上运行以下命令。这样,就能为 TLS 证书字符串创建 certs 和 private 目录。
mkdir -p /opt/cockroachdb/{certs,private}
本节将从服务器 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}
生成 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 就在服务器 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 网络管理运行在 8080 端口。这允许你通过网络浏览器管理 CockroachDB。
要访问 CockroachDB 网络管理控制面板,请使用网络浏览器访问 http://server1:8080。输入用户名和密码,然后点击登录。
如果你有正确的用户名和密码,你会看到类似下面的 CockroachDB 管理面板:
恭喜你!你已经在 Ubuntu 24.04 服务器上完成了 CockroachDB 集群的安装。此外,你还学会了如何通过命令行和网络管理面板来查看 CockroachDB 集群的状态。最后,你已经通过 CockroachDB SQL shell 创建了一个管理员用户。
上一条: 英国.UK域名的种类和注册要求