PostgreSQL 高可用方案 patroni + etcd + pg部署

1.概述

该文档主要记录PG的高可用方案patroni + etcd + pg 的环境部署实施。

2.方案简介

2.2Patroni 简介

Patroni基于Python开发的模板,结合DCS(例如 ZooKeeper, etcd, Consul )可以定制PostgreSQL高可用方案。

Patroni并不是一套拿来即用的PostgreSQL高可用组件,涉及较多的配置和定制工作。

Patroni接管PostgreSQL数据库的启停,同时监控本地的PostgreSQL数据库,并将本地的PostgreSQL数据库信息写入DCS。

Patroni的主备端是通过是否能获得 leader key 来控制的,获取到了leader key的Patroni为主节点,其它的为备节点。

2.3Etcd 简介

Etcd是一款基于Raft算法和协议开发的分布式 key-value 数据库,基于Go语言编写,Patroni监控本地的PostgreSQL状态,并将相关信息写入Etcd,每个Patroni都能读写Etcd上的key,从而获取外地PostgreSQL数据库信息。

当Etcd的leader节点不可用时,Etcd会一致性的选择一个合适的节点作为主节点,新的Etcd主节点将获取leader key,因此建议Etcd集群为三个以上且为奇数的节点,不建议部署在同一个机房,有条件话尽量部署在三个机房。

一个标准的3节点etcd集群,最大容许1个节点故障。

3. patroni + etcd + pg 环境部署

3.1 环境资源规划

主机:CentOS 7.4 ,2C4G (测试环境,生产根据实际规划),3台腾讯云云服务器。

数据库:PostgreSQL 12.7

Python:3.6.8

Etcd:etcd-v3.4.7

Patroni:patroni 2.1.0

3.2 部署规划

主机

IP

组件

备注

master 10.1.1.10 PostgreSQL、Patroni、Etcd 主节点
slave1 10.1.1.8 PostgreSQL、Patroni、Etcd 备节点1
slave2 10.1.1.16 PostgreSQL、Patroni、Etcd 备节点2

3.3 环境准备

3.3.1 修改3台主机名称并编辑hosts文件

3台主机分别执行:

#hostnamectl set-hostname master

#hostnamectl set-hostname slave1

#hostnamectl set-hostname slave2

3台主机/etc/hosts文件添加:

10.1.1.10 master

10.1.1.8 slave1

10.1.1.16 slave2

3.3.2 关闭主机防火墙

# systemctl stop firewalld.service

# systemctl disable firewalld.service

3.3.3 yum安装依赖包

#yum install python3 gcc python3-devel epel-release -y

3.4 安装配置PG主从环境

以下步骤3台主机节点执行

3.4.1 创建系统用户postgres

useradd postgres && echo "postgres" | passwd --stdin postgres

3.4.2 安装PG软件

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

yum install -y postgresql12-server  postgresql12-contrib

3.4.3 创建数据目录

mkdir /data1/pg_{data,bin,logs} -p

chown -R postgres.postgres /data1/

3.4.4 编辑PG文件postgresql-12.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值