热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RAC的学习相关进程①

由于工作中时常遇到RAC相关故障,为了更快更好更准确判断RAC故障问题,提高自己的处理能力,对基于11gR2版本RAC的一些知

OHASD

OCR是用于保存CRSD所管理资源的注册表,在启动到CRSD之前,还有很多初始化资源是需要启动的,在11gR2版本有OLR。

当集群启动时,ohasd从/etc/oracle/olr.loc文件中读取OLR的位置,默认保存在GI_HOME/cdata下面。

image.png

只有ohasd以及crsd守护进程能够启动代理进程。

image.png


HAIP

私网的高可用性和负载均衡特性。(11.2.0.2开始)

私网通信的类别:

1、 节点之间的网络心跳等,特点是持续存在,实时性要求较高但是一次数据量较小,这种可以通过TCP/IP协议传输。

2、 实例之间的传输,cache fusion等,数据量大,速度要求高,通过UDP/RDS协议传输。

image.png

image.png

Oracle自动绑定在私网网卡上169.254开头的IP地址称为HAIP。

1、 多个私网网卡可以分别自动绑定不同的169.254开头的IP地址.

2、 每一块网卡都同时承担实例之间的通信 私网通信的负载均衡.

3、 当有多个私网网卡时,down掉一个私网网卡,HAIP会自动漂移到存活私网网卡上。

4、 支持在集群创建后,添加新的私网网卡。

image.png


CSSD

image.png

CSSD大致运行流程图。


mdnsd

mdns主要负责帮助集群中的其他守护进程(gpnpd以及ohasd)提供resource discovery简称RD。mdns在进行资源发现的时候会同时使用公网和私网。

gpnpd通过mdns提供的节点信息向网络发布自己的信息,也开始搜索其他节点的信息。

如果gpnpd发现了远程节点发布的信息,会尝试将自己的gpnp profile推送到远程节点上,若节点之间属于同一集群,不出意外会推送成功。

ohasd通过mdnsd发布本节点的信息,当ohasd发现远程节点的信息的时候会尝试更新集群节点列表信息更新。

mdnsd只负责为gpnpd以及ohasd提供节点名称解析和资源发现RD,节点之间的数据传输并不是由mdnsd完成的。


gpnp

grid plug and play:由gpnpd.bin守护进程实现。

1、 将集群的基本信息保存于本地,便于启动集群时从本地就能够获取足够的信息,不再完全依赖OCR。

2、 和mdnsd进行通信,灵活识别集群中节点,使集群结构更加灵活。

gpnp profile

image.png

profilesequence表示该gpnp profile的序列号,每做一次修改,序列号增1,可以看到gpnp profile的版本号,越大说明越新。

image.png

clusterUid

表示集群的Global ID,从12c开始,GI通过此id唯一识别集群,随机生成,无法修改。

image.png

clustername

image.png

表示集群名称,12c以前,GI通过此名称唯一识别集群,也就是同一子网中不能存在同名集群。

image.png

这里的adapter=eth0表示网卡名称,use=public表示为公网用途。

image.png

这里的adapter=eth1表示网卡名称,use=cluster_interconnect表示为集群互联连接用途也就是私网。

image.png

css需要读取这部分内容,+asm表示使用了asm,css扫描asm设定的asm_diskstring获取表决盘信息。

后面的400表示节点号的租借有效期未理解)。

asm需要读取这部分内容,获取asm实例的参数文件位置,这里发现asm实例的参数文件是存放在OCR磁盘之中的。

image.png

image.png


gpnp守护线程

gpnpd是一个多线程的进程:

① gpnp主线程 clsgpnpd_MainWork

访问gpnp profile并读取里面信息。

② push线程clsgpnpd_pushThread

当本地的gpnp profile发生改变或者需要传输给远程节点时,负责传输gpnp profile。

③ 派遣线程clsgpnpd_dispatchThread

负责接收gpnpd收到的消息,比如新的gpnp profile。

④ OCR线程clsgpnpd_ocrDetectThread

如果发现OCR中相关信息变化了,则通知派遣线程。

问:如果集群的重要配置信息变化时,本地的gpnp profile如何及时更新?

答:

1、 本地的gpnpd的派遣线程通知所有节点的派遣线程有配置改变

2、 本地的gpnpd的push Thread将新版本的gpnp profile发送给其他节点

3、 其他节点的派遣线程接收新版本的gpnp profile

问:gpnp的启动过程是什么?

答:

1、 gpnpd的主线程访问gpnp profile,读取信息加载到cache中(什么cache?OCR cache?),若本地节点的gpnp profile丢失,则通过OLR记载信息重建。

2、 派遣线程向所有节点发送信息,获取最新版本的gpnp profile位置。

3、 拥有最新版本的gpnp profile的节点向其他节点发送信息。

4、 本地节点收到最新版本的gpnp profile后,向外提供服务。


gipc

grid interprocess communication:集群管理私网网卡的进程。

以守护进程gipcd.bin存在集群。

image.png

问:gipc守护进程的主要作用是什么?

答:

1、 集群启动时,gipc通过gpnp profile中获取私网信息,发现网卡并且检查。

2、 通过私网获取集群其他节点信息,并且和其他节点的私网建立联系。

3、 在配置多块私网网卡的情况下,故障网卡暂时离线,告知其他节点,继续监控被离线网卡。

问:gipc和HAIP的区别是什么?(个人理解,可能有误

答:

集群中私网的作用有两种:

1、 集群层次的通信,守护进程以及网络心跳;(gipc管理私网网卡但不负责具体的节点间信息传递,如果gipc出现问题,则影响整个集群)

2、 实例间的通信,比如cache fusion;(HAIP完成此类信息的传递,HAIP出问题影响实例,但不会影响集群的一致性,因为私网网卡并没有问题)

PS:以上均为个人学习之后的理解,如有错误,恳请指正。

学习来源:《Oracle RAC核心技术详解》



推荐阅读
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 三、查看Linux版本查看系统版本信息的命令:lsb_release-a[root@localhost~]#lsb_release-aLSBVersion::co ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • IP经常分为内网和外网的,内网IP一般是有路由器分配的,尤其是想公司可能都有各自的内网IP,公用的公网IP。查询内网IP的通用方法是通过doc指令来查询,如ipconfig或者ipconfigall ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 场景1.IE,Firefox浏览器访问不了网站,谷歌浏览器可以,返回错误码DNS_PROBE_POSSIBLE.2.pingwww.qq.com可以ping通,ping局域 ... [详细]
author-avatar
三光937
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有