安装和部署

本章我们将讨论 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 方式的话,对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 数据库:

psql -U postgres

设置 coordinator 节点的信息

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

SELECT * FROM citus_get_active_worker_nodes();
要查看完整内容,请完成人机验证
升级为订阅用户,可关闭人机验证。