当前位置 : 主页 > 操作系统 > centos >

Rhel 7 pcs 实现oracle 12c高可用

来源:互联网 收集:自由互联 发布时间:2022-06-20
作者:田逸(v**x:formyz) 需求描述 两节点物理服务器,外挂虚拟化后的共享存储(两台存储设备),存储通过多路径与物理服务器直接连接。 网络划分为三个:数据网络、心跳网络及
作者:田逸(v**x:formyz)

需求描述

两节点物理服务器,外挂虚拟化后的共享存储(两台存储设备),存储通过多路径与物理服务器直接连接。

网络划分为三个:数据网络、心跳网络及管理网络(远程控制卡)。

工具组件包括:rhel 7系统,pcsd工具包(包括corosync等),oracle数据库。

高可用HA资源包括:虚拟网络地址(vip)、oracle监听器、逻辑卷资源(LVM)、文件系统(filesystem)、oracle数据库实例。

实施步骤

硬件上架部署系统存储准备安装pacemaker 安装oracle数据库配置监控器配置oracle命名服务配置pcs高可用创建数据库实例模拟故障验收

硬件上架

 本机硬盘到位,线缆连接到位,包括网线、共享存储连接卡及连接线,心跳网络连接到位,管理网络连接到位。 安装介质到位:包括redhat 系统盘或者iso文件,oracle安装介质,授权许可。 安装所需的软件源,最好是能联网,安装好pcs及oracle以后,再接入正式生成网络。如条件不具备,则用iso挂接本地,做yum源。

部署系统

 设置好服务器的远程控制卡网络。 按要求分区并分配容量。 配置好网络。本案分两个网络:数据网络及心跳网络,并且需要两两绑定,用工具nmtui进行操作,不会犯输入上的低级错误。 关闭防火墙systemctl disable firewalld && systemctl stop firewalld 关闭selinux  修改文件/etc/hosts,映射主机别名

存储准备--挂接存储及创建逻辑卷

安装iscsi连接器识别共享设备块两台设备执行:(1) 创建物理卷pvcreate /dev/sdc(2) 创建物理卷组 vgcreate vgdb /dev/sdc任意设备执行(只在一个节点执行一次):(1) 创建逻辑卷lvcreate -n dblv -l 100%VG vgdb(2) 创建文件系统 mkfs.xfs /dev/mapper/vgdb-dblv(3) 挂接文件系统 mount /dev/mapper/vgdb-dblv /oradata/(4) 另一设备检验逻辑卷 lvscanRhel 7 pcs 实现oracle 12c高可用(5) 两节点修改lvm.conf,把系统的卷排除在外。(6) 两节点执行 dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)

安装pacemaker

 准备yum源或者服务器连接到互联网。 执行安装 yum install pcs fence-agents-all。 配置pcs服务开机自启动 systemctl enable pcsd.

安装oralce数据库软件(不创建数据库)

 准备好安装介质,并把其复制到服务器的相关目录,解包后待用; 准备环境变量等所需配置的脚本,并给予执行权限; 执行该脚本,校验之; 安装并启用vnc服务;Rhel 7 pcs 实现oracle 12c高可用 Vnc客户端连接到系统;Rhel 7 pcs 实现oracle 12c高可用 把oracle 安装目录拷贝到/home/oracle并执行chown –R oracle:oinstall /home/oracle 执行 xhost + 授权;Rhel 7 pcs 实现oracle 12c高可用-------------------以上是root用户---------------------------- 切换用户到oracle:su – oracle 设置环境变量display: export DISPLAY=:1(这个值一定要与vncserver启动的输出值相匹配); Rhel 7 pcs 实现oracle 12c高可用 进入安装软件目录 cd database,执行脚本./runInstaller ,调出图形界面后,照提示进行下一步,直到安装完成。 Rhel 7 pcs 实现oracle 12c高可用Rhel 7 pcs 实现oracle 12c高可用

listener监听器准备

(1) 两台设备都执行netca 创建监听器Rhel 7 pcs 实现oracle 12c高可用(2) 修改两台设备的监听器文件/u01/app/oracle/product/12.2.0/network/admin/listener.ora,使HOST的值为vip。 Rhel 7 pcs 实现oracle 12c高可用(3) 暂时不要启动监听器,因为vip没有被自动设置到系统。如果需要验证,修改HOST的值为本机地址或者主机别名。

Oracle网络命名配置

(1) 两台服务器继续执行指令 netca ,鼠标选取第三个单选项—本地网络服务命名。Rhel 7 pcs 实现oracle 12c高可用(2) 确保两台设备的命名地址为vip。Rhel 7 pcs 实现oracle 12c高可用

配置pcs高可用

 启动pcs服务。执行命令 systemctl start pcsd (前边配置了开启启动,因此重启系统就不需要再执行此命令;另外corosync服务也不需要手动去启动,pcs会自动处理)。 设置pcs用户hacluster密码。Passwd hacluster (hacluster账号是安装pacemaker时自动生成的,可以把两台服务器的hacluster账号设置成同样的密码,也可以不一样)。---------------------------以上操作要在两台物理机上分别进行-------------- 验证用户。在任一服务器执行 pcs cluster auth ora101 ora102 按提示输入上述步骤设定的密码,完成验证。 浏览器访问任一服务器的地址,pcs的端口号为:2224,输入用户名hackuster及密码。 Rhel 7 pcs 实现oracle 12c高可用(1) 创建集群,填写相应的信息。Rhel 7 pcs 实现oracle 12c高可用等待几秒钟,创建好集群。 Rhel 7 pcs 实现oracle 12c高可用鼠标点链接“my-cls01”,查看更多的信息。Rhel 7 pcs 实现oracle 12c高可用鼠标选点链接“ora102”,也可以看到其上运行的服务(pacemaker等),这个时候,我们可以返回到系统命令行,查看corosync服务是否启动,配置文件是否自动生成。没创建集群之前,corosync配置文件不存在的,只有个例子文件corosync.conf.example。Rhel 7 pcs 实现oracle 12c高可用(2) 按如下顺序添加资源及组

  • 添加虚拟ip(vip) Rhel 7 pcs 实现oracle 12c高可用创建好vip以后,其状态可能为blocked状态,需要先禁止掉stonish。进入任一服务器系统,执行命令行 pcs property set stonith-enabled=false 。Rhel 7 pcs 实现oracle 12c高可用
  • 添加资源组。如果是两个或者两个以上的资源组,系统会自动分配这些组到不同的服务器,以达到充分利用资源的目的。 Rhel 7 pcs 实现oracle 12c高可用把资源vip归于db_grp资源组。
  • 有了vip资源并生效以后,就可以启动oracle监听器(监听器依赖于vip)。切换到命令行模式(只在有vip启动的服务器上),执行如下命令启用及验证oracle监听器。[root@ora101 pcsd]# su - oracleLast login: Fri May 29 03:19:28 EDT 2020[oracle@ora101 ~]$ lsnrctl start
  • LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 29-MAY-2020 07:19:12

    Copyright (c) 1991, 2016, Oracle. All rights reserved.

    Starting /u01/app/oracle/product/12.2.0/bin/tnslsnr: please wait...

    TNSLSNR for Linux: Version 12.2.0.1.0 - ProductionSystem parameter file is /u01/app/oracle/product/12.2.0/network/admin/listener.oraLog messages written to /u01/app/oracle/diag/tnslsnr/ora101/listener/alert/log.xmlListening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.35.66)(PORT=1521)))Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.35.66)(PORT=1521)))STATUS of the LISTENER

    Alias LISTENERVersion TNSLSNR for Linux: Version 12.2.0.1.0 - ProductionStart Date 29-MAY-2020 07:19:12Uptime 0 days 0 hr. 0 min. 0 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /u01/app/oracle/product/12.2.0/network/admin/listener.oraListener Log File /u01/app/oracle/diag/tnslsnr/ora101/listener/alert/log.xmlListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.35.66)(PORT=1521)))(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))The listener supports no servicesThe command completed successfully[oracle@ora101 ~]$ lsnrctl status

    LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 29-MAY-2020 07:19:37

    Copyright (c) 1991, 2016, Oracle. All rights reserved.

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.35.66)(PORT=1521)))STATUS of the LISTENER

    Alias LISTENERVersion TNSLSNR for Linux: Version 12.2.0.1.0 - ProductionStart Date 29-MAY-2020 07:19:12Uptime 0 days 0 hr. 0 min. 24 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /u01/app/oracle/product/12.2.0/network/admin/listener.oraListener Log File /u01/app/oracle/diag/tnslsnr/ora101/listener/alert/log.xmlListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.35.66)(PORT=1521)))(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))The listener supports no servicesThe command completed successfully

  • 创建监听器资源,内容一定要填写正确,要与oracle用户.bash_profile里边定义的相一致,否则监听器不能被正确创建。 Rhel 7 pcs 实现oracle 12c高可用tsn_amin那一行,填写的是ORACLE_HOME/network/admin,也就是监听器配置文件及本地命名服务配置文件所在的路径。 Rhel 7 pcs 实现oracle 12c高可用如果创建成功,此资源的状态应该为绿色的“running”,并运行于有vip存在的节点。 Rhel 7 pcs 实现oracle 12c高可用
  • 创建逻辑LVM卷资源。此资源是创建文件系统及创建数据库所必须的前提条件,前边的步骤,已经对共享文件块做了挂接及文件系统的创建,现在需要把文件挂接卸载掉。先用df查看是否被挂接,如果挂接,用umount 处理。这里再在登录任一服务器,在命令行执行vgscan查看共享卷组的名称,在web界面添加LVM资源的时候需要这个值。继续回到浏览器管理界面,进行LVM资源添加,使其在组db_grp之下。 Rhel 7 pcs 实现oracle 12c高可用注意:exclusive的默认值为false,需要改成true,不然逻辑卷组会一直处于非激活状态。 Rhel 7 pcs 实现oracle 12c高可用创建成功后,运行资源组的服务器上,再执行指令 lvscan ,逻辑卷的状态为ACTIVE,而另外一台服务器的状态则继续为inactive。
  • 创建文件系统资源。文件系统以来于逻辑卷资源,必须在LVM卷正常的情况下,再进行这个步骤才是有效的方法。Rhel 7 pcs 实现oracle 12c高可用创建完文件系统资源,除了页面上看见此资源状态为绿色的“running”外,还可以登录运行资源组的系统,执行指令df –h 查看文件系统是否被自动挂接到目录。 Rhel 7 pcs 实现oracle 12c高可用Rhel 7 pcs 实现oracle 12c高可用接下来要暂时中断资源的创建,而转向创建数据库。因为共享的文件系统(实际被运行资源的主机独占)已经挂接,oracle数据库的相关文件,就要在其上生成即创建。等到数据库创建完毕,实例成功启动,再回到web管理界面进行oracle数据库资源的创建。
  • 创建数据库

     确保shm的值大于等于2G。如果不是,则执行下列步骤改变其值。(1) 在 /etc/fstab文件添加一行 tmpfs /dev/shm tmpfs defaults,size=2048M 0 0(2) 执行命令重新挂载 mount -o remount /dev/shm(3) 执行 df –h验证其正确性。 Rhel 7 pcs 实现oracle 12c高可用 用vnc客户端登录到运行资源组的服务器(就是有vip,挂接文件系统到目录/oradata的这个系统),跟前边安装oracle软件一样,切换到用户oracle,设置好环境变量DISPLAY=:1,执行数据库助手执行 dbca,片刻就弹出配置图形界面,按提示输入相关信息。需要注意的是,数据库文件位置要选(或者填)共享文件系统挂节点/oradata,快闪恢复区(FRA)也要填写在/oradata目录,如下图所示。Rhel 7 pcs 实现oracle 12c高可用创建过程需要用root执行一个脚本,照着做就好。创建完毕,试着启动一下实例,看是否正常。 Rhel 7 pcs 实现oracle 12c高可用 创建数据库实例资源。前边的步骤已经正确无误的创建了数据库,并且可以正常启动实例。关闭该实例,待创建好oracle实例资源后,pcs应该正常拉起oracle实例自动启动。Rhel 7 pcs 实现oracle 12c高可用特别需要注意资源组(Resource Group)顺序问题,它必须在文件系统挂接以后才可以往下进行。如果创建数据库资源出错,多半是选项参数部分输入错误,仔细核对就行了。创建成功以后,运行状态如下图:Rhel 7 pcs 实现oracle 12c高可用左侧框中,只有全部是蓝色才为正常,不正常一定是红色!!!那么oracle数据库实例真的起来了么?登录系统,验证一下。Rhel 7 pcs 实现oracle 12c高可用Oracle进程有了,再看连接情况。Rhel 7 pcs 实现oracle 12c高可用

    故障模拟

     监听器故障模拟,分监听器停止与监听器启动不了两种情况。 监听器停止。登录运行资源组的服务器系统,用如下命令进行操作:[root@ora101 ~]# su - oracleLast login: Fri May 29 22:31:52 EDT 2020[oracle@ora101 ~]$ lsnrctl stop

    LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 29-MAY-2020 22:32:10

    Copyright (c) 1991, 2016, Oracle. All rights reserved.

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.35.66)(PORT=1521)))The command completed successfully[oracle@ora101 ~]$ lsnrctl status

    LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 29-MAY-2020 22:32:15

    Copyright (c) 1991, 2016, Oracle. All rights reserved.

    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.35.66)(PORT=1521)))TNS-12541: TNS:no listenerTNS-12560: TNS:protocol adapter errorTNS-00511: No listenerLinux Error: 111: Connection refusedConnecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))TNS-12541: TNS:no listenerTNS-12560: TNS:protocol adapter errorTNS-00511: No listenerLinux Error: 2: No such file or directory监听器确实停止了,但并没有发生资源漂移。Rhel 7 pcs 实现oracle 12c高可用等待片刻以后,监听器会又在原服务器自动启动。 停止监听器,并故意修改监听器配置,使其不能被正常启动。Rhel 7 pcs 实现oracle 12c高可用改完后,停止监听器,pcs现在应该无法重启监听器。甚至于,手工启动也不行。[oracle@ora101 ~]$ lsnrctl start

    LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 29-MAY-2020 23:05:56

    Copyright (c) 1991, 2016, Oracle. All rights reserved.

    Starting /u01/app/oracle/product/12.2.0/bin/tnslsnr: please wait...

    TNSLSNR for Linux: Version 12.2.0.1.0 - ProductionSystem parameter file is /u01/app/oracle/product/12.2.0/network/admin/listener.oraLog messages written to /u01/app/oracle/diag/tnslsnr/ora101/listener/alert/log.xmlError listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.35.166)(PORT=1521)))TNS-12545: Connect failed because target host or object does not existTNS-12560: TNS:protocol adapter errorTNS-00515: Connect failed because target host or object does not existLinux Error: 99: Cannot assign requested address

    Listener failed to start. See the error message(s) above...现在,我们再来看集群的状态,发现资源组发生了转移,漂移到另一台服务器上去了。Rhel 7 pcs 实现oracle 12c高可用再把修改过的监听器配置恢复回来,手动启动监听器,提示不能被正确的验证。Rhel 7 pcs 实现oracle 12c高可用

     数据库实例故障模拟,也可分停止实例及破坏导致实例不能连接两种情形。 停止数据库实例,观察是否能够被pcs重新启动。Rhel 7 pcs 实现oracle 12c高可用数秒中以后,数据库实例又会在这个服务器自动启动。Rhel 7 pcs 实现oracle 12c高可用 修改运行资源组所在服务器的oracle环境变量文件 .bash_profile,使数据库实例不能被正常连接。Rhel 7 pcs 实现oracle 12c高可用实例关闭以后,尝试用手工启动实例(自动起不来),应该不会成功。Rhel 7 pcs 实现oracle 12c高可用数据库实例被停止以后,pcs会去尝试数次重启oracle,不像监听器那么迅速就实现了资源的漂移。Rhel 7 pcs 实现oracle 12c高可用由此可知,修改oracle环境变量并不能造成orace实例启动,要使数据库实例不能启动,可以破坏掉数据库参数文件达到目的,这里就不再尝试。

     模拟服务器死机故障登录运行资源组的服务器,直接关机,再另一台服务器上执行指令查看运行状态。Rhel 7 pcs 实现oracle 12c高可用目前,资源都在节点ora102上运行,那么我们就把节点ora102系统关机。Rhel 7 pcs 实现oracle 12c高可用完全关闭以后,资源全部漂移到另外一个节点ora101,我们从命令行及web页面分别验证一下。(1) 命令行查看状态:Rhel 7 pcs 实现oracle 12c高可用(2) Web管理界面查看状态:

    Rhel 7 pcs 实现oracle 12c高可用

    其他相关

     配置存储位置,在文件/var/lib/pacemaker/cib/cib.xml 中。 主要日志文件:/var/log/pcsd/pcsd.log。  集群同步文件:/etc/corosync/corosync.conf

    上一篇:【 完结福利 】 Python 实现实时文件监控
    下一篇:没有了
    网友评论