【实战篇】_RHEL 7.x Pacemaker实现 Oracle单实例高可用

网友投稿 1074 2022-10-13

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

【实战篇】_RHEL 7.x Pacemaker实现 Oracle单实例高可用

【此为"一森咖记"微信——第52篇文章】

【引言】

来了一需求,一项目数据库高可用要求使用双机热备,至于为什么不用RAC,不在本文讨论范围内。因操作系统使用的是RHEL7.3,借助LINUX7.X版本的Pacemaker 工具构建oracle的单实例双机HA。

因之前未在RHEL7.X上构建过Oracle的HA,故本文记录下。

【解决方案】

1. 由 Pacemaker 实现 VIP 、卷/文件系统、数据库实例和数据库监听器的管理、切换;

【服务器信息】

192.168.0.161     主库

192.168.0.162     备库

192.168.0.16  VIP

操作系统版本

Red Hat Enterprise Linux Server release 7.3 (Maipo)

共享磁盘,挂载到 2 个 HA 节点

/oradata

/archive

集群配置步骤

1. 在 2 个 HA 节点上设置服务器名称和命名解析。注意:若DNS服务器可用, 可忽略此步骤

[root@EthanDBdb02 ~]# cat etc/hosts#primary database192.168.0.161 EthanDBdb01#second database192.168.0.162 EthanDBdb02#second database192.168.0.162 EthanDBvip

2. 在 2 个 HA 节点上安装 HA 所需要的包并启动服务

# yum groupinstall "High Availability"# yum install pcs pacemaker fence-agents-all

启动pcsd服务在每个节点上

# systemctl start pcsd.service# systemctl enable pcsd.service

3. 在 2 个 HA 节点上打开防火墙的对应服务端口

# firewall-cmd --permanent --add-service=high-availability# firewall-cmd --permanent --add-port=7410/udp# firewall-cmd --reload# firewall-cmd --list-all

注意

防火墙配合 HA 增加了 high-availability 服务, udp 7410 端口给 stonith kdump 设备使用。

4. 在 2 个 HA 节点上设置hacluster用户的密码

# echo HACLUSTER_PASSWORD | passwd --stdin hacluster

注意:HACLUSTER_PASSWORD 是为 hacluster 用户设置的密码。

5. 在 HA1 节点上注册两个 HA 节点的集群服务并创建集群

认证集群节点

输入hacluster用户名和密码

# pcs cluster auth EthanDBdb01 EthanDBdb02Username: haclusterPassword:EthanDBdb02: AuthorizedEthanDBdb01: Authorized

创建集群

# pcs cluster setup --start --name group_cluster EthanDBdb01 EthanDBdb02# pcs cluster enable –all

#pcs cluster status  #查看集群状态

# pcs resource show  #查看状态

6. 在 HA1 节点上, 设置 stonith kdump 设备

添加FENCE设备

[root@EthanDBdb01 ~]# pcs stonith create kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="EthanDBdb01 EthanDBdb02"

设置 stonith kdump 可以防止节点故障时, 集群软件直接停机, 从而不产生 kdump 文件的问题。或者通过以下命令禁用 stonith。

[root@EthanDBdb01 ~]# pcs property set stonith-enabled=false

7. 在 HA1 节点上, 增加 VIP 资源

[root@EthanDBdb01 ~]# pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.0.16 cidr_netmask=24 nic=enp0s3 op monitor interval=10s --group=oracle

上述命令参数描述:

1) nic=enp0s3 为网卡信息,使用#ip a 命令可查看

2) op monitor interval=10s 网络监控检测为10s,如果每隔10s服务器HA1节点不可达,则将VIP切换至HA2节点上。

8. 在 HA1 节点上,添加共享存储

[root@EthanDBdb01 ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/Vg_Oracle-Lv_oracle 50G 10G 37G 22% oracle/dev/mapper/Vg_Oracledata-Lv_oradata 433G 63G 349G 16% oradata/dev/mapper/Vg_Oracledata-Lv_archive   50G  2.4G   45G   6% /archiv

[root@EthanDBdb01 ~]# pcs resource create oradata Filesystem device="/dev/vg_avpsdb/lvm_avpsoradata" directory="/oradata" fstype="xfs" --group oracle_group[root@EthanDBdb01 ~]# pcs resource create archive Filesystem device="/dev/vg_avpsdb/lvm_avpsarchive" directory="/archive" fstype="xfs" --group oracle_group

9. 在 HA1 节点上,添加Oracle实例和监听

在集群group_cluster中的资源组中添加实例和监听

添加实例

[root@EthanDBdb01 ~]# pcs resource create group_instance oracle sid=group home=/oracle/oracle/product/19.3.0/db_1 user=oracle --group oracle

添加监听

[root@EthanDBdb01 ~]# pcs resource create group_lsnr oralsnr sid=group home=/oracle/oracle/product/19.3.0/db_1 user=oracle --group oracle

10. 在 HA1节点上验证集群状态

[root@EthanDBdb01 ~]# pcs statusCluster name: group_clusterStack: corosyncCurrent DC: EthanDBdb01 (version 1.1.15-11.el7-e174ec8) - partition with quorumLast updated: Mon Sep 30 11:21:12 2019 Last change: Wed Sep 25 17:11:44 2019 by root via crm_resource on EthanDBdb02 2 nodes and 7 resources configuredOnline: [ EthanDBdb01 EthanDBdb02 ]Full list of resources: groupdb1-ipmi (stonith:fence_ipmilan): Started EthanDBdb01 groupdb2-ipmi (stonith:fence_ipmilan): Started EthanDBdb02Resource Group: oracle VIP (ocf::heartbeat:IPaddr2): Started EthanDBdb01oradata (ocf::heartbeat:Filesystem): Started EthanDBdb01archive (ocf::heartbeat:Filesystem): Started EthanDBdb01 group_lsnr (ocf::heartbeat:oralsnr): Started EthanDBdb01 group_instance (ocf::heartbeat:oracle): Started EthanDBdb01Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled

11. 常用命令

切换节点服务器命令,将 Resource Group: oracle 从HA1切换至HA2上。

[root@EthanDBdb01 ~]# pcs resource move oracle EthanDBdb02

删除整个资源组

# pcs resource delete oracle

Oracle 为资源组名称Resource_Group_name

删除资源组被管控对象

如删除资源组中监听、实例资源

# pcs resource delete group_lsnr# pcs resource delete group_instance

至此,整个资源配置完成。

【结语】

1. 本文重点讲述了如何在Red Hat Enterprise Linux 7.x 中如何使用PCS High Availability 实现 Oracle Database 单实例的高可用;

2. 有一点,本文可以实现服务器如有异常完成节点间的切换;但并没有对监听和实例的异常状态监控判断,故,在单节点监听或者实例异常的情况下,不能进行节点的自动切换,即不能把资源组中的共享存储、监听、实例、VIP切换至备机。后续文章将持续探讨。

【参考】

https://github.com/lees07/RHEL7HA/blob/master/RHEL7HA-4-ORACLEDB.md

关注个人微信微信;

长按以下二维码或微信搜索“一森咖记”

往期精彩文章

========================================

Oracle ADG同步技术,DBA必备的一种“后悔药”干货:RHEL7.2生产环境下双节点12c RAC搭建实操干货:RHEL7.1环境下双节点Oracle RAC搭建实操LINUX环境:MySQL和Oracle开机自启动,咋搞?Logminer:oracle人为误操作之恢复神器What:ASM自动脱落了实操:12C RAC环境下的ADG同步库搭建“神器”:Oracle日志采集分析工具——TFAOracle Rac:关闭透明大页的原因及方法实操篇:Oracle 19c的安装部署排故篇:ADG实例被LGWR进程宕掉?!Oracle合规性访问:如何拒绝非信任的账号连接库,及免密登录库设置???

上一篇:kubernetes(k8s)部署 Metrics Server 资源
下一篇:kubernetes核心实战(七)--- job、CronJob、Secret
相关文章

 发表评论

暂时没有评论,来抢沙发吧~