首页 > 其他分享 >分布式Citus集群与Patroni

分布式Citus集群与Patroni

时间:2024-12-13 09:02:18浏览次数:3  
标签:CN Citus Patroni 主从 docker 节点 分布式

分布式Citus集群与Patroni

1. 环境介绍

2. 安装部署

2.1 安装Docker

2.1.1 检查是否安装

运行以下命令来检查 Docker 是否已安装:

docker --version

如果没有返回版本号,则 Docker 可能未安装。

2.1.2 安装

# 更新包索引
sudo yum update

# 安装必要的包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置 Docker 仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker

2.1.3 添加用户到 Docker 组

为了避免每次运行 Docker 命令时都需要使用 sudo,您可以将当前用户添加到 Docker 组:

sudo usermod -aG docker root

然后注销并重新登录,或者使用 newgrp docker 使更改生效。

2.2 克隆Patroni repo并构建patroni-citus docker镜像

git clone https://github.com/zalando/patroni.git
cd patroni
docker build -t patroni-citus -f Dockerfile.citus .


Sending build context to Docker daemon  573.6MB
Step 1/36 : ARG PG_MAJOR=15
… skip intermediate logs
Step 36/36 : ENTRYPOINT ["/bin/sh", "/entrypoint.sh"]
---> Running in 1933967fcb58
Removing intermediate container 1933967fcb58
---> 0eea66f3c4c7
Successfully built 0eea66f3c4c7
Successfully tagged patroni-citus:latest

镜像准备就绪后,我们将使用以下命令部署堆栈:

docker-compose -f docker-compose-citus.yml up -d

现在我们可以验证容器是否已启动并运行:

docker ps

总共有11个镜像:

  • 具有ETCD的三个容器(形成三节点ETCD集群),
  • 七个容器,Patroni+PostgreSQL+Citus(三个协调器节点和两个工作集群,每个工作集群有两个节点),以及
  • 一个装有HAProxy的容器。

HAProxy监听端口5000(连接到Citus协调器主节点)和5001(在工作者主节点之间进行负载平衡):

几秒钟后,我们的Citus集群将启动并运行。我们可以使用patronictl容器中的demo-haproxy工具来验证它:

docker exec -ti demo-haproxy bash


patronictl list

现在,让我们通过HAProxy连接到协调器主节点,并验证Citus扩展是否已创建,工作节点是否已在协调器元数据中注册:

psql -h localhost -p 5000 -U postgres -d citus

到目前为止,一切顺利。

标签:CN,Citus,Patroni,主从,docker,节点,分布式
From: https://www.cnblogs.com/zreo2home/p/18603984

相关文章

  • 源码安装patroni+postgresql+citus
    源码安装patroni+postgresql+citus+zookeeper1.安装环境软件版本:python3.9.16postgresql16.4citus12.1patroni4.0.3zookeeper3.7.11.1设置SELinux、防火墙systemctlstatusfirewalldsystemctlstopfirewalldsystemctldisablefirewalldsetenforce0......
  • Patroni中对pg的重启、停止和启动详解
    Patroni中对pg的重启、停止和启动详解对于pg的重启、停止和启动的操作,都在/postgres/__init__.py文件中定义了相关的函数,都是调用其中的函数进行使用。1.停止1.1stop函数重启的函数为stop。其代码如下所示:defstop(self,mode:str='fast',block_callbacks:bool=......
  • Citus的restart详解
    Citus的restart详解1.命令行restart在ctl.py的restart方法中,获取到集群的信息,然后再获取到要重启节点的信息。cluster=get_dcs(cluster_name,group).get_cluster()members=get_members(cluster,cluster_name,member_names,role,force,'restart',False,g......
  • 带你读懂Redisson分布式锁原理
    带你读懂Redisson分布式锁原理本篇带大家详细了解Redisson分布式锁原理,通过仔细阅读源码,逐步分析获取锁和释放锁的具体流程,并且为大家讲解每一步的执行过程,结尾会附有整个过程的流程图文章目录带你读懂Redisson分布式锁原理重试原理`tryLock`方法:`tryLock`重载方法:`......
  • patroni-4.0.2源码分析
    patroni-4.0.2的源码分析1.patroni文件夹__init__.py:导包初始化代码。__main__.py:主函数,程序入口。version.py:保存版本信息。dcs文件夹:dynamic_loader.py:存放查找包中特定抽象接口实现的辅助函数。request.py:处理与Patroni的RESTAPI通信的工具。daemon.py:config_gen......
  • 【双层优化】分布式光伏储能系统的优化配置方法【IEEE33节点】(Matlab代码实现)
         ......
  • 【无功优化】电网故障下分布式能源系统多目标优化[并网转换器(GCC)](Matlab代码&Simulink
    ......
  • Redis分布式锁
    目录为什么需要分布式锁单机锁分布式锁Redis分布式锁如何实现分布式锁——SETNX如何避免锁不被释放——设置过期时间如何保证锁不被他人释放——添加标识+Lua锁的过期时间怎么评估——守护线程,自动续期Relock为什么需要分布式锁单机锁多线程并发读写操作时对共享变量的操作使用......
  • 分布式全文检索引擎ElasticSearch-基本概念介绍
    一、索引类型索引,可以理解是我们的目录,看一本书的时候,可以根据目录准确快速定位到某一页,那么索引就可以帮我们快速定位到某条数据在庞大的数据表的哪一个位置。我们常见的索引包括正排索引和倒排索引1、正排索引正排索引是以文档的ID为关键字,表中记录文档中每个字段的位置......
  • 开源分布式系统追踪-00-overview
    分布式跟踪系列CATcatmonitor分布式监控CAT-是什么?catmonitor-02-分布式监控CAT埋点catmonitor-03-深度剖析开源分布式监控CATcatmonitor-04-cat服务端部署实战catmonitor-05-cat客户端集成实战catmonitor-06-cat消息存储skywalking监控-skywalking-01-APM......