oracle心跳地址,Oracle-RAC 集群心跳

Oracle-RAC 集群心跳

心跳线

物理布线注意事项

不建议直连网线, 建议采用交换机连接方式

心跳线与业务网络分开单独接线

若公用一个交换机时, 使用 VLAN 隔离

Oracle 不支持使用交叉线 (cross-cabling) 作为 Clusterware 的内部连接

导致集群不稳定

限制了两个节点 RAC 扩展

建议心跳交换机使用两个交换机做主备, 冗余

RAC 中心跳线作用

承担了心跳作用(检测集群节点间的网络健康状态)

缓存同步刷新

全局资源维护

当出现 gc(grid control)的时候, 用于传输数据块[因内联数据通信量比较大, 建议使用千兆或万兆网]

心跳网络高可用实现

操作系统层面使用双网口绑定的技术实现高可用

双网口绑定常见有负载均衡和主备模式

ORACLE 通过 HAIP 特性 (11.2.0.2) 实现高可用

心跳网络优化建议开启巨帧(Jumbo frame)

巨型帧的影响

在压力较大的系统上使用帧的 Jumbo 的好处, 这样的系统将使用较少的 CPU, 并减少网络开销.

对于 RAC 互连流量, 正确配置为巨型帧的设备可通过减少将大型邮件拆分为标准以太网的较小帧时发生的 TCP,UDP 和以太网开销来提高性能. 由于可以发送一个较大的数据包, 因此消除了各个较小数据包之间的数据包间延迟. 在要求高吞吐量和带宽以及系统受 CPU 约束的情况下, 性能的提高最为明显.

使用巨型帧时, 需要较少的缓冲区传输, 这是减少 IP 堆栈中的碎片和重组的一部分, 因此对减少 Oracle 块传输的延迟有影响.

任何不正确的设置都可能会阻止实例启动或对性能产生非常不利的影响.

Linux 环境

开启ifconfig eth0 mtu9000

ifconfig-a eth0

ab7653affab982b574eb7acc55df2e04.gif

检测验证ping

# a packet size (-s), prohibiting fragmentation (-M do): 禁止零散数据包

ping-c2-Mdo-s8972node2-priv

ping-c2-Mdo-s8973node2-priv

# For Solaris platform, the similar ping command is:

ping-c2-s node2-priv8972

不是所有的网卡都可以开启到 9000, 如果上面 ping 测试不通的话, 可以逐渐的减少. 直到找到一个稳定的值traceroute

traceroute-F node2-priv9000

traceroute-F node2-priv9001

RAC 心跳机制

Oracle 集群如何维护集群的一致性, 所谓的集群一致性就是指集群中每个成员能够了解其他成员的状态, 而且每个成员获得的集群中其他节点的状态和集群中节点成员列表信息是一致的, 这也是集群最基本的要求.

集群的一致性实现机制

Oracle 通过三种机制来实现集群的一致性:

网络心跳: 确定节点与节点间的连通性, 以便节点之间能够了解彼此的状态.

磁盘心跳: 用一个或多个共享的位置来保存节点之间的连通性信息, 以便在集群需要进行重新配置时, 能够做出正确的决定并记录集群最新的状态

本地心跳: 本地节点自我监控机制, 以便当本地节点出现问题时能够 "自杀" 离开集群, 避免不一致的产生

他们都依赖于 oCSSd.bin 进程

OCSSD 这个进程是 Clusterware 最关键的进程, 如果这个进程出现异常, 会导致系统重启. 这个进程提供 CSS (Cluster Synchronization Serviee)服务. CSS 服务通过多种心跳机制, 实时监控集群健康状态, 提供脑裂保护等基础集群服务功能.

CSS 服务心跳机制

通过私有网络的 Network Heartbeat

通过 Voting Disk 的 Disk Heartbeat

ASM 环境也有 CSSD 进程, 用于 ASM instance 和 RDBMS instance 通信

具体实现

网络心跳(Network HeartBeat,NHB)

对于 Oracle 集群, ocssd.bin 守护进程每秒钟通过集群的私网向集群的其他节点发送网络心跳, 用于确定集群节点之间的连通性, 以便节点之间能够了解彼此的状态.

磁盘心跳(Disk HeartBeat,DHB)

磁盘心跳的主要目的就是当集群脑裂时帮助制定脑裂的解决方案.

Oracle 集群的每一个节点每秒钟都会向集群的所有表决盘注册本地节点的磁盘心跳信息 (也就是说, 所有 VF [Voting File] 中的信息是相同的), 同时也会将自己能够联系到的集群中其他节点的信息, 或者说本节点认为集群中的成员列表信息写入到表决盘中. 一旦发生脑裂, CSS 的重新配置线程就可以通过表决盘中的信息了解集群中节点之间的连通性, 从而决定集群会分裂成几个子集群, 以及每个子集群包含的节点情况和每个节点的状态. 磁盘心跳是通过 ocssd.bin 守护进程来实现的.

本地心跳(Local HeartBeat,LHB)

这种心跳的作用是监控 ocssd.bin 进程以及本地节点的状态.

在 10g 版本中, Oracle 通过 oclsomon 和 oprocd 来实现.

守护进程 oclsomon.bin 监控 ocssd.bin 进程的状态

oprocd.bin 进程监控本节点是否出现了性能问题(例如 hang 住)

从 11.2.0.1 版本开始, 新的集群 cssdagent.bin 和 cssdmonitor.bin 进程被引入, 它们的功能就是监控本地节点的 ocssd.bin 进程状态和本地节点的状态.

通过本地心跳对 ocssd.bin 进程进行监控. 本地心跳的作用是监控本地的 ocssd.bin 进程是否正常运行. 同时, 也监控自己到 ocssd.bin 之间的连接.

Oracle 会在每一秒钟, 在发送网络心跳的同时向 cssdagent 和 cssdmonitor 发送本地 ocssd.bin 进程的状态(本地心跳). 如果本地心跳没有问题, cssdagent 就认为 ocssd.bin 进程正常. 如果 ocssd.bin 进程持续丢失本地心跳(到达 misscount 的时间)ocssdagent 就会认为本地节点的 ocssd.bin 进程出现了问题, 并重启该节点.

在 11.2.0.2 中, 引入 rebootless restart 新特性.

当集群中的某个节点被驱逐 (例如丢失网络心跳) 或者该节点的 ocssd.bin 出现问题时, 集群将不会直接重新启动该节点, 而是首先尝试重新启动 GI stack 来解决问题, 如果 GI stack 不能够在指定的时间内 (short disk I/O timeout) 完成 graceful shutdown, 才会重新启动节点, 之后, 存活的节点对集群进行重新配置.

心跳延迟

对于 Disk Heartbeat 心跳最大时延叫作 IOT (I/O Timeout)

对于 Network Heartbeat 心跳最大时延叫作 MC (Miscount)

网络心跳 misscount 和磁盘心跳 disktimeout 查询及设置

misscount: 用来定义集群网络心跳的超时时间(10.2.0.4 以后网络心跳超时 misscount 为 60s;11.2 以后网络心跳超时 misscount 为 30s). 当集群中的一个或多个节点连续丢失网络心跳超过 misscount 时间后, 集群需要进行重新配置, 某一个或多个节点需要离开集群. 在 11gR2 版本的集群, 这个值也是节点本地心跳超时时间, 因为本地心跳和网络心跳是由相同的线程发送的.

disktimeout: 用来定义集群磁盘心跳的超时时间(10.2.0.4 以后 磁盘心跳超时 DiskTimeout 为 200s)## 查询网络心跳 NHB misscount

[[emailprotected]~]#crsctlgetCSS misscount

CRS-4678:Successfulgetmisscount30forClusterSynchronizationServices.

## 查询磁盘心跳 DHB disktimeout

[[emailprotected]~]#crsctlgetCSS disktimeout

CRS-4678:Successfulgetdisktimeout200forClusterSynchronizationServices.

## 修改网络心跳 NHB misscount

[[emailprotected]~]#crsctlsetCSS misscount30

CRS-4684:Successfulsetofparameter misscount to30forClusterSynchronizationServices.

## 修改磁盘心跳 disktimeout

[[emailprotected]~]#crsctlsetCSS disktimeout300

故障问题

脑裂: 网络心跳 misscount(私网不通)会导致的问题

? 由于网络心跳 misscount 会导致, 每个节点都认为其他节点不存在了, 这时候表决盘被引入, 通过投票机制, 获得最高票数或者最早到达的获得投票的, 幸存, 其他节点被踢出. 在 Oracle RAC 中 Voting Disk 用来记录节点间成员的状态, 出现脑裂时, 仲裁哪个 partition 获得控制权, 其他的 partition 被剔除, 之后 ORACLE RAC 就会很不友善的给踢出去的机子重启, 这就是为什么有时候机子会不断重启的原因.

? 集群的网络心跳丢失, 但是磁盘心跳正常. 当脑裂出现后, 集群会分裂成为若干个子集群. 对于这种情况的出现, 集群需要进行重新配置.

? 重新配置的基本原则: 节点数多的子集群存活, 如果子集群包含的节点数相同, 那么包含最小编号节点的子集群存活.

健忘

每个节点都有配置信息的拷贝, 修改节点的配置信息出现不同步引起时, 节点间配置不一致导致健忘的问题.

Oracle 采用的方法就是把这个配置文件放在共享存储上(即是 OCR Disk), 整个集群只有一份配置, 各节点共用这份配置, 无论在哪个节点修改配置, 都是修改相同的配置文件, 这样就保证修改不会丢失.

ocrconfig -showbackup #来查看备份所在的文件和目录

附录OracleRACTechnologiesCertificationMatrixforUNIXPlatforms

[RecommendationfortheRealApplicationClusterInterconnectandJumboFrames](DocID341788.1)

巨型帧对 RAC 的影响

[RAC 常见问题](RAC: Frequently Asked Questions (RAC FAQ) (Doc ID 220970.1))

11gR2 如何诊断节点重启问题 https://blogs.oracle.com/database4cn/11gr2

来源: http://www.bubuko.com/infodetail-3683198.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值