阿里云 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": "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]}

列出已创建的用户

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

使用容器快速在阿里云 ECS 多节点上搭建 Citus 12.1 集群的更多相关文章

  1. 阿里云ECS单节点Kubernetes部署

    参考资料: kubernetes官网英文版 kubernetes官网中文版 环境.工具 阿里云学生机ECS.Ubuntu.docker.kubectl1.15.4.kubelet1.15.4.kube ...

  2. 阿里云CentOS Linux服务器上搭建邮件服务器遇到的问题

    参考文章: 阿里云CentOS Linux服务器上用postfix搭建邮件服务器 Linux系统下邮件服务器的搭建(Postfix+Dovecot) 本来想自己搭建邮件服务器,但是看到一篇资料表示阿里 ...

  3. 多云混合云之多集群统一管理:基于阿里云ACK统一纳管多个不同Kubernetes集群

    目前阿里云云原生产品家族已经支持多集群管理功能,允许使用阿里云容器服务Kubernetes(简称ACK)控制台或kubectl命令接入.统一纳管其他公有云.客户IDC自建K8s集群,集中管理部署K8s ...

  4. 阿里云ECS服务器无法上传文件的解决方案

    1.安装软件启动FTP服务 yum install vsftpd # 安装service vsftpd start # 启动服务chkconfig vsftpd on # 开机启动 2.防火墙ipta ...

  5. 阿里云ECS屏蔽25端口,官方建议使用465 SSL端口发送邮件

    阿里云ECS  VPC网络,搭建了zabbix,想通过三方邮件系统发送邮件,本机开虚拟机测试发邮件一切正常,到阿里ECS的时候邮件各种发不出去,到处找原因,最后度娘告诉了我真想,原来阿里把25端口屏蔽 ...

  6. Kubernetes实战总结 - 阿里云ECS自建K8S集群

    一.概述 详情参考阿里云说明:https://help.aliyun.com/document_detail/98886.html?spm=a2c4g.11186623.6.1078.323b1c9b ...

  7. ECS7天实践进阶训练营Day1:使用阿里云ECS,快速搭建、管理VuePress静态网站

    一.概述 VuePress是2018年由尤雨溪发布的一个全新的基于Vue的静态网站生成器,它是一个非常轻量级的静态网站生成器.VuePress主要用于生成技术文档,其类似于Gitbook,我们可以用于 ...

  8. 使用阿里云 ECS 快速部署 WordPress 博客系统

    今天在 阿里云 ECS上 部署了一套 Lamp 系统,建了一个WordPress的网站,把操作过程记录下来,文中所列脚本可以直接应用. 废话不多说直接开动,ECS云服务购买可以点击 阿里云ECS 云主 ...

  9. 阿里云ECS+CentOS 7.0+Docker+Redmine环境搭建

    前言 搭建Redmine环境可以选择使用分别安装Ruby+Rails+Redmine+MySQL的方式, 但是过程中需要解决各种扰人的依赖问题.Docker为我们提供的Plan B,方便,快捷. 安装 ...

  10. 阿里云ECS配置iptables

    在阿里云ECS安装flannel.docker.kubernetes后,在多个node运行docker run -it bash,然后ping互相的ip,发现docker容器间网络没通,发现宿主机的i ...

随机推荐

  1. pygame 入门实例教程 1 - 复古方块赛车游戏

    作者自我介绍:大爽歌, b站小UP主 ,直播编程+红警三 ,python1对1辅导老师 . 本教程步骤明确,过程清晰简明,最终代码量250行上下,适合学习pygame的新手. 项目代码已上传到我的gi ...

  2. .NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!

    这是我们计划在今年晚些时候发布的最终.NET 8版本之前的两个候选版本中的第一个.大部分计划中的功能和变更都包含在这个候选版本中,可以供您尝试使用.您可以在文档中找到完整的ASP.NET Core在. ...

  3. Java实现常见查找算法

    Java实现常见查找算法 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找. 线性查找 线性查找(Linear Search)是一种简单的查 ...

  4. 「co-examination - A」

    破壁,组合意义法: 五种颜色 \(\star,a,b,c,d\). 对于 l.h.s. 钦定 \(k\),在 \(3n+k\) 个球中选出 \(2n\) 个球染色,在靠左的 \(n\) 个球中选 \( ...

  5. Unicode 字符集与 UTF-8 编码系统

    Unicode 字符集与 UTF-8 编码系统 Synopsis: Unicode 只是包含了所有语言符号.图形符号等的统一字符集(character set,每个字符都有唯一的 Unicode co ...

  6. 安装OpenStack的yum源

    # yum install https://buildlogs.centos.org/centos/7/cloud/x86_64/openstack-liberty/centos-release-op ...

  7. 非全自研可视化表达引擎RuleLinK可视化之路

    导读 上一篇<非全自研可视化表达引擎-RuleLinK>介绍了RuleLink的V1.0版本,虽说一定程度上消除了一些配置相关的样板式代码,也肉眼可见的消除了一些研发资源的浪费:RuleL ...

  8. 使用 DDPO 在 TRL 中微调 Stable Diffusion 模型

    引言 扩散模型 (如 DALL-E 2.Stable Diffusion) 是一类文生图模型,在生成图像 (尤其是有照片级真实感的图像) 方面取得了广泛成功.然而,这些模型生成的图像可能并不总是符合人 ...

  9. 实战攻防演练-利用Everything搜索软件进行内网后渗透利用

    前言 Everything是一款很出名的文件搜索工具,基于文件.文件夹名称的快速搜索的轻量级的软件,而早在几年前就有很多apt组织利用everything来进行文件查找等,前几年在T00ls上也有人发 ...

  10. 使用visualvm远程监控JVM

    参考:http://blog.sina.com.cn/s/blog_4e90b3ba0100muco.html 1.首先要修改JDK中JMX服务的配置文件,以获得相应的权限: 在jdk-1.6.0_2 ...