使用容器快速在阿里云 ECS 多节点上搭建 Citus 12.1 集群
生活随笔
收集整理的這篇文章主要介紹了
使用容器快速在阿里云 ECS 多节点上搭建 Citus 12.1 集群
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
阿里云 ECS
機器節(jié)點
- 這里我們使用兩臺同一區(qū)域的 ECS 機器。
- 機器配置:2 核 2 G。(ps: 阿里云 99 元一年的活動)
- 一臺安裝
coordinator(協(xié)調器),這里內網 IP 為172.18.60.11 - 一臺安裝
worker,這里內網 IP 為172.18.60.12
操作系統(tǒng)
兩臺機器分別安裝了廠商的 Alibaba Cloud Linux 3 系統(tǒng)。
lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: AlibabaCloud
Description: Alibaba Cloud Linux release 3 (Soaring Falcon)
Release: 3
Codename: SoaringFalcon
安裝 Docker
在各機器節(jié)點上分別執(zhí)行:
- 添加 docker-ce 的 dnf 源
sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安裝 Alibaba Cloud Linux 3 專用的 dnf 源兼容插件
sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
- 安裝 Docker
sudo dnf -y install docker-ce --nobest
- 啟動 Docker 服務,并設置開機自啟動
sudo systemctl start docker
sudo systemctl enable docker
- 查看Docker是否啟動
sudo systemctl status docker
安全組
注意:我們接下來會使用機器的 5432 端口。
為了安全,云廠商默認是屏蔽公網訪問該端口的,用戶同一區(qū)域的內網機器之間的訪問默認是可以的。
Citus 12.1 集群搭建
這里使用官方構建的鏡像 citusdata/citus:12.1。
啟動 Coordinator 節(jié)點
- 172.18.60.11(
coordinator) 機器節(jié)點
mkdir -p citus-coordinator/data
docker run -d --name citus-coordinator \
-v $(pwd)/citus-coordinator/data:/var/lib/postgresql/data \
-p 5432:5432 \
-e POSTGRES_USER=citus \
-e POSTGRES_PASSWORD=citus \
-e PGUSER=citus \
-e PGPASSWORD=citus \
-e POSTGRES_HOST_AUTH_METHOD=trust \
citusdata/citus:12.1
注意:生產環(huán)境,為了安全請另行編輯 pg_hba.conf。
啟動 Worker 節(jié)點
- 172.18.60.12(
worker) 機器節(jié)點
mkdir -p citus-worker00/data
docker run -d --name citus-worker00 \
-v $(pwd)/citus-worker00/data:/var/lib/postgresql/data \
-p 5432:5432 \
-e POSTGRES_USER=citus \
-e POSTGRES_PASSWORD=citus \
-e PGUSER=citus \
-e PGPASSWORD=citus \
-e POSTGRES_HOST_AUTH_METHOD=trust \
citusdata/citus:12.1
集群設置
- 172.18.60.11(
coordinator) 機器節(jié)點
docker exec -it citus-coordinator psql -U citus
# 設置 worker 要連接的協(xié)調器節(jié)點
SELECT citus_set_coordinator_host('172.18.60.11', 5432);
# 添加 worker 節(jié)點
SELECT * from citus_add_node('172.18.60.12', 5432);
SELECT * FROM citus_get_active_worker_nodes();
node_name | node_port
---------------+-----------
172.18.60.12 | 5432
(1 row)
驗證: 官方案例(微服務存儲后端)
- 使用 PostgreSQL 16.1 + Citus 12.1 作為多個微服務的存儲后端
創(chuàng)建 user 服務的數據庫 schema
docker exec -it citus-coordinator psql -U citus
CREATE USER user_service;
SET citus.enable_schema_based_sharding TO ON;
CREATE SCHEMA AUTHORIZATION user_service;
select * from citus_schemas;
\c citus user_service
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
Docker 啟動 user 服務
docker run -d --name usersvc \
-p 6000:5000 \
-e DB_HOST='172.18.60.11' \
-e DB_NAME=citus \
registry.cn-heyuan.aliyuncs.com/hacker-linner/citus-microsvc-user:1.0.1
創(chuàng)建一些用戶
curl -X POST -H "Content-Type: application/json" -d '[
{"name": "John Doe", "email": "john@example.com"},
{"name": "Jane Smith", "email": "jane@example.com"},
{"name": "Mike Johnson", "email": "mike@example.com"},
{"name": "Emily Davis", "email": "emily@example.com"},
{"name": "David Wilson", "email": "david@example.com"},
{"name": "Sarah Thompson", "email": "sarah@example.com"},
{"name": "Alex Miller", "email": "alex@example.com"},
{"name": "Olivia Anderson", "email": "olivia@example.com"},
{"name": "Daniel Martin", "email": "daniel@example.com"},
{"name": "Sophia White", "email": "sophia@example.com"}
]' http://localhost:6000/users
{"message":"Users created successfully","user_ids":[1,2,3,4,5,6,7,8,9,10]}
列出已創(chuàng)建的用戶
curl http://localhost:6000/users
驗證數據是否被分配到 worker 節(jié)點
docker exec -it citus-coordinator psql -U citus
select nodename,nodeport, table_name, pg_size_pretty(sum(shard_size))
from citus_shards
group by nodename,nodeport, table_name;
nodename | nodeport | table_name | pg_size_pretty
---------------+----------+--------------------+----------------
172.18.60.12 | 5432 | user_service.users | 32 kB
(1 row)
Refs
- https://www.citusdata.com/
- https://docs.citusdata.com/
- 使用 PostgreSQL 16.1 + Citus 12.1 作為多個微服務的存儲后端
- https://hacker-linner.com/
總結
以上是生活随笔為你收集整理的使用容器快速在阿里云 ECS 多节点上搭建 Citus 12.1 集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解密烟雨江湖行吟诗人谜题:答案大揭秘
- 下一篇: 九阴真经怎么团练(九阴真经江湖报复团练)