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

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

一森咖记 2019-09-30
3319

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

【引言】

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

 

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

 

【解决方案】

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

    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 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  #查看状态

               

              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 -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

                  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 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

                     

                    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



                      关注个人微信微信;

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

                      往期精彩文章

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

                      1. Oracle ADG同步技术,DBA必备的一种“后悔药”

                      2. 干货:RHEL7.2生产环境下双节点12c RAC搭建实操

                      3. 干货:RHEL7.1环境下双节点Oracle RAC搭建实操

                      4. LINUX环境:MySQL和Oracle开机自启动,咋搞?

                      5. Logminer:oracle人为误操作之恢复神器

                      6. What:ASM自动脱落了

                      7. 实操:12C RAC环境下的ADG同步库搭建

                      8. “神器”:Oracle日志采集分析工具——TFA

                      9. Oracle Rac:关闭透明大页的原因及方法

                      10. 实操篇:Oracle 19c的安装部署

                      11. 排故篇:ADG实例被LGWR进程宕掉?!

                      12. Oracle合规性访问:如何拒绝非信任的账号连接库,及免密登录库设置???


                       

                       

                       

                      最后修改时间:2020-05-07 23:38:10
                      文章转载自一森咖记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论