由于同一个子网中存在同名集群导致的gpnp无法启动

  • A+
所属分类:技术

chatGPT账号

环境:AIX7.1+11.2.0.3GI ,双节点

问题描述:DBA前一天晚上发现存储有问题,在解决了存储的问题后,发现集群的每一个节点都无法正常启动。

分析过程:

1、确认GI已经启动到了哪一个阶段

需要查看下面的输出

[root@infirac1 ~]# crsctl check crs

这个命令可以查询集群每个组件的状态

 

[root@infirac1 ~]# crsctl status res -t -init

这个命令可以查询集群每个初始化资源的状态

注:以上显示的结果是正常状态下集群的初始化资源的状态,本案例中的显示结果报如下错误:
CRS-4638: oracle High Availability Services is online

CRS-4535: cannot communicate with cluster ready services

CRS-4530: communicate failure contacting cluster synchronization services daemon

CRS-4534: cannot communicate with event manager

以上结果说明是CSS层面出现了问题。

由此看来ocssd守护进程没有启动成功,此时需要查看ocssd.log来确定ocssd守护进程的问题到底出现在哪里。

2、ocssd.log的详细信息

[grid@infirac1 cssd]$ cd $ORACLE_HOME/log/infirac1/cssd

[grid@infirac1 cssd]$ less ocssd.log

ocssd.log日志中显示大量的GPNP进程报错信息:
[GPNP] clsgpnpm_newWiredMsg:(operation returned retry(error clspgnp_call_again))

[CSSD] CSSD aborting from thread GMClientListener

上面的报错信息说明cssd一直尝试和gpnp进程通信,并尝试读取gpnp profile,但是没有成功,最后只能重新启动GI。因此还需要进一步查看gpnp.log以确认gpnp层面发生了什么问题。

3、gpnp.log给出了问题的答案

[grid@infirac1 gpnpd]$ cd $ORACLE_HOME/log/infirac1/gpnpd

[grid@infirac1 gpnpd]$ less gpnpd.log

 

日志中显示gpnp在网络中找到了另一个节点test2,而且还需要DNS来解析本地节点名test1。这非常奇怪,因为节点test2虽然是集群的另外一个节点,但是并没有被启动。也就意味着test2的gpnp不会把自己的信息通过mdns发布,而且test1为什么需要通过DNS去解析自己呢?通过和dba确认后发现原来在同一个子网中最近有人克隆了和这套集群相同的另一个集群,而且在前一天开始测试。根据之前的内容 oracle在11gR2这个版本中是通过集群名称来区分集群的,所以当同一个子网中出现同名的集群时gpnp会发现这些节点,并尝试连接,以便发现最新版本的pgnp profile,但是由于集群的GUID不同,导致无法启动,这使得gpnp无法完成启动,从而导致ocssd.bin无法成功启动。

 

结果:网络管理员划分了两个不同的vlan并进行隔离之后,集群能够正常启动了。

本文由 路远 首发于【路远网http://www.luyuan.io)】未经允许不得以任何方式转载,违者必将追究法律责任。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
路远

发表评论

您必须登录才能发表评论!