zoukankan      html  css  js  c++  java
  • Oracle Clusterware 组成

      Oracle Cluster 是一个单独的安装包,安装后,在每个结点上的Oracle Clusterware 会自动启动。 Oracle Clusterware的运行环境由2个磁盘文件(OCR,Voting Disk),若干进程和网络元素组成。

    磁盘文件:

      Clusterware 在运行期间需要两个文件:OCR和Voting Disk. 这2个文件必须存放在共享存储上。 OCR 用于解决健忘问题,Voting Disk 用于解决脑列问题。 Oracle 建议使用裸设备来存放这2个文件,每个文件创建一个裸设备,每个裸设备分配100M左右的空间就够了。

    1.1 OCR

      健忘问题是由于每个节点都有配置信息的拷贝,修改节点的配置信息不同步引起的。 Oracle 采用的解决方法就是把这个配置文件放在共享的存储上, 这个文件就是OCR Disk。OCR 中保存整个集群的配置信息,配置信息以"Key-Value" 的形式保存其中。 在Oracle 10g以前, 这个文件叫作Server Manageability Repository(SRVM). 在Oracle 10g, 这部分内容被重新设计,并重名为OCR.在Oracle Clusterware 安装的过程中, 安装程序会提示用户指定OCR位置。并且用户指定的这个位置会被记录在/etc/oracle/ocr.Loc(Linux System)或者/var/opt/oracle/ocr.Loc(Solaris System)文件中。 而在Oracle 9i RAC中,对等的是srvConfig.Loc文件。 Oracle Clusterware在启动时会根据这里面的内容从指定位置读入OCR 内容。

    1.2  Voting Disk

      Voting Disk 这个文件主要用于记录节点成员状态,在出现脑裂时,决定那个Partion获得控制权,其他的Partion必须从集群中剔除。在安装Clusterware时也会提示指定这个位置。 安装完成后可以通过如下命令来查看Voting Disk位置:$Crsctl query css votedisk

    后台进程:

      Clusterware 由若干进程组成,其中最重要的3个是:CRSD,CSSD,EVMD. 在安装clusterware的最后阶段,会要求在每个节点执行root.sh 脚本, 这个脚本会在/etc/inittab 文件的最后把这3个进程加入启动项,这样以后每次系统启动时,Clusterware 也会自动启动,其中EVMD和CRSD 两个进程如果出现异常,则系统会自动重启这两个进程,如果是CSSD 进程异常,系统会立即重启

    1 [root@node1 ~]# ls -l /etc/init.d/init.*
    2 -r-xr-xr-x 1 root root  1951 Mar 24 05:30 /etc/init.d/init.crs
    3 -r-xr-xr-x 1 root root  4719 Mar 24 05:30 /etc/init.d/init.crsd  --CRSD
    4 -r-xr-xr-x 1 root root 35399 Mar 24 05:30 /etc/init.d/init.cssd  --CSSD
    5 -r-xr-xr-x 1 root root  3195 Mar 24 05:30 /etc/init.d/init.evmd  --EVMD
    6 [root@node1 ~]# 

    2.1 CSSD的子进程OCSSD:

    1 [oracle@node1 bin]$ ps -ef|grep -v grep|grep cssd
    2 root      5673     1  0 23:15 ?        00:00:00 /bin/sh /etc/init.d/init.cssd fatal
    3 root      6328  5673  0 23:19 ?        00:00:00 /bin/sh /etc/init.d/init.cssd daemon
    4 root      6453  6328  0 23:19 ?        00:00:00 /bin/su -l oracle -c /bin/sh -c 'ulimit -c unlimited; cd/opt/ora10g/product/10.2.0/crs_1/log/node1/cssd;  /opt/ora10g/product/10.2.0/crs_1/bin/ocssd  || exit $?'
    5 oracle    6454  6453  0 23:19 ?        00:00:00 /bin/sh -c ulimit -c unlimited; cd /opt/ora10g/product/10.2.0/crs_1/log/node1/cssd;  /opt/ora10g/product/10.2.0/crs_1/bin/ocssd  || exit $?
    6 oracle    6489  6454  0 23:19 ?        00:00:00 /opt/ora10g/product/10.2.0/crs_1/bin/ocssd.bin

      OCSSD这个进程是Clusterware最关键的进程,如果这个进程出现异常,会导致系统重启,这个进程提供CSS(Cluster Synchronization Service)
    服务。CSS服务负责整个集群配置,确定哪些节点是集群里的成员,每当有一个节点加入或离开集群时,CSS负责通知其他节点更新集群配置。CSS 服务通过多种心跳机制实时监控集群状态,提供脑裂保护等基础集群服务功能。

      CSS 服务有2种心跳机制: 一种是通过私有网络的Network Heartbeat,另一种是通过Voting Disk的Disk Heartbeat.

      这2种心跳都有最大延时,对于Disk Heartbeat, 这个延时叫作IOT (I/O Timeout);对于Network Heartbeat, 这个延时叫MC(Misscount)。 这2个参数都以秒为单位,缺省时IOT大于MC,在默认情况下,这2个参数是Oracle 自动判定的,并且不建议调整。

    $crsctl get css disktimeout
    $crsctl get css misscount

      注:除了Clusterware 需要这个进程,在单节点环境中如果使用了ASM,也需要这个进程;这个进程用于支持ASM Instance 和RDBMS Instance之间的通信。 如果在使用了ASM的节点上安装RAC,会遇到一个问题:RAC节点要求只有一个OCSSD进程,并且应该是运行$CRS_HOME目录下的,这时就需要先停止ASM,并通过$ORACLE_HOME/bin/localcfig.Sh delete 删除之前的inittab 条目。之前安装ASM时,也使用这个脚本来启动OCSSD:$ORACLE_HOME/bin/localconfig.Sh add 

    2.2 CRSD进程:

      CRSD是实现"高可用性(HA)"的主要进程,它提供的服务叫作CRS(Cluster Ready Service) 服务

      Oracle Clusterware是位于集群层的组件,它要为应用层资源(CRS Resource) 提供"高可用性服务",所以, Oracle Clusterware 必须监控这些资源,并在这些资源运行异常时进行干预,包括关闭,重启进程或者转移服务。CRSD进程提供的就是这些服务。

      所有需要 高可用性 的组件,都会在安装配置的时候,以CRS Resource的形式登记到OCR中,而CRSD 进程就是根据OCR中的内容,决定监控哪些进程,如何监控,出现问题时又如何解决。也就是说,CRSD 进程负责监控CRS Resource 的运行状态,并要启动,停止,监控,Failover这些资源。 默认情况下,CRS 会自动尝试重启资源5次,如果还是失败,则放弃尝试。

      CRS Resource 包括GSD(Global Serveice Daemon),ONS(Oracle Notification Service),VIP, Database, Instance 和 Service. 这些资源被分成2类:  GSD,ONS,VIP 和Listener 属于Noteapps类;Database,Instance 和Service 属于 Database-Related Resource 类。

      这种分类方式很好理解:Nodeapps 就是说每个节点只需要一个就够了,比如每个节点只有一个Listener;而Database-Related Resource 就是说这些资源和数据库有关,不受节点的限制,比如一个节点可以有多个实例,每个实例可以有多个Service

    2.3 EVMD进程:

      EVMD 这个进程负责发布CRS 产生的各种事件(Event). 这些Event可以通过2种方式发布给客户:ONS 和 Callout Script. 用户可以自定义回调脚本,放在特定的目录下,这样当有某些事件发生时,EVMD会自动扫描该目录,并调用用户的脚本,这种调用是通过racgevt进程来完成的。

       EVMD 进程除了复杂发布事件之外,它还是CRSD 和CSSD 两个进程之间的桥梁。 CRS 和CSS 两个服务之前的通信就是通过EVMD 进程完成的。

    网络元素--VIP原理和特点

    3.1 VIP原理:

      Oracle 的TAF 就是建立在VIP 技术之上的。 IP 和VIP 区别在与: IP 是利用TCP层超时,VIP 利用的是应用层的立即响应。VIP它是浮动的IP. 当一个节点出现问题时会自动的转到另一个节点上。假设有一个2个节点的RAC,正常运行时每个节点上都有一个VIP。当节点2发生故障,RAC 会做如下操作:

    1). CRS 在检测到rac2节点异常后,会触发Clusterware 重构,最后把rac2节点剔除集群,由节点1组成新的集群。
    2). RAC的Failover 机制会把节点2的VIP转移到节点1上,这时节点1的PUBLIC 网卡上就有3个IP 地址: VIP1,VIP2, PUBLIC IP1.
    3). 用户对VIP2的连接请求会被IP层路由转到节点1
    4). 因为在节点1上有VIP2的地址,所有数据包会顺利通过路由层,网络层,传输层。
    5). 但是,节点1上只监听VIP1和public IP1的两个IP地址。并没有监听VIP2,故应用层没有对应的程序接收这个数据包,这个错误立即被捕获。
    6). 客户段能够立即接收到这个错误,然后客户段会重新发起向VIP1的连接请求。

    3.2 VIP 特点:

    1). VIP 是通过VIPCA脚本创建的
    2). VIP 作为Nodeapps类型的CRS Resource 注册到OCR中,并由CRS 维护状态。
    3). VIP 会绑定到节点的public 网卡上,故public 网卡有2个地址。
    4). 当某个节点发生故障时,CRS 会把故障节点的VIP 转移到其他节点上。
    5). 每个节点的Listener 会同时监听public 网卡上的 public ip 和VIP
    6). 客户端的tnsnames.Ora 一般会配置指向节点的VIP.

    Clusterware 的日志体系:

    首选的查看文件:
    alert.log  $CRS_HOME/log/[node]/alert.Log
     
    Clusterware后台进程日志:
    crsd.Log   $CRS_HOME/log/[node]/crsd/crsd.Log
    ocssd.Log  $CRS_HOME/log/[node]/cssd/ocsd.Log
    evmd.Log   $CRS_HOME/log/[node]/evmd/evmd.Log
     
    Nodeapp日志位置:
    $CRS_HOME/log/[node]/racg/    --包括ONS和VIP,比如:ora.Rac1.ons.Log    
    
    工具执行日志:
    $CRS_HOME/log/[node]/client/  --ocrcheck, ocrconfig,ocrdump,oifcfg和clscfg 这些工具产生的日志就放在这个目录下

    --整理自《大话 oracle rac》 

  • 相关阅读:
    【Lintcode】112.Remove Duplicates from Sorted List
    【Lintcode】087.Remove Node in Binary Search Tree
    【Lintcode】011.Search Range in Binary Search Tree
    【Lintcode】095.Validate Binary Search Tree
    【Lintcode】069.Binary Tree Level Order Traversal
    【Lintcode】088.Lowest Common Ancestor
    【Lintcode】094.Binary Tree Maximum Path Sum
    【算法总结】二叉树
    库(静态库和动态库)
    从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/polestar/p/3134703.html
Copyright © 2011-2022 走看看