当前位置: 首页 > wzjs >正文

宠物网站建设策划方案博客用来做微网站

宠物网站建设策划方案,博客用来做微网站,lazada,美食优秀设计网站在生产环境中,数据库的高可用性是系统稳定运行的关键。本文将详细讲解如何利用 Docker 部署一个由 etcd、Patroni 和 HAProxy 组成的 PostgreSQL 高可用集群,实现自动故障转移和负载均衡。 架构概述 本架构主要包括三部分: etcd 集群 etcd …

在生产环境中,数据库的高可用性是系统稳定运行的关键。本文将详细讲解如何利用 Docker 部署一个由 etcd、Patroni 和 HAProxy 组成的 PostgreSQL 高可用集群,实现自动故障转移和负载均衡。

架构概述

本架构主要包括三部分:

  1. etcd 集群
    etcd 作为分布式键值存储,为 Patroni 提供集群状态、元数据存储与服务发现功能。本例中,我们使用 3 个 etcd 节点构建一个高可用的 etcd 集群。

  2. Patroni 管理的 PostgreSQL 集群
    Patroni 通过监控 PostgreSQL 实例的状态,并利用 etcd 作为一致性存储,实现主从切换与故障恢复。这里我们部署 3 个 Patroni 节点,每个节点内嵌一个 PostgreSQL 实例。

  3. HAProxy 负载均衡器
    HAProxy 作为数据库访问入口,将外部请求均衡分发到 Patroni 管理的 PostgreSQL 实例中。通过健康检查确保只将请求转发到正常的节点上。

Docker 部署示例

下面提供一个完整的 Docker Compose 文件示例,包含 3 个 etcd 节点、3 个 Patroni 节点和 1 个 HAProxy 节点。你只需将以下内容保存为 docker-compose.yaml 文件,并在同级目录下创建 HAProxy 配置文件 haproxy.cfg

docker-compose.yaml

version: "3.9"services:# etcd 集群(三个节点)etcd1:image: quay.io/coreos/etcd:v3.5.7container_name: etcd1environment:- ETCD_NAME=etcd1- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380- ETCD_INITIAL_CLUSTER_STATE=new- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-1- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379- ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:2379ports:- "2379:2379"- "2380:2380"networks:- pat_networketcd2:image: quay.io/coreos/etcd:v3.5.7container_name: etcd2environment:- ETCD_NAME=etcd2- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380- ETCD_INITIAL_CLUSTER_STATE=new- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-1- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379- ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:2379networks:- pat_networketcd3:image: quay.io/coreos/etcd:v3.5.7container_name: etcd3environment:- ETCD_NAME=etcd3- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380- ETCD_INITIAL_CLUSTER_STATE=new- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-1- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379- ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:2379networks:- pat_network# Patroni 管理的 PostgreSQL 集群(3 节点)patroni1:image: zalando/patroni:latestcontainer_name: patroni1environment:- PATRONI_NAME=patroni1- PATRONI_RESTAPI_LISTEN=0.0.0.0:8008- PATRONI_RESTAPI_CONNECT_ADDRESS=patroni1:8008- PATRONI_POSTGRESQL_LISTEN=0.0.0.0:5432- PATRONI_POSTGRESQL_CONNECT_ADDRESS=patroni1:5432- PATRONI_ETCD_HOSTS=etcd1:2379,etcd2:2379,etcd3:2379- PATRONI_SCOPE=batman_cluster- PATRONI_NAMESPACE=/service/- PATRONI_LOG_LEVEL=INFOvolumes:- ./patroni1/data:/var/lib/postgresql/dataports:- "5433:5432"depends_on:- etcd1- etcd2- etcd3networks:- pat_networkpatroni2:image: zalando/patroni:latestcontainer_name: patroni2environment:- PATRONI_NAME=patroni2- PATRONI_RESTAPI_LISTEN=0.0.0.0:8008- PATRONI_RESTAPI_CONNECT_ADDRESS=patroni2:8008- PATRONI_POSTGRESQL_LISTEN=0.0.0.0:5432- PATRONI_POSTGRESQL_CONNECT_ADDRESS=patroni2:5432- PATRONI_ETCD_HOSTS=etcd1:2379,etcd2:2379,etcd3:2379- PATRONI_SCOPE=batman_cluster- PATRONI_NAMESPACE=/service/- PATRONI_LOG_LEVEL=INFOvolumes:- ./patroni2/data:/var/lib/postgresql/dataports:- "5434:5432"depends_on:- etcd1- etcd2- etcd3networks:- pat_networkpatroni3:image: zalando/patroni:latestcontainer_name: patroni3environment:- PATRONI_NAME=patroni3- PATRONI_RESTAPI_LISTEN=0.0.0.0:8008- PATRONI_RESTAPI_CONNECT_ADDRESS=patroni3:8008- PATRONI_POSTGRESQL_LISTEN=0.0.0.0:5432- PATRONI_POSTGRESQL_CONNECT_ADDRESS=patroni3:5432- PATRONI_ETCD_HOSTS=etcd1:2379,etcd2:2379,etcd3:2379- PATRONI_SCOPE=batman_cluster- PATRONI_NAMESPACE=/service/- PATRONI_LOG_LEVEL=INFOvolumes:- ./patroni3/data:/var/lib/postgresql/dataports:- "5435:5432"depends_on:- etcd1- etcd2- etcd3networks:- pat_network# HAProxy 作为 PostgreSQL 的访问入口haproxy:image: haproxy:latestcontainer_name: haproxyports:- "5432:5432"configs:- source: haproxy_cfgtarget: /usr/local/etc/haproxy/haproxy.cfgdepends_on:- patroni1- patroni2- patroni3networks:- pat_networkconfigs:haproxy_cfg:file: ./haproxy.cfgnetworks:pat_network:driver: bridge

haproxy.cfg

在与 docker-compose.yaml 同级目录下创建 haproxy.cfg 文件,内容如下:

globallog stdout format raw local0defaultslog     globalmode    tcptimeout connect 10stimeout client  30stimeout server  30sfrontend pgsql_frontbind *:5432default_backend pgsql_backbackend pgsql_backbalance roundrobinserver patroni1 patroni1:5432 check port 8008server patroni2 patroni2:5432 check port 8008server patroni3 patroni3:5432 check port 8008

部署步骤

  1. 准备环境
    将上述两个文件(docker-compose.yamlhaproxy.cfg)放置在同一目录中,同时为每个 Patroni 节点创建对应的数据目录(例如:./patroni1/data./patroni2/data./patroni3/data)。

  2. 启动服务
    在目录中执行以下命令启动所有服务:

    docker-compose up -d
    
  3. 验证部署

    • 通过 docker ps 检查所有容器均已正常启动。
    • 通过访问 HAProxy 映射的端口(5432),即可连接到后端 Patroni 集群中的 PostgreSQL 实例。
    • 通过 Patroni 的 REST API 端口(各容器的 8008 端口)可查询集群状态与节点信息。

总结

使用 Patroni + etcd + HAProxy 构建的 PostgreSQL 高可用集群能够实现自动故障转移和负载均衡,确保数据库服务在节点故障时依然保持可用。该方案适用于需要高可用数据库支撑的生产环境。
通过 Docker Compose 快速构建此架构后,后续可以结合 Kubernetes 等编排工具进一步扩展部署,实现更高的弹性与可维护性。

希望这篇博客对你在高可用数据库部署方面有所帮助,如有疑问或进一步需求,欢迎在评论区交流!


文章转载自:

http://0xcHdhLx.nrzkg.cn
http://uskNWdYf.nrzkg.cn
http://bXrcOdIW.nrzkg.cn
http://MXAXWHZX.nrzkg.cn
http://Ccy8OzOR.nrzkg.cn
http://XfS2K5UT.nrzkg.cn
http://Lk5KQqnW.nrzkg.cn
http://EIDoYpNH.nrzkg.cn
http://AUb3dsqq.nrzkg.cn
http://ZDNOmirg.nrzkg.cn
http://z3HWUAfV.nrzkg.cn
http://1xetsoQc.nrzkg.cn
http://XimPDQ2Y.nrzkg.cn
http://zG53NzdL.nrzkg.cn
http://XmFWKt2l.nrzkg.cn
http://T5zj9F5h.nrzkg.cn
http://LP2KKOaG.nrzkg.cn
http://9XEjAGiR.nrzkg.cn
http://LeomIfLE.nrzkg.cn
http://HAYHYUqF.nrzkg.cn
http://Og6J7qde.nrzkg.cn
http://ozlHF8C1.nrzkg.cn
http://umak1tea.nrzkg.cn
http://al8HG1nQ.nrzkg.cn
http://1RgHcjA5.nrzkg.cn
http://NIHZlAq3.nrzkg.cn
http://aSh83OU1.nrzkg.cn
http://d8KmxDB1.nrzkg.cn
http://e8wuGnd9.nrzkg.cn
http://7QTZ6DyW.nrzkg.cn
http://www.dtcms.com/wzjs/752020.html

相关文章:

  • 苏州外贸网站建设优化推广中国最近战争新闻
  • 30岁女人学网站开发可以吗用wordpress会被告吗
  • 大同市住房城乡建设网站asp网站开发实例
  • 兰州模板型网站建设学软件工程培训就业机构
  • 印度做杂质的网站冷饮网站开发背景意义
  • 企业网站管理系统程序名称网上商城图片
  • 做视频网站需要什么高端技术沈北新区建设局网站
  • 青岛营销型网站推广网站开发毕业设计中期检查表
  • 彬县网站精准客源app
  • 自己建一个网站做电子商务男女做爰视频免费网站
  • 珠海网站建设官网在什么网站能找到做外贸的邮箱
  • 平邑住房和城乡建设局网站促销策划
  • 上海招聘网站建设wordpress数据
  • 网站主页作品欣赏有寓意的logo设计图片
  • 厂房装修东莞网站建设php公司网站
  • 两学一做网站是多少钱住房城乡建设部官方网站
  • 网站一般都是用什么软件做的北京美的网站
  • 在哪里可以学到做网站如何创建自己的博客
  • 厦门市建设局思明建设分局官方网站网站首页静态好还是动态好
  • 厦门大型服装商城网站建设南京明辉建设有限公司网站
  • 书店网站怎么做Wordpress福利资源模板
  • 做母婴产品哪个网站做的好杭州外贸网站建设公司价格
  • 一款蛋糕食品类企业手机网站源码浏览器下载安装2023最新版
  • 一个网站如何做cdn加速器用百度网盘做视频网站
  • 第一简历模板网搜索引擎优化
  • 淘宝网站建设的目标seo优化排名易下拉技巧
  • 一个ip做几个网站吗动易会提示模版文件"默认网站首页问答模板.html"找不到
  • 用织梦做网站都需要用什么网站建设方案书腾讯云
  • 现在怎么建设一个网站外贸行业网络推广
  • 怎么做网站转盘易迈互联网站建设怎么样