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

PostgreSQL高可用测试系列之Patroni + etcd + HAProxy + Keepalived 离线部署(一)

原创 张玉龙 2021-10-30
3606


说明:本系列文章仅用于共享我的学习成果,未经过生产系统考验,对于知识点和一些组件的使用会不定时更新,仅供参考,如有错误的地方,欢迎留言共同学习。

本高可用系列测试不说理论知识,如有需要自行百度,因生产环境大多数是内网环境,无法连接互联网,为模拟生产环境安装,PostgreSQL高可用测试均采用离线部署

所需软件包均以打包上传百度网盘,如有需要自行下载:https://pan.baidu.com/s/1Tb7GPMvj4kfKEIh8iyvdbA 提取码:n9w2 文件名:PostgreSQL_HA.tar.gz

第一章: 介绍测试环境
第二章: PostgreSQL + replication 部署
第三章: Etcd 部署和管理
第四章: Patroni 部署和管理
第五章: HAProxy + Keepalived 部署和管理
第六章: 高可用模拟故障测试用例
第七章: Prometheus + Grafana 监控部署
第八章: 高可用管理

第一章: 介绍测试环境

1. 自制的测试环境架构图

架构图.jpg

2. 节点信息

主机名 IP地址 系统版本 PostgreSQL Etcd Patroni HAProxy Keepalived Grafana Prometheus
pgtest1 192.168.58.10 CentOS 7.4.1708 Primary - -
pgtest2 192.168.58.11 CentOS 7.4.1708 Standby - -
pgtest3 192.168.58.12 CentOS 7.4.1708 Standby - -

3. 所需软件版本和下载地址

4. 其他会用到的小工具

以上所需软件包均以打包上传百度网盘,如有需要自行下载:https://pan.baidu.com/s/1Tb7GPMvj4kfKEIh8iyvdbA 提取码:n9w2 文件名:PostgreSQL_HA.tar.gz

5. 如果配置防火墙,需要开放的端口

程序 端口 用途
PostgreSQL 5432 数据库监听端口
Patroni 8008 restapi监听端口
etcd 2379/2380 客户端访问端口和服务监听端口
haproxy 1080/5000/5001 WEB访问端口和数据库对外服务端口
grafana 3000 WEB登录端口
prometheus 9090 WEB登录端口
node_exporter 9100 对外服务端口
postgres_exporter 9187 对外服务端口
haproxy_exporter 9101 对外服务端口

linux 查看端口使用的命令:

[root@pgtest3 data]# netstat -lntup

防火墙的使用参考文档:https://blog.csdn.net/s_p_j/article/details/80979450

6. python3、python3-devel 和 patroni[etcd] 的打包

在一个可以连接互联网的Linux主机上下载 python3 和 python3-devel 以及所需要的依赖包。
有两种方式,一种是yum命令的–downloadonly(我使用的这个),另一种是yumdownloader
对于第一种方式,如果当前系统已经安装了需要的下载的软件包,则不会进行下载,需要先卸载再下载,不知道是否有参数能控制。

[root@yum ~]# yum remove python3 python3-devel --只能卸载当前包。不能卸载依赖包 [root@yum ~]# yum history list python3-devel Loaded plugins: fastestmirror ID | Command line | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 6 | remove python3 python3-d | 2021-10-16 14:48 | Erase | 6 5 | install python3-devel | 2021-10-16 14:31 | Install | 34 history list [root@yum ~]# yum history undo 5 --完全卸载,包括依赖包

下载安装包及其依赖包到指定目录下

[root@yum ~]# mkdir /root/python3-rpm [root@yum ~]# yum install python3 python3-devel --downloadonly --downloaddir=/root/python3-rpm

对于第二种方式,不用管当前系统是否安装了需要的下载的软件包,但是需要先安装yum-utils,而且这种方式会把i686架构的软件包也下载下来,参数中提示–archlist可是控制架构,但是不好使。

[root@yum ~]# yum -y install yum-utils [root@yum ~]# yumdownloader python3 python3-devel --resolve --destdir=/root/python3-rpm

使用 createrepo 命令创建yum源(软件仓库)

# 安装createrepo [root@yum ~]# yum install http://createrepo.baseurl.org/download/createrepo-0.4.4-1.noarch.rpm -y # 创建yum源 [root@yum /]# cd /root/python3-rpm/ [root@yum python3-rpm]# createrepo -v ./ # 打包 [root@yum python3-rpm]# cd /root [root@yum ~]# tar -zcvf /root/python3-rpm.tar.gz python3-rpm

打包 patroni[etcd]

[root@yum ~]# yum install python3 python3-devel -y [root@yum ~]# mkdir /root/patroni_etcd_2.1.1 # --download 只下载不安装 [root@yum ~]# pip3 install patroni[etcd] -i https://mirrors.aliyun.com/pypi/simple/ --download /root/patroni_etcd_2.1.1 [root@yum ~]# pip3 install psycopg2-binary -i https://mirrors.aliyun.com/pypi/simple/ --download /root/patroni_etcd_2.1.1 [root@yum ~]# pip3 install psycopg2 -i https://mirrors.aliyun.com/pypi/simple/ --download /root/patroni_etcd_2.1.1 or [root@yum ~]# wget -P /root/patroni_etcd_2.1.1 https://mirrors.aliyun.com/pypi/packages/14/65/223a5b4146b1d5d5ab66f16ef194916a1ed9720da1f118d7bfb60b8f2bea/psycopg2-binary-2.9.1.tar.gz [root@yum ~]# wget -P /root/patroni_etcd_2.1.1 https://mirrors.aliyun.com/pypi/packages/aa/8a/7c80e7e44fb1b4277e89bd9ca509aefdd4dd1b2c547c6f293afe9f7ffd04/psycopg2-2.9.1.tar.gz [root@yum ~]# ll /root/patroni_etcd_2.1.1 total 3308 -rw-r--r-- 1 root root 97516 Nov 1 05:13 click-8.0.3-py3-none-any.whl -rw-r--r-- 1 root root 241997 Nov 1 05:13 dnspython-2.1.0-py3-none-any.whl -rw-r--r-- 1 root root 17798 Nov 1 05:13 importlib_metadata-4.8.1-py3-none-any.whl -rw-r--r-- 1 root root 219752 Nov 1 05:13 patroni-2.1.1-py3-none-any.whl -rw-r--r-- 1 root root 23591 Nov 1 05:13 prettytable-2.2.1-py3-none-any.whl -rw-r--r-- 1 root root 470886 Nov 1 05:13 psutil-5.8.0.tar.gz -rw-r--r-- 1 root root 379972 Nov 1 05:19 psycopg2-2.9.1.tar.gz -rw-r--r-- 1 root root 380033 Nov 1 05:17 psycopg2-binary-2.9.1.tar.gz -rw-r--r-- 1 root root 247702 Nov 1 05:13 python_dateutil-2.8.2-py2.py3-none-any.whl -rw-r--r-- 1 root root 37270 Nov 1 05:13 python-etcd-0.4.5.tar.gz -rw-r--r-- 1 root root 603963 Nov 1 05:13 PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl -rw-r--r-- 1 root root 11053 Nov 1 05:13 six-1.16.0-py2.py3-none-any.whl -rw-r--r-- 1 root root 26288 Nov 1 05:13 typing_extensions-3.10.0.2-py3-none-any.whl -rw-r--r-- 1 root root 138764 Nov 1 05:13 urllib3-1.26.7-py2.py3-none-any.whl -rw-r--r-- 1 root root 30763 Nov 1 05:13 wcwidth-0.2.5-py2.py3-none-any.whl -rw-r--r-- 1 root root 42808 Nov 1 05:13 ydiff-1.2.tar.gz -rw-r--r-- 1 root root 5313 Nov 1 05:13 zipp-3.6.0-py3-none-any.whl # 打包 [root@yum ~]# tar -zcvf patroni_etcd_2.1.1.tar.gz patroni_etcd_2.1.1
最后修改时间:2021-11-04 02:32:09
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论