PostgreSQL patroni 高可用 1:ectd 安装和配置

news/2025/9/26 13:31:35/文章来源:https://www.cnblogs.com/wy123/p/19113283

PostgreSQL patroni 高可用 1:ectd 安装和配置

PostgreSQL patroni 高可用 1:ectd 安装
 
PostgreSQL ptroni的高可用架构图如下所示,本文完成如下架构图中红色标记内的ectd分布式存储的安装和配置。

image

图片来源于:https://docs.percona.com/postgresql/12/solutions/high-availability.html#architecture-layout

 

1,服务器环境

Ubuntu08:192.168.152.115
Ubuntu09:192.168.152.116
Ubuntu10:192.168.152.117
 

1.1,ectd下载与安装

以下在Ubuntu08,Ubuntu09,Ubuntu10分别安装

下载与解压安装
wget https://github.com/etcd-io/etcd/releases/download/v3.6.5/etcd-v3.6.5-linux-amd64.tar.gz
tar xzvf etcd-v3.6.5-linux-amd64.tar.gz -C /usr/local
ln -s /usr/local/etcd-v3.6.5-linux-amd64/ /usr/local/etcd建立软连接
ln -s /usr/local/etcd/etcd /usr/bin/etcd
ln -s /usr/local/etcd/etcdctl /usr/bin/etcdctl
etcd --version
/*
输出:
etcd Version: 3.6.5
Git SHA: a061450
Go Version: go1.24.7
Go OS/Arch: linux/amd64
*/建立数据文件路径
mkdir -p /var/lib/etcd 
mkdir /var/lib/etcd/default.etcd

 

1.2 etcd 配置文件

Ubuntu08:192.168.152.115节点,路径:/var/lib/etcd/etcd.conf

#etcd名称,自定义
ETCD_NAME="etcd01"
#存放etcd数据的目录,自定义
ETCD_DATA_DIR="/var/lib/etcd/default"
#监听URL,用户客户端和SERVER进行通信
ETCD_LISTEN_CLIENT_URLS="http://192.168.152.115:2379,http://127.0.0.1:2379"
#告知客户端自身的URL,TCP 2379端口用于监听客户端请求
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.152.115:2379"
#监听URL,用于和其他节点通信
ETCD_LISTEN_PEER_URLS="http://192.168.152.115:2380"
#告知集群其他节点,端口2380用于集群通信
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.152.115:2380"
#定义了集群内所有成员
ETCD_INITIAL_CLUSTER="etcd01=http://192.168.152.115:2380,etcd02=http://192.168.152.116:2380,etcd03=http://192.168.152.117:2380"
#集群ID,唯一标识
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
#集群状态,new为新创建集群,existing为已经存在的集群
ETCD_INITIAL_CLUSTER_STATE="new"

Ubuntu09:192.168.152.116节点,路径:/var/lib/etcd/etcd.conf

#etcd名称,自定义
ETCD_NAME="etcd02"
#存放etcd数据的目录,自定义
ETCD_DATA_DIR="/var/lib/etcd/default"
#监听URL,用户客户端和SERVER进行通信
ETCD_LISTEN_CLIENT_URLS="http://192.168.152.116:2379,http://127.0.0.1:2379"
#告知客户端自身的URL,TCP 2379端口用于监听客户端请求
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.152.116:2379"
#监听URL,用于和其他节点通信
ETCD_LISTEN_PEER_URLS="http://192.168.152.116:2380"
#告知集群其他节点,端口2380用于集群通信
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.152.116:2380"
#定义了集群内所有成员
ETCD_INITIAL_CLUSTER="etcd01=http://192.168.152.115:2380,etcd02=http://192.168.152.116:2380,etcd03=http://192.168.152.117:2380"
#集群ID,唯一标识
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
#集群状态,new为新创建集群,existing为已经存在的集群
ETCD_INITIAL_CLUSTER_STATE="new"

Ubuntu10:192.168.152.117节点,路径:/var/lib/etcd/etcd.conf

#etcd名称,自定义
ETCD_NAME="etcd03"
#存放etcd数据的目录,自定义
ETCD_DATA_DIR="/var/lib/etcd/default"
#监听URL,用户客户端和SERVER进行通信
ETCD_LISTEN_CLIENT_URLS="http://192.168.152.117:2379,http://127.0.0.1:2379"
#告知客户端自身的URL,TCP 2379端口用于监听客户端请求
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.152.117:2379"
#监听URL,用于和其他节点通信
ETCD_LISTEN_PEER_URLS="http://192.168.152.117:2380"
#告知集群其他节点,端口2380用于集群通信
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.152.117:2380"
#定义了集群内所有成员
ETCD_INITIAL_CLUSTER="etcd01=http://192.168.152.115:2380,etcd02=http://192.168.152.116:2380,etcd03=http://192.168.152.117:2380"
#集群ID,唯一标识
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
#集群状态,new为新创建集群,existing为已经存在的集群
ETCD_INITIAL_CLUSTER_STATE="new"

 

1.3 etcd systemctl 服务脚本

三台服务器一样,/etc/systemd/system/ectd.service

[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target[Service]
Type=notify
EnvironmentFile=/var/lib/etcd/etcd.conf
WorkingDirectory=/var/lib/etcd/
ExecStart=/usr/bin/etcd 
Restart=on-failure
RestartSec=5
LimitNOFILE=65536[Install]
WantedBy=multi-user.target

启动服务

systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
systemctl status etcd

 

1.4 etcd 环境变量

--添加环境变量
--ETCDCTL_API是有v2和v3两个版本,默认是v2版本,执行命令可能会报错
echo 'export ETCDCTL_API=3' >> /etc/profile
source /etc/profile

其他

--新增etcd节点,systemd启动服务出现Job for etcd.service failed because a timeout was exceeded错误
--解决办法:出现该问题的原因可能时因为etcd的data-dir中的残留信息导致的,删除data-dir中的内容,重新启动etcd服务
rm -rf /var/lib/etcd/default/

 

2,检查etcd集群管理

2.1 etcd状态检查

检查集群节点状态:etcdctl endpoint health --cluster -w table
列出集群成员:etcdctl member list -w table
检查集群节点的健康状态:etcdctl endpoint health --cluster -w table
检查集群节点状态
root@ubuntu08:/usr/local# etcdctl endpoint status --cluster -w table
{"level":"warn","ts":"2025-09-22T09:34:53.831953+0800","caller":"flags/flag.go:94","msg":"unrecognized environment variable","environment-variable":"ETCDCTL_API=3"}
+-----------------------------+------------------+---------+-----------------+---------+--------+-----------------------+-------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+
|          ENDPOINT           |        ID        | VERSION | STORAGE VERSION | DB SIZE | IN USE | PERCENTAGE NOT IN USE | QUOTA | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | DOWNGRADE TARGET VERSION | DOWNGRADE ENABLED |
+-----------------------------+------------------+---------+-----------------+---------+--------+-----------------------+-------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+
| http://192.168.152.116:2379 | 6eb726f58bd2aa70 |   3.6.5 |           3.6.0 |   20 kB |  16 kB |                   20% |   0 B |     false |      false |         2 |          9 |                  9 |        |                          |             false |
| http://192.168.152.115:2379 | 7158c1b754a1eeba |   3.6.5 |           3.6.0 |   25 kB |  16 kB |                   34% |   0 B |      true |      false |         2 |          9 |                  9 |        |                          |             false |
| http://192.168.152.117:2379 | af96143dba13346f |   3.6.5 |           3.6.0 |   20 kB |  16 kB |                   20% |   0 B |     false |      false |         2 |          9 |                  9 |        |                          |             false |
+-----------------------------+------------------+---------+-----------------+---------+--------+-----------------------+-------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+列出集群成员
root@ubuntu08:/usr/local# etcdctl member list -w table
{"level":"warn","ts":"2025-09-22T09:36:22.799237+0800","caller":"flags/flag.go:94","msg":"unrecognized environment variable","environment-variable":"ETCDCTL_API=3"}
+------------------+---------+--------+-----------------------------+-----------------------------+------------+
|        ID        | STATUS  |  NAME  |         PEER ADDRS          |        CLIENT ADDRS         | IS LEARNER |
+------------------+---------+--------+-----------------------------+-----------------------------+------------+
| 6eb726f58bd2aa70 | started | etcd02 | http://192.168.152.116:2380 | http://192.168.152.116:2379 |      false |
| 7158c1b754a1eeba | started | etcd01 | http://192.168.152.115:2380 | http://192.168.152.115:2379 |      false |
| af96143dba13346f | started | etcd03 | http://192.168.152.117:2380 | http://192.168.152.117:2379 |      false |
+------------------+---------+--------+-----------------------------+-----------------------------+------------+检查集群节点的健康状态
root@ubuntu08:/usr/local#  etcdctl endpoint health --cluster -w table
{"level":"warn","ts":"2025-09-22T09:36:49.159370+0800","caller":"flags/flag.go:94","msg":"unrecognized environment variable","environment-variable":"ETCDCTL_API=3"}
+-----------------------------+--------+------------+-------+
|          ENDPOINT           | HEALTH |    TOOK    | ERROR |
+-----------------------------+--------+------------+-------+
| http://192.168.152.115:2379 |   true | 4.838419ms |       |
| http://192.168.152.117:2379 |   true | 7.374066ms |       |
| http://192.168.152.116:2379 |   true | 7.334373ms |       |
+-----------------------------+--------+------------+-------+

 

2.2 etcd常用命令

etcd常用命令
--截至目前位置ectd中没有用户自定义数据,如下查询是启用了patroni之后才能查到,这里仅做示例-- 查询所有的key
root@ubuntu08:/usr/local# etcdctl get "" --prefix --keys-only
{"level":"warn","ts":"2025-09-23T09:36:04.000716+0800","caller":"flags/flag.go:94","msg":"unrecognized environment variable","environment-variable":"ETCDCTL_API=3"}
/service/pg_cluster_wy_prod/config
/service/pg_cluster_wy_prod/history
/service/pg_cluster_wy_prod/initialize
/service/pg_cluster_wy_prod/leader
/service/pg_cluster_wy_prod/members/ubuntu09
/service/pg_cluster_wy_prod/status--删除所有的key
root@ubuntu08:/usr/local# etcdctl del /service/pg_cluster_wy_prod/ --prefix
{"level":"warn","ts":"2025-09-23T09:38:52.248350+0800","caller":"flags/flag.go:94","msg":"unrecognized environment variable","environment-variable":"ETCDCTL_API=3"}
6

 

2.3 管理etcd

--查看集群节点:etcdctl endpoint status --cluster -w table
--转移领导权: etcdctl move-leader 6eb726f58bd2aa70
--备份数据库:etcdctl snapshot save etcd_bak.db,默认备份到当前目录
管理etcd
--查看集群节点
root@ubuntu08:/usr/local# etcdctl endpoint status --cluster -w table
{"level":"warn","ts":"2025-09-22T09:52:07.064600+0800","caller":"flags/flag.go:94","msg":"unrecognized environment variable","environment-variable":"ETCDCTL_API=3"}
+-----------------------------+------------------+---------+-----------------+---------+--------+-----------------------+-------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+
|          ENDPOINT           |        ID        | VERSION | STORAGE VERSION | DB SIZE | IN USE | PERCENTAGE NOT IN USE | QUOTA | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | DOWNGRADE TARGET VERSION | DOWNGRADE ENABLED |
+-----------------------------+------------------+---------+-----------------+---------+--------+-----------------------+-------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+
| http://192.168.152.116:2379 | 6eb726f58bd2aa70 |   3.6.5 |           3.6.0 |   20 kB |  16 kB |                   20% |   0 B |     false |      false |         2 |         12 |                 12 |        |                          |             false |
| http://192.168.152.115:2379 | 7158c1b754a1eeba |   3.6.5 |           3.6.0 |   25 kB |  16 kB |                   34% |   0 B |      true |      false |         2 |         12 |                 12 |        |                          |             false |
| http://192.168.152.117:2379 | af96143dba13346f |   3.6.5 |           3.6.0 |   20 kB |  16 kB |                   20% |   0 B |     false |      false |         2 |         12 |                 12 |        |                          |             false |
+-----------------------------+------------------+---------+-----------------+---------+--------+-----------------------+-------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+--将领导权转移到192.168.152.116,需要在leader节点(192.168.152.115)上执行以下命令
root@ubuntu08:/usr/local#  etcdctl move-leader 6eb726f58bd2aa70
{"level":"warn","ts":"2025-09-22T09:52:52.764611+0800","caller":"flags/flag.go:94","msg":"unrecognized environment variable","environment-variable":"ETCDCTL_API=3"}
Leadership transferred from 7158c1b754a1eeba to 6eb726f58bd2aa70
root@ubuntu08:/usr/local#--再次查看集群节点
root@ubuntu08:/usr/local# etcdctl endpoint status --cluster -w table
{"level":"warn","ts":"2025-09-22T09:53:25.957168+0800","caller":"flags/flag.go:94","msg":"unrecognized environment variable","environment-variable":"ETCDCTL_API=3"}
+-----------------------------+------------------+---------+-----------------+---------+--------+-----------------------+-------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+
|          ENDPOINT           |        ID        | VERSION | STORAGE VERSION | DB SIZE | IN USE | PERCENTAGE NOT IN USE | QUOTA | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | DOWNGRADE TARGET VERSION | DOWNGRADE ENABLED |
+-----------------------------+------------------+---------+-----------------+---------+--------+-----------------------+-------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+
| http://192.168.152.116:2379 | 6eb726f58bd2aa70 |   3.6.5 |           3.6.0 |   20 kB |  16 kB |                   20% |   0 B |      true |      false |         3 |         13 |                 13 |        |                          |             false |
| http://192.168.152.115:2379 | 7158c1b754a1eeba |   3.6.5 |           3.6.0 |   25 kB |  16 kB |                   34% |   0 B |     false |      false |         3 |         13 |                 13 |        |                          |             false |
| http://192.168.152.117:2379 | af96143dba13346f |   3.6.5 |           3.6.0 |   20 kB |  16 kB |                   20% |   0 B |     false |      false |         3 |         13 |                 13 |        |                          |             false |
+-----------------------------+------------------+---------+-----------------+---------+--------+-----------------------+-------+-----------+------------+-----------+------------+--------------------+--------+--------------------------+-------------------+备份数据库,执行etcdctl snapshot save etcd_bak.db,默认备份到当前目录
root@ubuntu08:/usr/local#  etcdctl snapshot save etcd_bak.db
{"level":"warn","ts":"2025-09-22T09:54:51.963842+0800","caller":"flags/flag.go:94","msg":"unrecognized environment variable","environment-variable":"ETCDCTL_API=3"}
{"level":"info","ts":"2025-09-22T09:54:51.971594+0800","caller":"snapshot/v3_snapshot.go:83","msg":"created temporary db file","path":"etcd_bak.db.part"}
{"level":"info","ts":"2025-09-22T09:54:51.973601+0800","logger":"client","caller":"v3@v3.6.5/maintenance.go:236","msg":"opened snapshot stream; downloading"}
{"level":"info","ts":"2025-09-22T09:54:51.975135+0800","caller":"snapshot/v3_snapshot.go:96","msg":"fetching snapshot","endpoint":"127.0.0.1:2379"}
{"level":"info","ts":"2025-09-22T09:54:51.975385+0800","logger":"client","caller":"v3@v3.6.5/maintenance.go:302","msg":"completed snapshot read; closing"}
{"level":"info","ts":"2025-09-22T09:54:51.976335+0800","caller":"snapshot/v3_snapshot.go:111","msg":"fetched snapshot","endpoint":"127.0.0.1:2379","size":"25 kB","took":"4.643252ms","etcd-version":"3.6.0"}
{"level":"info","ts":"2025-09-22T09:54:51.976404+0800","caller":"snapshot/v3_snapshot.go:121","msg":"saved","path":"etcd_bak.db"}
Snapshot saved at etcd_bak.db
Server version 3.6.0
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918323.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实用指南:黄金价格小工具抖音快手微信小程序看广告流量主开源

实用指南:黄金价格小工具抖音快手微信小程序看广告流量主开源pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

20250725_QQ_ezusb

流量分析, USB, pyshark, Base64, kamasutra, DASCTFTags:流量分析,USB,pyshark,Base64,kamasutra,DASCTF 0x00. 题目 附件路径:https://pan.baidu.com/s/1GyH7kitkMYywGC9YJeQLJA?pwd=Zmxh#list/path=/CTF附件 附件…

.netcore 程序启动时的核心类 - 指南

.netcore 程序启动时的核心类 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

外贸系统软件有哪些手机优化大师官网

🌈 个人主页:谁在夜里看海. 🔥 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 丢掉幻想,准备斗争 目录 引言 一、僵尸进程 1.子进程的创建与退出 2.进程表 3.僵尸状态产生 4.直观感受一下: 二、…

照片做视频的网站南通网站外包

文章目录 第五课:MindSpore自动并行1、学习总结:数据并行模型并行MindSpore算子级并行算子级并行示例 流水线并行GPipe和Micro batch1F1B流水线并行示例 内存优化重计算优化器并行 MindSpore分布式并行模式课程ppt及代码地址 2、学习心得:3、…

DailyPaper-2025-9-26

失踪人口回归,才识浅薄啥也不懂勿喷MMR1: Enhancing Multimodal Reasoning with Variance-Aware Sampling and Open Resources https://arxiv.org/pdf/2509.21268Variance-Aware Sampling and large-scale CoT data i…

实用指南:老题新解|素数对

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

人文领域的创新乏力:当价值内卷遇上元人文AI的破局之光

人文领域的创新乏力:当价值内卷遇上元人文AI的破局之光 当我们惊叹于科技领域的颠覆式创新时,却不得不面对一个尴尬的对比:人文领域的创新陷入了深度的乏力。 这里的"人文领域",指的是塑造我们社会形态、…

网站备份数据库做网站的网站犯法吗

试试了一下在 .NET中通过如下语句Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);就可以使页面的缓存失效,每次都需要获取新页面。 转载于:https://www.cnblogs.com/0000/archive/2009/11/11/1601036.html

查找公司信息的网站环保网站建设价格

注意,以下内容基于前面完整版的根文件系统,因此需要先完成前面的步骤。 1、明确sample文件夹的位置 海思SDK有很多sample,以方便开发人员的参阅。sample文件夹位于/package/mpp/目录下。 其中/package/mpp/sample/venc目录完成了视频的采集以…

网页制作门户网站案例气象网站建设需求方案

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、移植前的准备工作 1、搭建开发环境 (1)虚拟机运行着ubuntu14.04系统。 (2)X210开发板运行着linux内核镜像、QT4.8文件系统镜像。相关的镜像文件在…

自己公司设计一个网站电子商务网站建设与制作

Oracle 的导入实用程序 (Import utility) 允许从数据库提取数据,并且将数据写入操作系统文件。 imp 使用的基本格式: imp[username[/password[service]]] ,以下例举 imp 常用用法。 1. 获取帮助 imp helpy 2. 导入一个完整数据库 imp sy…

SimCC: a Simple Coordinate Classification Perspective for Human Pose Estimation

[ECCV22] 基于坐标分类的关键点检测SimCC: a Simple Coordinate Classification Perspective for Human Pose Estimation SimCC(ECCV22):基于坐标分类计算关键点,即计算每个关键点在x轴、y轴上的概率。 代码仓库 注…

外贸看的英文网站鞍山最新消息

​FPGA高速接口有哪些学习途径,这里不得不提下我们宸极教育FPGA课程, FPGA课程5.0 版:Xilinx体系高速接口项目实操,全新升级,课程完全根据企业招聘要求,项目实操设置,适应目前市场的求职招聘要…

大连网站建设设计公司注册好了怎么做网站

一、前言 这篇文章主要介绍了CentOS 7.6环境下Nginx下载安装配置使用教程,学习nginx的朋友可以参考一下 二、下载 使用如下命令进行下载 wget http://nginx.org/download/nginx-1.23.3.tar.gz 三、安装nginx需要的环境库 项目首先我们需要安装gcc、gcc-c、zlib、…

北京融安特智能科技营销型网站wordpress archive

目录 对称加密算法 AES (ECB模式) AES(CBC 模式)。 非对称加密 对称加密算法 对称加密算法,是使用相同的密钥进行加密和解密。使用对称加密算法来加密双方的通信的话,双方需要先约定一个密钥,加密方才能加密&#…

全景网站制作教程现在还有做系统的网站吗

1.SELECT语句 从一个表或多个表中检索信息 2.检索单个列 输入: SELECT prod_name FROM Products; 输出: 没有过滤,也没有排序,输出数据顺序可能不同。 3.检索多个列 输入: SELECT prod_id, prod_name, prod_price F…

10.1.1 启用python达成第一个遗传算法

10.1.1 启用python达成第一个遗传算法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mona…

[iOS] OC高级编程 - 引用计数 (1) - 详解

[iOS] OC高级编程 - 引用计数 (1) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…