patroni 是一个很不错的pg ha 解决方案,graphql-engine 是一个很好的graphql 工具,为了方便使用
参考patroni官方的文档,使用docker-compose 将应用集成在一起,方便进行测试

环境准备

github 代码 https://github.com/rongfengliang/graphql-engine-patroni

  • docker-compose 文件
version: "3"
services:
patroni_etcd:
container_name: patroni_etcd
image: dalongrong/patroni
command: --etcd
dbnode1:
image: dalongrong/patroni
hostname: dbnode1
ports:
- "5432:5432"
- "8008:8008"
links:
- patroni_etcd:patroni_etcd
volumes:
- ./patroni:/patroni
env_file: docker/patroni-secrets.env
environment:
PATRONI_ETCD_URL: http://patroni_etcd:2379
PATRONI_NAME: dbnode1
PATRONI_SCOPE: testcluster dbnode2:
image: dalongrong/patroni
hostname: dbnode2
ports:
- "5433:5432"
- "8009:8008"
links:
- patroni_etcd:patroni_etcd
volumes:
- ./patroni:/patroni
env_file: docker/patroni-secrets.env
environment:
PATRONI_ETCD_URL: http://patroni_etcd:2379
PATRONI_NAME: dbnode2
PATRONI_SCOPE: testcluster dbnode3:
image: dalongrong/patroni
hostname: dbnode3
ports:
- "5434:5432"
- "8010:8008"
links:
- patroni_etcd:patroni_etcd
volumes:
- ./patroni:/patroni
env_file: docker/patroni-secrets.env
environment:
PATRONI_ETCD_URL: http://patroni_etcd:2379
PATRONI_NAME: dbnode3
PATRONI_SCOPE: testcluster haproxy:
image: dalongrong/patroni
links:
- patroni_etcd:patroni_etcd
ports:
- "5000:5000"
- "5001:5001"
- "7000:7000"
environment:
PATRONI_ETCD_URL: http://patroni_etcd:2379
PATRONI_SCOPE: testcluster
command: --confd
graphql-engine:
image: hasura/graphql-engine:v1.0.0-alpha30
ports:
- "8080:8080"
environment:
- "POSTGRES_PASSWORD:postgres"
command: >
/bin/sh -c "
graphql-engine --database-url postgres://postgres:postgres@haproxy:5000/postgres serve --enable-console;
"
  • 说明
    挂在的数据卷: 很简单,主要是pg 状态的http server 代码,以及一些环境变量的配置
    系统的访问通过haproxy进行,同时haproxy 集成了confd使用etcd 动态进行负载均衡的处理
    基础镜像:镜像使用了patroni官方的代码进行了构建,参考https://github.com/rongfengliang/patroni

启动&&测试

  • 启动
docker-compose up -d
  • haproxy 界面
    http://localhost:7000/,通过界面可以快速的看出master 以及replicas 节点的信息,同时基于haproxy 提供了读写分离的处理
  • pg server 状态信息
    http://localhost:80XX ,实际参考docker-compose 文件


  • graphql 引擎界面
  • 故障模拟
    因为目前dbnode3 为master,尝试stop 掉,看看切换效果,很清晰,可以看到3剔除了,同时2成为master,grarphql 引擎基本不会影响
    (haproxy的作用)
docker-compose stop dbnode3


重新启动3
从haproxy的界面可以看出,会有一个选举的过程,但是还是很不错的,都是自动的

docker-compose start dbnode3


master rest 接口的信息

参考资料

https://github.com/rongfengliang/patroni
https://github.com/zalando/patroni
https://github.com/rongfengliang/graphql-engine-patroni
https://github.com/hasura/graphql-engine
https://docs.hasura.io/1.0/graphql/manual/index.html

 
 
 
 

hasura graphql-engine &&patroni docker-compose 环境运行的更多相关文章

  1. docker compose环境搭建

    概述 Docker Compose提供一个简单的基于YAML配置语言.用于描写叙述和组装多容器的分布式应用. 使用docker定义和执行复杂的应用.使用compose,能够在一个文件中,定义多容器的应 ...

  2. 附004.Docker Compose环境变量说明

    一 环境变量概述 Compose支持在docker-compose执行命令的文件夹中,名为.env的环境变量配置文件声明默认环境变量. 二 定义变量 2.1 语法规则 Compose建议env文件中的 ...

  3. 利用Docker Compose快速搭建本地测试环境

    前言 Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用.然后用一个简单命令就能启动所有的服务.Compose编排 ...

  4. 使用 pycharm调试docker环境运行的Odoo

    2019日 星期一 安装docker windows系统,参考 docker官方文档 Mac系统,参考 docker官方文档 构建自定义ODOO镜像 标准ODOO镜像可能不包含特别的python模块, ...

  5. Docker学习笔记之使用 Docker Compose 管理容器

    0x00 概述 通过之前的介绍,我们已经基本掌握了构建.运行容器的方法,但这还远远不够,由于 Docker 采用轻量级容器的设计,每个容器一般只运行一个软件,而目前绝大多数应用系统都绝不是一个软件所能 ...

  6. Docker三剑客之Docker Compose

    一.什么是Docker Compose Compose 项目是Docker官方的开源项目,负责实现Docker容器集群的快速编排,开源代码在https://github.com/docker/comp ...

  7. Docker Compose 容器编排 NET Core 6+MySQL 8+Nginx + Redis

    环境: CentOS 8.5.2111Docker 20.10.10Docker-Compose 2.1.0 服务: db  redis  web nginx NET Core 6+MySQL 8+N ...

  8. 在 Docker 上快速运行 Apache Airflow 2.2.4

    Docker 安装 Apache Airflow 参考资料 Running Airflow in Docker 安装依赖 Docker Engine Docker Composite 快速运行 Apa ...

  9. 附003.Docker Compose命令详解

    一 Docker Compose命令格式 Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker- ...

  10. 利用 Docker Compose 搭建 SpringBoot 运行环境(超详细步骤和分析)

    0.前言 相信点进来看这篇文章的同学们已经对 Docker Dompose 有一定的了解了,下面,我们拿最简单的例子来介绍如何使用 Docker Compose 来管理项目. 本文例子: 一个应用服务 ...

随机推荐

  1. Linux学习 : 移植qt 5.6.3 及 tslib 1.4

    (一) 移植 qt5.6.3 一.qt简介: Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具 ...

  2. Docker小白从零入门实战

    环境:Centos 6.9 0.查看是否满足安装需求. 先检查服务器环境,docker要求操作系统CentOS6以上,kernel 版本必须2.6.32-431或更高,即>=CentOS 6.5 ...

  3. SQL-31 获取select * from employees对应的执行计划

    题目描述 获取select * from employees对应的执行计划 explain select * from employees explain  用于获得表的所有细节

  4. DevExpress WinForms v18.2新版亮点(二)

    行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v1 ...

  5. Centos7部署kubernetes-ETCD集群(三)

    1.下载etcd软件包 wget https://github.com/coreos/etcd/releases/download/v3.2.18/etcd-v3.2.18-linux-amd64.t ...

  6. springboot学习章节代码-spring基础

    1.DI package com.zhen.highlights_spring4.ch1.di; import org.springframework.stereotype.Service; /** ...

  7. Mybatis学习笔记三

    一.延迟加载 延迟加载即加载延迟了,并不是一次性加载完而是按需加载,感觉应该是针对多表查询而言的,即先查询单表等需要另一张表的信息时再去加载,这样能提高数据库的性能: 需要注意的是,mybatis提供 ...

  8. TensorFlow函数:tf.ones

    tf.ones 函数 ones( shape, dtype=tf.float32, name=None ) 定义于:tensorflow/python/ops/array_ops.py. 请参阅指南: ...

  9. day55 jQuery 练习

    <!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8&qu ...

  10. LibHaru编译使用

    最近公司准备在PDF方面发力了,我也要行动起来,就找到了LibHaru这个开源库 编译Libharu需要用到zlib库和libpng库,libpng库又依赖zlib库. zlib 下载地址:http: ...