在本教程中,我们将使用 PostgreSQL 16.1
+ Citus 12.1
作为多个微服务的存储后端,演示此类集群的样例设置和基本操作。
Citus 12.1 实验环境设置
Docker 快速启动 Citus 分布式集群
docker-compose.yml
version: "3"
services:
master:
container_name: "${COMPOSE_PROJECT_NAME:-citus}_master"
image: "citusdata/citus:12.1.1"
ports: ["${COORDINATOR_EXTERNAL_PORT:-5432}:5432"]
labels: ["com.citusdata.role=Master"]
environment: &AUTH
POSTGRES_USER: "${POSTGRES_USER:-postgres}"
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:-citus}"
PGUSER: "${POSTGRES_USER:-postgres}"
PGPASSWORD: "${POSTGRES_PASSWORD:-citus}"
POSTGRES_HOST_AUTH_METHOD: "${POSTGRES_HOST_AUTH_METHOD:-trust}"
worker:
image: "citusdata/citus:12.1.1"
labels: ["com.citusdata.role=Worker"]
depends_on: [manager]
environment: *AUTH
command: "/wait-for-manager.sh"
volumes:
- healthcheck-volume:/healthcheck
manager:
container_name: "${COMPOSE_PROJECT_NAME:-citus}_manager"
image: "citusdata/membership-manager:0.3.0"
volumes:
- "${DOCKER_SOCK:-/var/run/docker.sock}:/var/run/docker.sock"
- healthcheck-volume:/healthcheck
depends_on: [master]
environment: *AUTH
volumes:
healthcheck-volume:
启动拥有 3 个 worker 的集群
docker-compose -p citus up --scale worker=3
查看 worker 节点
docker exec -it citus_master psql -U postgres
SELECT master_get_active_worker_nodes();
master_get_active_worker_nodes
--------------------------------
(citus-worker-3,5432)
(citus-worker-1,5432)
(citus-worker-2,5432)
(3 rows)