域名 AXUM.RS 将于 2025 年 10 月到期。我们无意再对其进行续费,如果你有意接续这个域名,请与我们取得联系。
  • AXUM.RS 现仅需人民币 3000 元(大写:叁仟元整。接受适度议价
  • 按照行业规则,AXUM.RS 到期后,大概率会进入长时间的赎回期,该期间内,如果你想拥有该域名,将要付出高额的费用
  • 我们已启用 AXUM.EU.ORG 域名,并将持续运营
  • 仅接受微信或支付宝交易
如果你对 AXUM.RS 有兴趣,请和我们进行联系:

安装和部署

docker 还是二进制?

官方还是推荐使用二进制方式(当然他们更推荐付费的 Azure 云),对于 docker,官方有说明:

The Docker image is intended for development/testing purposes only, and has not been prepared for production use.

The Docker image is intended for development/testing purposes only, and has not been prepared for production use.

大概意思就是说,docker 仅用于开发/测试,不要用于生产环境。

除了这个原因之外,docker 方式的话,对coordinator节点进行灾难备份会比较麻烦。

本专题的部署方式

出于简单方面的考虑,本专题采用的部署方式是:

使用 docker 容器部署单机多节点。

创建网络

docker network create axum-rs-citus

我们创建了名为 axum-rs-citus 的网络,本专题所有节点都使用该网络,以便组成集群。

coordinator 节点

docker run --name axum-rs-citus-coordinator1 \
	--network=axum-rs-citus \
	-p 127.0.0.1:5432:5432 \
	-e POSTGRES_PASSWORD=axum.rs \
    -d citusdata/citus:11.0

应用程序(比如我们自己开发的 axum 项目)是通过连接 coordinator 节点来操作,所以需要将 coordinator 节点的端口暴露给宿主机。

docker run --name axum-rs-citus-work1 \
	--network=axum-rs-citus \
	-e POSTGRES_PASSWORD=axum.rs \
    -d citusdata/citus:11.0

docker run --name axum-rs-citus-work2 \
	--network=axum-rs-citus \
	-e POSTGRES_PASSWORD=axum.rs \
    -d citusdata/citus:11.0

我们创建了2个 worker 节点。它们并不需要对外暴露端口。由于所有节点使用的是同一个 docker 网络,这些节点之间是可访问的。

分布式设置

以下所有操作都是在 coordinator 节点

以下所有操作都是在 coordinator 节点

进入 coordinator 节点

首先,我们需要进入到 coordinator 节点:

docker exec -it axum-rs-citus-coordinator1 bash

进入coordinator 节点后,通过 psql 命令连接到 PostgreSQL 数据库:

设置 coordinator 节点的信息

添加 worker 节点

SELECT * from citus_add_node('axum-rs-citus-work1', 5432);
SELECT * from citus_add_node('axum-rs-citus-work2', 5432);

列表查看worker节点

SELECT * FROM citus_get_active_worker_nodes();
要查看完整内容,请先登录