首页 > 其他分享 >使用容器快速在阿里云 ECS 多节点上搭建 Citus 12.1 集群

使用容器快速在阿里云 ECS 多节点上搭建 Citus 12.1 集群

时间:2024-01-02 10:33:24浏览次数:34  
标签:name Citus citus 12.1 ECS example docker com email

使用容器快速在阿里云  ECS  多节点上搭建 Citus 12.1 集群_Docker

阿里云 ECS

机器节点

  1. 这里我们使用两台同一区域的 ECS 机器。
  2. 机器配置:2 核 2 G。(ps: 阿里云 99 元一年的活动)
  3. 一台安装 coordinator(协调器),这里内网 IP 为 172.18.60.11
  4. 一台安装 worker,这里内网 IP 为 172.18.60.12

操作系统

两台机器分别安装了厂商的 Alibaba Cloud Linux 3 系统。

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

在各机器节点上分别执行:

  1. 添加 docker-ce 的 dnf 源
sudo dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 安装 Alibaba Cloud Linux 3 专用的 dnf 源兼容插件
sudo dnf -y install dnf-plugin-releasever-adapter --repo alinux3-plus
  1. 安装 Docker
sudo dnf -y install docker-ce --nobest
  1. 启动 Docker 服务,并设置开机自启动
sudo systemctl start docker
sudo systemctl enable docker
  1. 查看Docker是否启动
sudo systemctl status docker

安全组

注意:我们接下来会使用机器的 5432 端口。

为了安全,云厂商默认是屏蔽公网访问该端口的,用户同一区域的内网机器之间的访问默认是可以的。

Citus 12.1 集群搭建

这里使用官方构建的镜像 citusdata/citus:12.1

启动 Coordinator 节点

  • 172.18.60.11(coordinator) 机器节点
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

注意:生产环境,为了安全请另行编辑 pg_hba.conf

启动 Worker 节点

  • 172.18.60.12(worker) 机器节点
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) 机器节点
docker exec -it citus-coordinator psql -U citus
# 设置 worker 要连接的协调器节点
SELECT citus_set_coordinator_host('172.18.60.11', 5432);
# 添加 worker 节点
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)

验证: 官方案例(微服务存储后端)

创建 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

创建一些用户

curl -X POST -H "Content-Type: application/json" -d '[
  {"name": "John Doe", "email": "[email protected]"},
  {"name": "Jane Smith", "email": "[email protected]"},
  {"name": "Mike Johnson", "email": "[email protected]"},
  {"name": "Emily Davis", "email": "[email protected]"},
  {"name": "David Wilson", "email": "[email protected]"},
  {"name": "Sarah Thompson", "email": "[email protected]"},
  {"name": "Alex Miller", "email": "[email protected]"},
  {"name": "Olivia Anderson", "email": "[email protected]"},
  {"name": "Daniel Martin", "email": "[email protected]"},
  {"name": "Sophia White", "email": "[email protected]"}
]' http://localhost:6000/users
{"message":"Users created successfully","user_ids":[1,2,3,4,5,6,7,8,9,10]}

列出已创建的用户

curl http://localhost:6000/users

验证数据是否被分配到 worker 节点

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


标签:name,Citus,citus,12.1,ECS,example,docker,com,email
From: https://blog.51cto.com/u_15168528/9063948

相关文章

  • Cisco® Catalyst® 8000V 边缘软件(虚拟路由器)IOS XE 17.12.1 发布
    Cisco®Catalyst®8000V边缘软件(虚拟路由器)IOSXE17.12.1发布CiscoCatalyst8000vEdgeSoftware,IOSXEReleaseDublin-17.12.1aEDCisco®Catalyst®8000V边缘软件-虚拟路由器作者主页:sysin.orgCisco®Catalyst®8000V边缘软件(Catalyst8000V)是一款虚拟路由......
  • 如何在华为云欧拉系统 ECS 实例新建私有 REPO 源并制作安全 RPM 包
    写在前面工作中遇到,简单整理博文内容为华为云开发者认证实验笔记理解不足小伙伴帮忙指正对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧——赫尔曼·......
  • 开源数据血缘和元数据管理框架DataHub的血缘摄取 V0.12.1版本
    DataHUb的安装很简单:你有绿色上网就soeasy前置条件,你已经运行好DataHub整个Docker-Compse服务打开地址:http://host:9002/输入账号DataHub密码DataHub查看框架运行路线轨迹第一步源数据获取(1.1)点击这里(1.2)点击这里(1.3)点击这里{选择数据源的类型}:以MYSQL示例(1......
  • 12.12
    为什么说Java语言“编译与解释并存”?高级编程语言按照程序的执行方式分为编译型和解释型两种。编译型语言是指编译器针对特定的操作系统将源代码一次性翻译成可被该平台执行的机器码。解释型语言是指解释器将源代码逐行解释成特定平台的机器码并立即执行。Java语言既具有......
  • 12.11
    什么是字节码?采用字节码的好处是什么?所谓的字节码,就是Java程序经过编译之后产生的.class文件,字节码能够被虚拟机识别,从而实现Java程序的跨平台性。Java程序从源代码到运行主要有三步:编译:将源代码(.java)编译成虚拟机可以识别理解的字节码文件(.class);解释:虚拟机执行字节码文......
  • 12.1
    Java只支持单继承,不支持多继承。一个类只能有一个父类,不可以有多个父类。Java支持多层继承(继承体系)。Java继承了父类非私有的成员变量和成员方法,但是请注意:子类是无法继承父类的构造方法的。注意:不要仅为了获取其他类中某个功能而去继承,类与类之间要有所属(“isa”)关系方......
  • 使用容器快速在阿里云 ECS 多节点上搭建 Citus 12.1 集群
    阿里云ECS机器节点这里我们使用两台同一区域的ECS机器。机器配置:2核2G。(ps:阿里云99元一年的活动)一台安装coordinator(协调器),这里内网IP为172.18.60.11一台安装worker,这里内网IP为172.18.60.12操作系统两台机器分别安装了厂商的AlibabaCloudLinu......
  • 12.16信息学笔记——ST表
    TIP:最近想先整一整数据结构,之后再整算法。来搞ST表,它是基于倍增思想的。首先知道它维护的是可重复贡献的区间问题。考虑一些可以维护的问题:区间最大值、区间最小值、区间GCD、区间按位或……我们用区间最大值来讲解。考虑定义f(i,j)代表区间[i,i+2j-1]的最大值。显然有f(i,......
  • jumpserver连接ecs实例报错:UNREACHABLE! => {"changed": false, "msg": "Failed to
     报错分析思路:1.是ssh密钥设置有没有对接2.防火墙拦截问题3.用户设置问题4.sshd配置问题 问题解决: 无法与221.229.216.39端口35846进行协商:找不到匹配的主机密钥类型。他们提供的是:ssh-rsa、ssh-dss[preauth]在sshd配置中加上ssh-rsa和ssh-dss是两种主机密钥算......
  • ECS Initial(Ubuntu22)
    SummaryThereisanewserverwhosesystemisubuntu22.04StepsUpgradesystempackagesaptupdate-y&&aptupgrade-y&&aptinstall-ypython-is-python3python3-venvzsh&&aptautoremove-yRebootrebootNewuserandsud......