AIOps 一场颠覆传统运维的盛筵
1074
2022-10-13
【实战篇】_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合规性访问:如何拒绝非信任的账号连接库,及免密登录库设置???
发表评论
暂时没有评论,来抢沙发吧~