hasura graphql-engine &&patroni docker-compose 环境运行

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

posted on   荣锋亮  阅读(709)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2017-12-03 caddy quic 协议试用&& 几个问题
2016-12-03 OpenRefine 数据清洗工具

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示