暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL部署|patroni实现PostgreSQL自动切换

DigOps 2022-04-18
767

微信号:digops

加关注哦


上一篇【PostgreSQL部署|基于Stream复制的手工主从切换】总结了通过手工的方式来实现主从切换,对于了解其切换原理有很大帮助,但实际生产不会通过手工方式进行切换,而是要有配套的工具,本文将采用目前较流行的patroni工具+etcd工具,方案完整成熟。


本文将包含安装部署、切换测试两部分内容,安装只是实现了功能,参数均未做细致调整,这将是下一篇要补充的内容。

1. 简介

1.1 Patroni

Patroni是一个基于Python可创建自己的自定义、高可用性解决方案的模板,并且 可实现最大的可访问性、分布式存储配置,如ZooKeeper,etcd,Consul或Kubernetes。希望在数据中心或其他任何地方快速部署HA PostgreSQL的数据库工程师,DBA,DevOps和SRE工程师,希能能够发现它有作用。

我们将 Patroni 称为“模板”,因为它远非达到一个可以满足所有需求的或即插即用的复制系统。它将有自己的警告。有很多方法可以使用PostgreSQL运行高可用性;有关列表,请参阅 PostgreSQL 文档。

目前支持的PostgreSQL版本:9.3到14。

1.2 etcd

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

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

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

2. 安装部署

2.1 环境列表

本次部署涉及的软件版本:

部署软件名称版本下载地址
操作系统Centos 7.613.6
数据库PostgreSQL 13.613.6
Python3.6.8
Patroni2.1.3
Etcdetcd-v3.5.2
  • 说明中包含了要安装的组件。

IP地址操作系统数据库版本角色说明
192.168.56.180Centos 7.613.6PostgreSQL、Patroni、etcd
192.168.56.181Centos 7.613.6PostgreSQL、Patroni、etcd
192.168.56.182Centos 7.613.6PostgreSQL、Patroni、etcd

步骤2.2-

2.2 关闭防火墙


systemctl stop firewalld.service
systemctl disable firewalld.service
复制

2.3 安装epel源


rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
复制

2.4 安装Python

如果默认已经安装好了python3,可忽略此步骤,高版本理论都可以


wget -c https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
./configure
make
make install
复制

2.5 安装Etcd

  • 2.5.1 三台均做


mkdir /data
cd /data
wget -c https://github.com/etcd-io/etcd/releases/download/v3.5.2/etcd-v3.5.2-linux-amd64.tar.gz
tar -zxf etcd-v3.5.2-linux-amd64.tar.gz
mv  etcd-v3.5.2-linux-amd64 /opt/etcd-v3.5.2
复制
  • 2.5.2 参数配置-节点192.168.56.180


cat > /opt/etcd-v3.5.2/start_etcd.sh<<eof etcd="" --name="" etcd_digops01="" \="" --initial-advertise-peer-urls="" http:="" 192.168.56.180:2380="" --listen-peer-urls="" --listen-client-urls="" 192.168.56.180:2379,http:="" 127.0.0.1:2379="" --advertise-client-urls="" 192.168.56.180:2379="" --initial-cluster-token="" etcd-cluster-digops="" --initial-cluster="" --initial-cluster-state="" new="" --enable-v2="" eof=""< pre="">
复制

      

文章转载自DigOps,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论