以前搞过微软的Cluster--MSCS(Exchagne2003),感觉原理非常简单,最近在做一个Oracle DG的项目,平台是Linux,总想模仿MSCS写个自动切换的脚本,搞了半天,搞出来了分享一下。

目的:实现主节点在物理失效的情况下的从节点的服务自动接管,集群资源为IP地址和Oracle数据库服务。

思路:集群用的IP地址进行定期的健康检查,当发现IP地址失效时夺取该IP地址并启动本节点对应的服务。

脚本:

config.sh

quorum_ip=172.17.100.254
cluster_ip=172.17.100.50
error_count=3
my_interface=eth1:1
net_mask=255.255.255.0
logfile=/var/log/cluster.log

clustercheck.sh

source config.sh
#echo $cluster_ip
res=`ping $cluster_ip -c $error_count|grep Unreachable|wc -l`
#echo $res
if [ $res -eq $error_count ];
then
echo "Cluster IP resource is not active!"    >>$logfile
echo "Check if this node is online:"        >>$logfile
qres=`ping $quorum_ip -c $error_count|grep Unreachable|wc -l`
if [ $qres -eq $error_count ];
then
echo "This node is offline!"            >>$logfile
sh deactiveservice.sh    
ifconfig $my_interface down      
else
echo "Active this node! `date`"            >>$logfile    
ifconfig $my_interface $cluster_ip netmask $net_mask
sh activeservice.sh
exit 0
fi
else
echo "Cluster IP resource is active! `date`"    >>$logfile
actres=`arp -a |grep $cluster_ip|wc -l`
if [ $actres -eq 0 ];
then
echo "This node is the active node!"        >>$logfile
fi
fi

说明:

其实逻辑很简单,此脚本适用的环境也比较简单,此脚本检查的只是IP地址的有效性,并没有对Oracle监听进行更进一步的检查,所以适用的环境仅仅是IP地址失效的情况,包括主机实效导致的IP地址实效、网络失效导致的IP地址失效。

通过 ping $cluster_ip -c的命令检查集群IP地址的活跃性,如果活跃则认为集群健康,如果不活跃则去检查第三方节点以验证本节点是否脱网,如果未脱网则将集群IP绑定到本节点的服务网络适配器上,然后通过activeservice.sh 脚本启动集群提供的相应服务,当然也可以进行NFS、ISCSI的连接和mount,实现共享磁盘的切换;如果脱网则删除自己的集群IP绑定,执行deactiveservice.sh停止服务,释放其它集群资源。

当然,如果每个节点都支持IPMI等管理指令,可以在启动服务后给被接管的节点发送一个重新启动的命令,使对方自动重起获得新生。

当然也可以在通过其它机制完成重起操作,比如通过使用NFS更改对方的文件信号,对方通过定期判断信号状态自行重起等等。

非常简单,原理也非常清晰,肯定有很多没想到的,在实践中慢慢完善吧。

本文转自 bingyizy 51CTO博客,原文链接:http://blog.51cto.com/bingyi/905021,如需转载请自行联系原作者

Linux纯脚本故障转移集群相关推荐

  1. linux故障转移集群,部署AlwaysOn第一步:搭建Windows服务器故障转移集群

    在Windows Server 2012 R2 DataCenter 环境中搭建集群之前,首先要对Windows服务器故障转移集群(Windows Server Failover Cluster,简称 ...

  2. 在Windows Server 2012 R2中搭建SQL Server 2012故障转移集群

    需要说明的是我们搭建的SQL Server故障转移集群(SQL Server Failover Cluster)是可用性集群,而不是负载均衡集群,其目的是为了保证服务的连续性和可用性,而不是为了提高服 ...

  3. sqlserver故障转移集群和alwayson的区别_详解SQL Server 2016 + AlwaysOn 无域集群

    搭建 WSFC 配置计算机的 DNS 后缀 1.配置计算机的 DNS 后缀,注意在同个工作组 2.每个节点的机器都要做域名解析,修改 host 文件C:WindowsSystem32driverset ...

  4. SQL故障转移集群操作方法

    SQL故障转移集群操作方法 1 给SQL服务器配置IP地址,每台服务器需要两个IP,一个通讯用,一个作为心跳线,修改计算机的名称,关闭服务器的防火墙,开启远程桌面. 2心跳网卡配置 去掉ipv6,并去 ...

  5. [转] 微软SQL Server 2008故障转移集群概述(Windows Server Failover Clustering (WSFC))

    前言: 最近在研究微软的大数据解决方案,在收听MS TechNet "SQL Server 2012 AlwaysOn HA+DR设计模型.架构及最佳实践" 时,需要一些预备知识, ...

  6. SQL Server 2008故障转移集群+数据库镜像配置实例之三

    前两篇文章已经建立了SQL 2008 的故障转移集群,由于故障转移集群存在一个单点故障,既是当网络存储设备不可用时,整个集群就不可用了.所以为了获得更好的高可用特性和容灾机制,我们可以将集群中的某一特 ...

  7. 配置Windows Server2008故障转移集群

    Abner Kou原创 配置Windows Server2008故障转移集群 一. 问题描述 建立双节点的Windows Server 2008 故障转移集群,为Hyper-v的高可用和SQLServ ...

  8. 如何创建免费的Hyper-V Server故障转移集群

    尽管可能使Windows Server授权模型更加复杂,但用户还是可以使用免费Hyper-V Server来创建容错环境以及故障转移集群. 微软在很久之间就已经推出免费版Hyper-V Server, ...

  9. SQL AlawaysOn 之四:故障转移集群

    声明,故障转移集群,仅安装在SQL服务器中,域服务器不能和SQL服务器一起加入集群. 1.添加故障转移集群,下一步 2.安装 3.在域控制服务器上的管理工具里打开故不障转移集群管理器,选择创建集群 4 ...

最新文章

  1. JavaScript高级程序设计(第3版)第六章读书笔记
  2. 【Python-ML】SKlearn库支持向量机(SVM) 使用
  3. centos查看mysql信息_CentOS查看和修改MySQL字符集
  4. SharePoint初探-sharepoint 安装宝典(2)
  5. 蓝桥杯大赛基础之--数列排序
  6. 【转】大厦将倾,互联网将如何变革传统行业(上)
  7. 关于placement new
  8. Kubernetes 小白学习笔记(21)--kubernetes的运维-管理Lable
  9. 企业微信之发送图片消息(源码下载)
  10. 内存颗粒和闪存颗粒的区别_内存颗粒及频率知识,你真的清楚吗?
  11. C++(基础) 每日一题 4.编写一个函数print 打印一个学生的成绩数组,该数组中有5个学生的数据,每个学生的数据包括num,name,scor[3]3门课的成绩。
  12. 【系】微信小程序云开发实战坚果商城-云开发开篇
  13. 智慧步道解决方案 PPT
  14. 程序员高效率工作工具推荐(必备工具)
  15. 知识图谱入门 【八】- 语义搜索
  16. robotframework + appium 获取android toast
  17. java代码使用重写来优化电子宠物系统
  18. 河北省计算机专业最好的单招学校有哪些,河北省计算机专业哪些学校比较好
  19. HTTP中的GET和POST方法详解
  20. 今天我的后背又开始发凉

热门文章

  1. tpopela/vips_java
  2. Cent OS – Tomcat 7 - 集群
  3. (转)Invoke and BeginInvoke
  4. 服务器中使用Com组建处理Excel 常见问题
  5. 火狐中H1到H5都有特定margn
  6. 如果让你拥有100万粉丝,你会做什么
  7. 【F#2.0系列】概述
  8. 演讲十忌(翻译并制作成PPT)
  9. 兼容低版本迅雷的js调用
  10. redis3.2安装过程分享