1. Patroni 简介
2. etcd简介
- Etcd是一款基于Raft算法和协议开发的分布式 key-value 数据库,基于Go语言编写,Patroni监控本地的PostgreSQL状态,并将相关信息写入Etcd,每个Patroni都能读写Etcd上的key,从而获取外地PostgreSQL数据库信息。
- 当Etcd的leader节点不可用时,Etcd会一致性的选择一个合适的节点作为主节点,新的Etcd主节点将获取leader key,因此建议Etcd集群为三个以上且为奇数的节点,不建议部署在同一个机房,有条件话尽量部署在三个机房。
- 一个标准的3节点etcd集群,最大容许1个节点故障。
3. patroni处理流程图
4. 准备Linux环境
-
软件:
CentOS 64 位7.4.rar
PostgreSQL 12
Patroni patroni 2.0.1
etcd 3.3.11 -
机器资源和VIP分配
PostgreSQL
node1: 192.71.1.21
node2: 192.71.1.22
node3: 192.71.1.23
etcd
192.71.1.23
5.安装pg数据库
- 解压
tar xvf postgresql-12.2.tar.gz - 进入到postgresql-12.2
- 执行配置
./configure --prefix=/usr/local/pgsql - make && make install
6. 安装python3
依次执行
yum -y install python3
7. Etcd安装配置
安装
- 安装
yum -y install etcd - 测试
etcd --version
测试
- usr/bin下创建etcd.sh脚本文件
内容如下
etcd --name etcd0 --initial-advertise-peer-urls http://192.71.1.23:2380 --listen-peer-urls http://192.71.1.23:2380 --listen-client-urls http://192.71.1.23:2379,http://127.0.0.1:2379 --advertise-client-urls http://192.71.1.23:2379 --initial-cluster-token etcd-cluster-ydtf --initial-cluster etcd0=http://192.71.1.23:2380 --initial-cluster-state new --enable-v2
etcd --name etcd0 --initial-advertise-peer-urls http://192.71.1.23:2380 --listen-peer-urls http://192.71.1.23:2380 --listen-client-urls http://192.71.1.23:2379,http://127.0.0.1:2379 --advertise-client-urls http://192.71.1.23:2379 --initial-cluster-token etcd-cluster-ydtf --initial-cluster etcd0=http://192.71.1.23:2380 --initial-cluster-state new --enable-v2
- 运行结果如下:
执行:etcd.sh &
- 查询状态:
执行:etcdctl member list
- 遇到问题及解决方法
问题1:
解决方法:
关闭防火墙
setenforce 0
sed -i.bak "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/patroni/selinux/config
systemctl disable firewalld.service
systemctl stop firewalld.service
iptables -F
8. 安装patroni
安装
执行:
pip3 install patroni[etcd] -i https://mirrors.aliyun