`

解决OCFS2的o2net_connect_expired问题

阅读更多

接上次的文章,在修改/etc/sysconfig/o2cb的配置后,发现两机器只有一台可以自动挂载ocfs2分区,而另外一台不能自动挂载。但启动完毕后,手动挂载正常。
一、详细情况
两机器分别是dbsrv-1和dbsrv-2,使用交叉线做网络心跳,并在cluster.conf中使用私有心跳IP,非公用IP地址。
1、检查o2cb状态
启动后,o2cb服务是启动正常的,ocfs2模块也加载正常的,但心跳是Not Active:

引用
Checking heartbeat: Not Active


2、检查/etc/fstab文件

引用
#cat /etc/fstab|grep ocfs2
/dev/sdc1    /oradata   ocfs2   _netdev,datavolume,nointr 0 0


配置正确;
3、检查两机器的/etc/ocfs2/cluster.conf内容

引用
# more /etc/ocfs2/cluster.conf
node:
       ip_port = 7777
       ip_address = 172.20.3.2
       number = 0
       name = dbsrv-2
       cluster = ocfs2

node:
       ip_port = 7777
       ip_address = 172.20.3.1
       number = 1
       name = dbsrv-1
       cluster = ocfs2

cluster:
       node_count = 2
       name = ocfs2


已经确认,两机器该文件是完全相同的。
4、查看系统日志
报错信息如下:

引用
Jul 20 19:33:18 dbsrv-2 kernel: OCFS2 1.2.3
Jul 20 19:33:24 dbsrv-2 kernel: (4452,0):o2net_connect_expired:1446 ERROR: no connection established with node 1 after 10 seconds, giving up and returning errors.
Jul 20 19:33:24 dbsrv-2 kernel: (4478,2):dlm_request_join:786 ERROR: status = -107
Jul 20 19:33:24 dbsrv-2 kernel: (4478,2):dlm_try_to_join_domain:934 ERROR: status = -107
Jul 20 19:33:24 dbsrv-2 kernel: (4478,2):dlm_join_domain:1186 ERROR: status = -107
Jul 20 19:33:24 dbsrv-2 kernel: (4478,2):dlm_register_domain:1379 ERROR: status = -107
Jul 20 19:33:24 dbsrv-2 kernel: (4478,2):ocfs2_dlm_init:2009 ERROR: status = -107
Jul 20 19:33:24 dbsrv-2 kernel: (4478,2):ocfs2_mount_volume:1062 ERROR: status = -107
Jul 20 19:33:24 dbsrv-2 kernel: ocfs2: Unmounting device (8,33) on (node 0)
Jul 20 19:33:26 dbsrv-2 mount: mount.ocfs2: Transport endpoint is not connected
Jul 20 19:33:26 dbsrv-2 mount:
Jul 20 19:33:26 dbsrv-2 netfs: Mounting other filesystems:  failed



二、分析问题
1、node节点的启动顺序
从Google搜索到如此的信息:

引用
Mount triggers the heartbeat thread which triggers the o2net
to make a connection to all heartbeating nodes. If this connection
fails,the mount fails. (The larger node number initiates the connection
to the lower node number.)


说明o2cb启动的时候,是根据node节点的大小顺序启动的。
而在cluster.conf中,node0是dbsrv-2,node1是dbsrv-1,所以,dbsrv-1在启动的时候马上可联通本机IP,然后挂载ocfs2分区;但dbsrv-2启动的时候,则不能即时发现对方IP地址,所以启动失败。
2、尝试修改HEARTBEAT_THRESHOLD参数
从Goolge搜索到另外一条信息:

引用
After confirming with Stephan, this problem appears to relate to the HEARTBEAT_THRESHOLD parameter as set in /etc/sysconfig/o2cb. After encountering this myself and having confirmed with a couple of other people in the list that it has caused problems, it seems that the default threshold of 7 is possibly too short, even in reasonably fast server-storage solutions such as an HP DL380 Packaged Cluster.

Does the OCFS2 development team also consider this to be too short, or is altering the paramater just a workaround that shouldn't be used? If this is the case then how should we approach the problem of self-fencing nodes?

Also, can we expect this behaviour with some platforms but not others, or is it too short for all platforms? If it is a blanket problem, then should the default threshold be raised?

Finally, if the altering the threshold is a valid solution, could it please be added to the FAQs and the user guide so that people know to adjust it as a first step on encountering the problem, rather than having to post to the list and wait for replies.


并参考网上的资料,修改/etc/sysconfig/o2cb的HEARTBEAT_THRESHOLD参数为301,启动后报:

引用
Jul 23 13:59:50 dbsrv-2 kernel: (4477,0):o2hb_check_slot:883 ERROR: Node 1 on device sdc1 has a dead count of 14000 ms, but our count is 602000 ms.
Jul 23 13:59:50 dbsrv-2 kernel: Please double check your configuration values for 'O2CB_HEARTBEAT_THRESHOLD'
Jul 23 13:59:54 dbsrv-2 kernel: OCFS2 1.2.3
Jul 23 14:00:00 dbsrv-2 kernel: (4449,0):o2net_connect_expired:1446 ERROR: no connection established with node 1 after 10 seconds, giving up and returning errors.
Jul 23 14:00:00 dbsrv-2 kernel: (4475,2):dlm_request_join:786 ERROR: status = -107


问题依旧。
※注释

引用
[隔离时间(秒)] = (O2CB_HEARTBEAT_THRESHOLD - 1) * 2
(301 - 1) * 2 = 600 秒



综上所述,已经能清楚所有配置都是正确的。
导致故障的原因是:
在启动o2cb服务的前,由于某些原因,o2cb依赖的IP地址未能及时取得联系,操作了其限定的时间,而启动失败。而在机器完整启动后,网络已经正常,所以,手动挂载ocfs2分区正常。

三、解决问题
1、Oracle metalink给出的信息

引用
The problem here is that network layer not becoming fully functional even  after /etc/init.d/network script is done executing. The proposed patch is a  work around and is not fixing a problem in o2cb script.


2、解决方法

引用
a)确保所有配置文件都正确,无差异;
b)确保两服务器的机器时间不要相差太远;
(可使用时间同步)
c)o2cb使用的cluster.conf文件中,应使用心跳IP,而非公网IP
d)修改/etc/init.d/o2cb脚本,在最前面加入一个sleep的延迟时间,以等待网络正常;
e)实在还是不行,把启动脚本放到/etc/rc.local中
mount -t ocfs2 -o datavolume,nointr /dev/sdc1 /oradata
/etc/init.d/init.crs start



四、已知可能的原因
1、磁盘原因
例如使用iSCSI、Firewire等做盘柜,可能因读取时间长,引发timeout导致问题;
2、网络原因
如果使用公网IP做o2cb的判断,则由于在加载网卡驱动后,交换机未能及时通讯(特别是Cisco的交换机),导致IP通讯失败;
如果使用心跳IP做o2cb的判断,则有部分网卡在加载驱动后,未能马上激活,并与对方网卡联通而导致失败。
总体来说,都是和硬件的关系比较多。

评论

相关推荐

    ocfs2-1.4.1.tar.gz_ocfs2_ocfs2 lin_ocfs2-1.4.1_oracle_分布式

    这个过程中可能涉及如`mkfs.ocfs2`用于创建文件系统,`mount.ocfs2`用于挂载,以及`o2cb`工具集进行集群管理等命令。 **总结** OCFS2是一个为企业级集群环境设计的文件系统,它在1.4.1版本中优化了性能、增强了...

    ocfs2.rar_V2

    这个"ocfs2.rar_V2"压缩包包含了与OCFS2在Linux v2.13.6版本相关的源代码文件,特别是"ocfs2.c",这可能是一个核心的实现文件,用于解析OCFS2文件系统的操作。 OCFS2的设计目标是提供一种高性能、高可用性的集群...

    ocfs2-1_4-usersguide.pdf

    OCFS2旨在为Linux环境下的集群提供一个高性能的文件系统解决方案。文档建议用户在配置和使用OCFS2文件系统时应考虑其特性,比如集群内部不同节点之间的文件共享和数据一致性。OCFS2通过分布式锁管理器来保证集群环境...

    ocfs2-1.2.7-2.tar.gz_ocfs2_oracle

    - **维护与监控**: 通过工具如 `o2cbadm` 和 `dlmctl` 管理 DLM,以及 `ocfs2cluster` 工具进行集群状态监控。 ### **4. 结论** OCFS2 是 Oracle 公司对集群文件系统的一次重要贡献,它提供了强大的并发访问能力和...

    ocfs2_nodemanager.rar_between

    本文将深入探讨`ocfs2_nodemanager`模块用户空间与内核交互的机制,以及相关源代码`br_sysfs_br.c`和`ocfs2_nodemanager.c`的重要性。 首先,我们要理解"between"这个标签所指的含义。这里的“between”是指`ocfs2_...

    Config_OCFS2_GFS2.zip_gfs2

    6. **挂载与使用**:使用`gfs2_mkfs`创建文件系统,`gfs2_mount`挂载,`gfs2_tool`工具用于管理和诊断GFS2文件系统。 **比较与选择** OCFS2和GFS2各有优势。OCFS2更注重灵活性和易用性,而GFS2在大型企业环境中...

    OCFS2共享文件系统介绍

    OCFS2在H3C CAS系统中的应用主要体现在其作为分布式存储解决方案的部分,帮助实现高可用性和高性能的数据存储服务。 综上所述,OCFS2作为一款高性能、高可用性的集群文件系统,在云计算领域有着广泛的应用前景。...

    oracle_10g_rac_ocfs2_linux64最详细安装文档,全截图文档

    这涉及安装ocfs2-tools和ocfs2-agent软件包,它们提供了创建和管理OCFS2文件系统的工具。在所有节点上执行相同的安装过程,并配置共享存储,如SAN(Storage Area Network)或NAS(Network Attached Storage)。 ...

    OCFS2的简单用法.pdf

    OCFS2(Oracle Cluster File System Version 2)是一种高性能的集群文件系统,适用于需要...在部署和管理OCFS2集群时,需要对相关概念、工具和配置选项有深刻的理解,以避免在生产环境中出现错误配置和数据丢失的问题。

    ocfs2-tools-1.6.3-2.el5.x86_64.rpm

    ocfs的安装包linux for x86_64

    ocfs集群状态机转换

    - **o2net**: OCFS2集群管理工具的一部分,负责节点间的通信管理。 #### 状态机转换流程 在OCFS2集群管理中,状态机转换涉及多个关键步骤和组件: 1. **Write操作**: - `Writedev`: 表示写入设备的操作。 - `...

    ocfs2安装文件

    Linux5安装ORACEL RAC 工具ocfs2安装文件

    rac ocfs2 包

    总结起来,OCFS2是RAC成功运作的关键组件,它提供了高效、可靠的共享存储解决方案,使得RAC能够实现高可用性和负载均衡。通过理解和熟练掌握OCFS2,IT专业人员能够更好地设计和维护高稳定性的企业级数据库集群系统。

    centos5.8上grid+oracle11gR2+OCFS2+ASM集群安装.docx

    6. **OCFS2安装**:安装OCFS2内核模块和用户空间工具,如ocfs2console和ocfs2-tools。 7. **Oracle数据库安装**:按照Oracle文档的指导,使用ASM作为存储选项安装Oracle 11g R2数据库软件。 8. **RAC配置**:配置...

    ocfs2 user guide

    这些改进使得OCFS2成为了一个更加成熟和可靠的解决方案,尤其是在处理高负载环境时表现更佳。 - **安全性**:OCFS2引入了多种安全机制,确保数据的完整性和一致性,同时支持加密功能,为数据提供额外的安全保障。 ...

    Redhat 5 系统下ORACLE集群文件系统OCFS2工具包

    2. **RAC(Real Application Clusters)**:配合Oracle RAC,OCFS2可提供高可用的数据库集群解决方案,确保数据库服务不因单点故障而中断。 3. **ASM(Automatic Storage Management)**:虽然ASM可以独立管理存储,...

    ocfs2-2.6.9-22.EL-1.2.0-1.i686.rpm

    ocfs2-2.6.9-22.EL-1.2.0-1.i686.rpm

    ocfs2console-1.2.7-1.el4.i386.rpm

    ocfs2console-1.2.7-1.el4.i386.rpm 下载

Global site tag (gtag.js) - Google Analytics