暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase8a数据库gcware故障处理

VV_刺头王 2022-03-23
1689

gcware对集群进行管理,可能出现的错误包括:gcware服务无法启动或停止操作、执行gcadmin集群命令时节点出现offline状态或者数据状态出现非0(locked状态)等,这些问题都会对集群造成很大的影响,发现问题需要及时处理,下面介绍相关的错误处理方法。

1.      gcware启动失败

现象:

# service gcware start

Starting GCWARE (gcwexec): [FAILED]

原因:

分析产生此问题的原因可能是下面3 种情况:

(1).corosync的配置文件丢失

(2).corosync的配置文件错误

(3).corosync的authkey 丢失

诊断方法:

(1).此时单独启动corosync服务,也发现启动失败。

# service corosync start

Starting Corosync Cluster Engine (corosync): [FAILED]

(2).查看corosync.log 日志文件,并没有发现错误原因。

(3).使用corosync -f 命令诊断错误信息,根据错误信息排除错误。

解决方法:

(1). corosync的配置文件丢失

# corosync -f

corosync [MAIN ] Corosync Cluster Engine ('1.4.1'): started and

ready to provide service.

corosync [MAIN ] Corosync built-in features: nss dbus rdma snmp

corosync [MAIN ] Can't read file /etc/corosync/corosync.conf

reason = (No such file or directory)

从错误信息得知是corosync 的配置文件corosync.conf 不存在造成的。

查看/etc/corosync/corosync.conf 文件是否存在,如果不存在,则根据/etc/corosync/corosync.conf.example 文件设置/etc/corosync/corosync.conf 文件。

(2). corosync的配置文件错误

# corosync -f

Successfully read main configuration file

'/etc/corosync/corosync.conf'.

parse error in config: This totem parser can only parse version 2 configurations.

Corosync Cluster Engine exiting with status 8 at main.c:1708.

从上面错误信息得知是corosync的配置文件corosync.conf存在配置内容错误,解决方法跟上面一样,根据/etc/corosync/corosync.conf.example例子文件设置/etc/corosync/corosync.conf文件。

(3). corosync 的authkey 丢失

# corosync -f

Successfully read main configuration file

'/etc/corosync/corosync.conf'.

Could not open /etc/corosync/authkey: No such file or directory

Corosync Cluster Engine exiting with status 8 at main.c:1702.

如果/etc/corosync/corosync.conf文件中secauth 设置为on,但是/etc/corosync/authkey 文件不存在,这样也会造成gcware 启动失败。解决方法就是将其他节点上的/etc/corosync/authkey 拷贝过来,并且各节点上此文件保持一致,然后重新执行 service gcware start。

2.      gcware无法关闭

现象:

使用service gcware stop命令停止集群操作时失败。

原因:

当gcware服务退出时,要等待gclusterd和gnoded两个服务进程退出,gcware 通过向这两个进程发送信号,并循环检查gclusterd 和gnoded两个进程是否已经退出。由于gclusterd和gnoded在某些情况下,即使接收到结束运行的信号,也不会终止,因此会造成gcware在退出时的长时间等待。

解决:

(1).手工kill 相关进程

手工停止corosync进程,这样有可能产生gbased和gclusterd的僵尸进程,在下一次service gcware start的时候僵尸进程会被自动删除。

# ps -ef|grep corosync

root 8790 1 0 13:41 ? 00:00:00 corosync

root 8841 8667 0 13:46 pts/0 00:00:00 grep corosync

# kill -9 8790

(2).服务器执行reboot 命令重启。

# reboot

3.      gcadmin 显示节点状态不一致

现象:

在不同节点上执行gcadmin命令,显示节点状态不一致。

原因:

造成这一现象,通常是由于意外打开了防火墙造成的。

解决方法:

确认显示Offline 状态节点的防火墙已关闭。

4.      gcadmin 显示其它节点Offline

gcadmin 显示其它节点是offline状态,例如:

+==============================================================

|node1 执行gcadmin GCLUSTER INFORMATION |

+==============================================================

+-----+----------+----------------+--------+--------+---------+

|rowid| nodename | IpAddress | sgname | dpname | gcware |

+-----+----------+----------------+--------+--------+---------+

| 1 | node1 | 192.168.100.101| sg01 | n1 | Online |

+-----+----------+----------------+--------+--------+---------+

| 2 | node2 | 192.168.100.102| sg01 | n2 | Offline |

+-----+----------+----------------+--------+--------+---------+

+=========================================================+

| GCLUSTER INFORMATION |

+=========================================================+

+---------+----------+------------+-----------+-----------+

| gnode | gcluster | syncserver | datastate | nodestate |

+---------+----------+------------+-----------+-----------+

| OPEN | OPEN | OPEN | [0] | [0] |

+---------+----------+------------+-----------+-----------+

| OPEN | OPEN | OPEN | [0] | [0] |

+---------+----------+------------+-----------+-----------+

+==============================================================

|node2 执行gcadmin GCLUSTER INFORMATION |

+==============================================================

+-----+----------+----------------+--------+--------+---------+

|rowid| nodename | IpAddress | sgname | dpname | gcware |

+-----+----------+----------------+--------+--------+---------+

| 1 | node1 | 192.168.100.101| sg01 | n1 | Offline |

+-----+----------+----------------+--------+--------+---------+

| 2 | node2 | 192.168.100.102| sg01 | n2 | Online |

+-----+----------+----------------+--------+--------+---------+

+=========================================================+

| GCLUSTER INFORMATION |

+=========================================================+

+---------+----------+------------+-----------+-----------+

| gnode | gcluster | syncserver | datastate | nodestate |

+---------+----------+------------+-----------+-----------+

| OPEN | OPEN | OPEN | [0] | [0] |

+---------+----------+------------+-----------+-----------+

| OPEN | OPEN | OPEN | [0] | [0] |

+---------+----------+------------+-----------+-----------+

解决方法:

查看配置文件corosync.conf中的secauth值,设置是否相同。当节点的secauth值设置不一致时,可能导致gcadmin显示其它节点为Offline。

5.      集群无法看到其他节点

现象:

安装4个节点的集群,执行gcadmin命令,只能看到自己,不能看到其他节点。

原因:

集群无法看到其他节点的原因可能有两类:

(1). corosync的配置文件不一致 (/etc/corosync/corosycon.conf)

a. 各节点secauth 配置不一致

查看各节点/etc/corosync/corosync.conf文件中,secauth项有的设置为on,有的设置为off;或由于多次不同版本的安装,造成secauth为on,但是各节点对应的/etc/corosync/authkey文件不同。

解决方法:

修改/etc/corosync/corosync.conf文件,各节点的secauth配置都设置成一样的。如果是/etc/corosync/authkey文件不同,各节点要设置成一致的。

建议corosync.conf中secauth项应设为off。

配置文件修改之后,各节点要重新启动gcware服务。

b. 各节点mcastaddr和port配置不一致

各节点的配置文件都应该设置成一样的地址和端口号。

mcastaddr: 226.94.1.23

mcastport: 5432

解决方法:

修改/etc/corosync/corosync.conf文件,各节点的mcastaddr和port配置都设置成一样的。

配置文件修改之后,各节点重新启动gcware服务。

(2). 交换机对于mcast 组播包的限制

配置corosync采用udp通讯替代mcast组播通讯。

解决方法:

参照/etc/corosync/corosync.conf.example.udpu示例文件,修改/etc/corosync/corosync.conf文件,配置corosync使用UDP通讯方式,transport: udpu配置文件修改之后,各节点重新启动gcware服务。

6.      重新启动某个节点仍无法恢复

现象:

集群故障后(gcadmin无法正常工作),重新启动某个节点仍无法恢复正常。

原因:

集群处于锁住状态。

解决:

对于gcware而言集群是个整体,单独重启某个节点不一定能够改变整个集群的锁住状态,需要重新启动整个集群,即首先停止所有节点上的gcware服务,然后再重新启动各个节点上的gcware 服务,集群就会恢复状态。

7.      gbase用户无法执行gcadmin命令

现象:

只有root用户可以执行gcadmin命令,而gbase用户gcadmin无法执行

原因:

corosync用户授权文件丢失,导致非root用户没有corosync服务的访问

权限。

解决:

首先查看/etc/corosync/uidgid.d目录是否存在,目录下的文件是否存在,

可参照安装包中此目录下的示例文件,为gbase用户定义权限文件。

8.      节点处于Offline状态

现象:

节点处于Offline状态,查看/var/log/corosync.log日志文件,出现类似

“Invalid Packet”日志内容。

原因:

原因有可能是集群各节点/etc/corosync/corosync.conf配置文件中secauth设置不一致造成的,有的设置为on,有的设置为off,或者因为多次安装卸载导致集群各节点间/etc/corosync/authkey文件不一致。

解决:

检查集群各节点间/etc/corosync/corosync.conf配置文件,查看secauth设置是否是on。

如果集群各节点上配置文件设置都一致,再检查/etc/corosync/authkey二进制文件是否都一致。

如果有不一致的情况,只要将安装包中例子文件复制过来即可。注意每个节点都要复制一遍,确保各节点authkey文件一致性。如果节点上缺少authkey 文件,则在/var/log/corosync.log出现找不到文件的错误:

确认各节点上的/etc/corosync/authkey文件和corosync配置文件都一致

后,重新启动集群服务。

# /sbin/service gcware restart

Signaling GCWARE (gcware) to terminate: [确定]

Waiting for gcware services to unload:.[确定]

Starting GCWARE (gcwexec): [确定]

9.      无法与其他节点进行通讯

现象:

网卡配置正常,Ping 正常,Corosync却无法与其他节点进行通讯

原因:

节点主机配置了多块网卡,并且网卡IP 地址在同一网段,corosync自动选择的IP 地址对应的网卡上没有网线连接

解决:

将多块网卡配置为不同的网段,或将不用的网卡关闭掉

10.   扩展节点时提示输入密码

现象:

扩展节点时,gcadmin提示输入密码。

原因:

没有设置新扩展节点与原节点gbase用户之间SSH 授信

解决:

设置gbase用户的SSH互信。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论