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

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

原创 杨磊 2019-11-07
1050

引言

来了一需求,一项目数据库高可用要求使用双机热备,至于为什么不用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 database
192.168.0.161  EthanDBdb01
#second database
192.168.0.162  EthanDBdb02
#second database
192.168.0.162  EthanDBvip
  1. 在 2 个 HA 节点上安装 HA 所需要的包并启动服务
# yum groupinstall "High Availability"
# yum install pcs pacemaker fence-agents-all

启动pcsd服务在每个节点上

# systemctl start pcsd.service
# systemctl enable pcsd.service
  1. 在 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 设备使用。

  1. 在 2 个 HA 节点上设置hacluster用户的密码
# echo HACLUSTER_PASSWORD | passwd --stdin hacluster

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

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

认证集群节点

输入hacluster用户名和密码

# pcs cluster auth EthanDBdb01 EthanDBdb02
Username: hacluster
Password:
EthanDBdb02: Authorized
EthanDBdb01: Authorized

创建集群

# pcs cluster setup --start --name group_cluster EthanDBdb01 EthanDBdb02
# pcs cluster enable –all
#pcs cluster status  #查看集群状态
# pcs resource show  #查看状态
  1. 在 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
  1. 在 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节点上。

  1. 在 HA1 节点上,添加共享存储
[root@EthanDBdb01 ~]# df -h
Filesystem                            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
  1. 在 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
  1. 在 HA1节点上验证集群状态
[root@EthanDBdb01 ~]# pcs status
Cluster name: group_cluster
Stack: corosync
Current DC: EthanDBdb01 (version 1.1.15-11.el7-e174ec8) - partition with quorum
Last 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 configured
Online: [ EthanDBdb01 EthanDBdb02 ]
Full list of resources:
 groupdb1-ipmi  (stonith:fence_ipmilan):        Started EthanDBdb01
 groupdb2-ipmi  (stonith:fence_ipmilan):        Started EthanDBdb02
Resource Group: oracle
     VIP        (ocf::heartbeat:IPaddr2):       Started EthanDBdb01
oradata    (ocf::heartbeat:Filesystem):    Started EthanDBdb01
archive    (ocf::heartbeat:Filesystem):    Started EthanDBdb01
     group_lsnr (ocf::heartbeat:oralsnr):       Started EthanDBdb01
     group_instance     (ocf::heartbeat:oracle):        Started EthanDBdb01
Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
 
  1. 常用命令

切换节点服务器命令,将 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

最后修改时间:2019-11-08 09:57:56
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论