安装和部署

57157
2022/09/19 21:15:52

docker 还是二进制?

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

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

我们创建了名为 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 节点

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();