2.安装配置corosync+pacemaker集群-postgresql

1.安装集群文件系统rpm包【2个节点都要安装】

安装软件包: yum -y install lvm2* gfs2* dlm*

LVM2:提供了LVM在集群环境下的支持,比如允许在多个节点上同时访问同一逻辑卷组的能力。

GFS2是一种适合于集群使用的分布式文件系统,允许多个节点同时读写相同的文件系统。

DLM 则是在集群环境中管理对共享资源访问的重要机制,确保数据的一致性和完整性,跟GFS2是一起的。

IMG_256

 

本文以/dev/sdb 来作为共享存储集群文件系统

节点1

IMG_257

 

IMG_258

 

2个节点的 ID_SERIAL是一致的

IMG_259

 

2.创建lv和目录【1节点创建pv-vg-lv和挂载目录,2节点只需要创建挂载目录即可,不需要执行创建pv操作】

IMG_260

 

IMG_261

 

 

3.开放lvmHA功能

开放lvmha功能

lvmconf --enable-halvm --services --startstopservices

IMG_262

 

IMG_263

 

将集群的共享存储(vg)交由集群管理

查看系统现有vg,放开volume_list的注释,将除过集群共享存储的vg加入中括号内

注意:主机后续添加新的非集群管理vg,必须将vg名加入volume_list内

然后修改/etc/lvm/lvm.conf 配置文件(只保留操作系统的vg资源即非HA管理的VG)

volume_list = [ "rhel" ]

IMG_264

 

生成initramfs文件

备份/boot/initramfs-$(uname –r).img文件

IMG_265

 

IMG_266

Reboot 重启主机。

主机重启完毕后,检查集群状态

IMG_267

 

4.配置集群LVM资源

 

IMG_268

 

 

在任意一个节点(pmck01)上执行以下命令:

创建LVM资源:

pcs resource create pg_lvm ocf:heartbeat:LVM volgrpname=vg_pg exclusive=true op start interval=0s timeout=60s op stop interval=0s timeout=60s op monitor interval=30s timeout=60s --group group_15431

创建文件系统资源:

pcs resource create pg_fs ocf:heartbeat:Filesystem device="/dev/vg_pg/lv_pgdata" directory="/data_15431" fstype=xfs options="defaults" op start interval=0s timeout=60s op stop interval=0s timeout=60s op monitor interval=20s timeout=60s --group group_15431

 

创建VIP资源

pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.16.1.115 cidr_netmask=24 op start interval=0s timeout=60s op stop interval=0s timeout=60s op monitor interval=30s timeout=60s --group group_15431

 

设置位置约束和资源粘性值-----

# 设置位置约束,让资源倾向于在pmck01上运行

pcs constraint location group_15431 prefers pmck01=50

 

# 设置资源粘性值,使得资源一旦迁移到另一个节点后倾向于留在那里

pcs resource meta group_15431 resource-stickiness=200

 

pg_lvm: 资源名称,可以根据需要自定义。

ocf:heartbeat:LVM: 使用OCF类型的LVM资源代理。

volgrpname=vg_pg: 指定要管理的卷组名称为vg_pg。

exclusive=true: 设置此LVM卷组为独占模式,防止多个节点同时访问相同的物理卷,有助于避免数据损坏。

op start interval=0s timeout=60s: 启动操作配置,表示启动时执行一次,超时时间为60秒。

op stop interval=0s timeout=60s: 停止操作配置,表示停止时执行一次,超时时间为60秒。这里将interval设置为0s,以确保仅在资源实际停止时执行该操作。

op monitor interval=30s timeout=60s: 监控操作配置,每30秒检查一次资源状态,若超过60秒未响应则认为失败。

--group group_15431: 将此资源添加到名为group_15431的资源组中。

创建完毕后目录自动挂载上来。

IMG_269

 

IMG_270

VIP的资源也启动了。

【VIP的资源将来用作于pg的监听】

 

接下来我们测试一下,目录能够切换到2节点去。

IMG_271

 

切换成功。

再次切回1节点

IMG_272

 

IMG_273

 

5.配置安装postgresql 数据库。

下载软件包 下载地址:https://www.postgresql.org/ftp/source/

IMG_274

 

一:安装依赖包

yum -y install readline*

yum -y install perl-ExtUtils*

yum -y install zlib-devel*

yum -y install pam-devel*

yum -y install libxml*

yum -y install libxslt-devel*

yum -y install openldap-devel*

yum -y install python-devel*

yum -y install gcc-c++*

yum -y install cmake

yum -y install icu libicu*

二:创建安装目录和用户

安装目录

/data_15431/pg_home

数据库目录

/data_15431/pg_data/

IMG_275

 

groupadd -g 15001 postgres

useradd -g postgres postgres

IMG_276

 

三:开始编译安装

./configure --prefix=/data_15431/pg_home --with-pgport=15431

IMG_277

 

IMG_278

1节点编译安装完成后,将资源目录切换到2节点进行同样的编译安装操作,确保环境变量一致【安装目录也可以放在本地/home/postgres/pg_home】

pcs resource move group_15431 pmck02

./configure --prefix=/data_15431/pg_home --with-pgport=15431

make & make install

IMG_279

 

IMG_280

 

修改环境变量:

IMG_281

 

IMG_282

 

init初始化数据库【只在1个节点初始化即可】

IMG_283

 

IMG_284

修改监听地址,重新reload

 

IMG_285

 

IMG_286

pg_ctl reload -D /data_15431/pg_data

 

IMG_287

 

关闭数据库,将资源回切1节点,查看是否能够启动数据库

IMG_288

 

IMG_289

 

我这里是手工切换的,生产环境都是自动切换的。

添加postgresql 数据库资源到pcs集群中

pcs resource create pg_15431 ocf:heartbeat:pgsql \

pgctl="/data_15431/pg_home/bin/pg_ctl" \

psql="/data_15431/pg_home/bin/psql" \

pgdata="/data_15431/pg_data" \

rep_mode="none" \

node_list="pmck01 pmck02" \

restore_command="" \

primary_conninfo_opt="keepalives_idle=60 keepalives_interval=5 keepalives_count=5" \

master_ip="172.16.1.115" \

stop_escalate="0" \

op start interval=0s timeout=60s \

op stop interval=0s timeout=60s \

op promote interval=0s timeout=60s \

op demote interval=0s timeout=60s \

op monitor interval=30s timeout=60s --group group_15431

 

 

IMG_290

 

资源名称:资源被命名为pg_15431。

pgctl和psql路径:指向你的PostgreSQL安装目录下的pg_ctl,psql工具。

pgdata路径:指向你的PostgreSQL数据目录。

rep_mode:设置为none表示不使用复制模式。

node_list:列出所有可能运行该资源的节点。

primary_conninfo_opt:配置主备连接参数。

master_ip:设置为主IP地址(在这个场景中是VIP地址)。

操作超时设置:定义了启动、停止、提升、降级和监控操作的超时时间。

--group group_15431:将这个资源添加到名为group_15431的资源组中

【要是有资源处于失败状态,可以清理该资源的历史状态并重新尝试启动资源组】

pcs resource cleanup pg_15431

 

 

接下来,测试一下,将资源切到2节点,pg数据库能够自动online

IMG_293

 

IMG_294

 

可以看到数据库已经能够正常启动了,集群资源也是正常的。

再次回切1节点,查看数据库

posted @ 2025-03-02 19:17  Anshenwang  阅读(66)  评论(0)    收藏  举报