域名 AXUM.RS 将于2025年10月到期。我们无意再对其进行续费,我们希望你能够接续这个域名,让更多 AXUM 开发者继续受益。
  • 方案1️⃣AXUM.RS 域名 = 3000
  • 方案2️⃣方案1️⃣ + 本站所有专题原始 Markdown 文档 = 5000
  • 方案3️⃣方案2️⃣ + 本站原始数据库 = 5500
如果你有意接续这份 AXUM 情怀,请与我们取得联系。
说明:
  1. 如果有人购买 AXUM.RS 域名(方案1️⃣),或者该域名到期,本站将启用新的免费域名继续提供服务。
  2. 如果有人购买了 AXUM.RS 域名,且同时购买了内容和/或数据库(方案2️⃣/方案3️⃣),本站将关闭。届时我们或许会以另一种方式与你再相遇。

安装和部署

本章我们将讨论 citus 的部署。

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 部署

创建网络

docker network create 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 节点的端口暴露给宿主机。

workers 节点

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 节点:

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

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

SELECT citus_set_coordinator_host('axum-rs-citus-coordinator1', 5432);

添加 worker 节点

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

列表查看worker节点

要查看完整内容,请先登录