目前公司有一套核心交易数据库配置了AlWaysON,SQL 2012版本, 1主4从, 其从库(8,14, 8.15) 这2台只读的从数据库服务器, 后台程序和wms等很多程序,都是直接配置IP连接这个2个机器,而且这2台机器已经过保,如果其中一天机器出现故障,不能使用,怎么处理?

        怎么解决?

先谈谈后果:

这2台机器都有很多程序只读查询操作,一旦一台挂了,起不来(虽然概率很低), 连故障服务器的程序,IP要改,同时程序要重启, 这些程序和服务,还很多,很容易漏。一旦出现故障,至少按小时算业务才能恢复,波及的面很广,肯定一级事故,其他最大的老板肯定会知道。

         怎么处理:

             自己咨询了其他同行他们的做法:

1,用域名替换IP,当IP的服务器有问题,修改DNS服务器就可以

2,使用类似的MyCAT中间件,目的读库有故障漂移到其他读库中

3,使用硬件,如携程他们的A10,可以做相关的分发

4,可以使用SQL AlwaysON的只读路由,让程序连主库,在主库做只读路由分发到读库

的确这些方法都能解决前面提到的读库故障转移:

1,用域名替换IP,同行能用,但是和他们这边的开发和运维聊了后,说这个域名替换IP的方案不可靠, 因为现在我们程序用域名,有时就出现莫名其妙的延迟问题,现在运维的技术只能哈哈,无法保证。 这个方案不行

2,使用中间件来做故障转移,和相关的框架开发,领导聊了,结论:没人没时间,不稳定,而且需要大量的测试,做不了。 这个方案不行

3,购买A10这样的硬件,贵,我们提也会被公司否。  这个方案不行

4,利用AlwaysON的只读路由,  自己也想了,现在因为主库的压力大查读库的,变成了先要到主库做一次路由分发,主库压力会更大,而且路由无法指定到那个机器,不能做流量控制。  这个方案不行

这一看市面上通用的方法一个也不适合我们,只能祈祷这2台服务器不出故障,即使出故障,也能重启后就好了。 真的只有这样的吗? 还有其他办法解决这个难题:

这个问题一直困扰,怎么解决,没有其他办法了,看起来所有的办法都不是很好的,只能留下一个笨办法

比较好方案   找到全部连这2台的程序配置文件和需要重启的服务,预先找到全部,一旦有故障起不来, 立即批量修改和重启。 这样就可以了

但是这个方案我一直想找开发和测试聊,看看能否做出个“故障预案“,一直没有去做。

公司一部分的数据库有MySQL,在配置keepalived,MHA,和MMM,大量的使用了虚IP,在CentOS里配置虚IP结合这些开源的组件,的确很方便,在Windows里是否也可以利用这虚IP,如果哪天8.15这个数据库服务器挂了,是否也可以虚IP

自己想了想,windows里加虚IP,就是直接加个IP就可以了。如果真的8.15挂了,我把8.15的IP加到8.14服务器,是否可行?

               又出现问题:

                    windows的故障转移集群和AlwaysON ,连的是8.15,把IP加到8.14是对现有的集群有影响。 

后来想了想:

如果真的是8.15集群出故障,启动不来,不是可以把8.15踢出故障转移集群和AlwaysON,再添加IP到8.14不就好了。

这几天测试了一下这个流程,的确是可以的。

最终的解决方案:

(8.15, 8.14) 这2台读库服务器,出现故障,无法起来时,把故障的服务器踢出故障转移集群和AlwaysON,再添加新IP到其他读服务器上,同时前提在各读库服务器加上统一的账户和密码。这样,虽然不能做到无缝切换,

但也能最大程度上减少故障时间,等后面条件成熟了,可以用其他办法。

目前8.15和8.14因为服务器过保,目前也准备用这个方案来做服务器替换,用这个加虚IP的方法下架旧服务器和上架新服务器。目前正在测试,等切换完后,再介绍一下切换过程。

总结:

希望对大家解决问题思路上有些启发,天无绝人之路,只要你用心,会有收获,有时收获还很多!!

虚IP解决程序连只读服务器故障漂移的更多相关文章

  1. 虚IP解决AlWaysON读库服务器过保替换

    公司核心交易数据库,使用SQL 2012 AlWaysON的1主4从,有2台(8.14,8.15)从库服务器,已经使用3年多,过保替换,新买的2台服务器已经安装好,一开始方案如下: 服务器(8.14) ...

  2. PUTTY无法远程连接服务器故障解决[转]

    对于一个刚刚了解putty工具的新手来说,在putty工具使用中有时出现了问题而无法解决.今天就来介绍怎么解决putty无法远程连接服务器的故障. 用putty远程连接服务器时,提示错误 server ...

  3. 【转】解决keepalived正常启动但是虚IP(VIP)没有生成的问题

    如题所示,keepalived安装配置好之后能够正常启动,但是虚IP并没有生成.接着检查防火墙(iptables)发现也没有相关的限制.稍微郁闷了一下之后,查看了keepalived日志文件,这次成功 ...

  4. 【转】Asp.Net Core2.0获取客户IP地址,及解决发布到Ubuntu服务器获取不到正确IP解决办法

    1.获取客户端IP地址实现方法(扩展类) using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.ModelBinding; u ...

  5. Asp.Net Core2.0获取客户IP地址,及解决发布到Ubuntu服务器获取不到正确IP解决办法

    1.获取客户端IP地址实现方法(扩展类) using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.ModelBinding; u ...

  6. Apache服务器故障排除攻略

    Apache服务器故障排除攻略 应用服务器Apache浏览器配置管理网络应用  随着网络技术的普及.应用和Web技术的不断完善,Web服务已经成为互联网上重要的服务形式之一.原有的客户端/服务器模式正 ...

  7. C/S架构程序多种类服务器之间实现单点登录(转)

    (一) 在项目开发的过程中,经常会出现这样的情况:我们的产品包括很多,以QQ举例,如登陆.好友下载.群下载.网络硬盘.QQ游戏.QQ音乐等,总不能要求用户每次输入用户名.密码吧,为解决这个问题,高手提 ...

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

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

  9. C/S架构程序多种类服务器之间实现单点登录

    (一) 在项目开发的过程中,经常会出现这样的情况:我们的产品包括很多,以QQ举例,如登陆.好友下载.群下载.网络硬盘.QQ游戏.QQ音乐等,总不能要求用户每次输入用户名.密码吧,为解决这个问题,高手提 ...

随机推荐

  1. git push 时 failed to push some refs 的解决方案

    我们在利用 GIt 上传代码的时候,往往会遇到这样一个问题,导致我们的代码没有办法正常上传到仓库中 造成这个问题的原因其实很简单,就是因为远程仓库和本地库不一致. 基于这样的一个问题,解决办法自然也就 ...

  2. 《JavaScript 高级程序设计》读书笔记

    文章目录 第三章 基本语法 第四章 变量.作用域和内存问题 第五章 应用类型 1. Array 类型 2. RegExp 类型 3. Function 类型 4. String 类型 第六章 面向对象 ...

  3. Mac 简单切换jdk版本

    https://www.cnblogs.com/c-xiaohai/p/6985018.html dmg安装包安装 vim ~/.bash_profile_jdk export JAVA_8_HOME ...

  4. 并发编程-concurrent指南-阻塞队列BlockingQueue

    阻塞队列BlockingQueue,java.util.concurrent下的BlockingQueue接口表示一个线程放入和提取实例的队列. 适用场景: BlockingQueue通常用于一个线程 ...

  5. c++学习书籍推荐《C和C++安全编码》下载

    <华章程序员书库:C和C++安全编码(原书第2版)>致力于解决C和C++中已经导致危险的.破坏性的常见软件漏洞的基本编程错误,这些漏洞自CERT 1988年创立以来就记录在案.针对导致这些 ...

  6. C++学习书籍推荐《More Exceptional C++(英文)》下载

    百度云及其他网盘下载地址:点我 作者简介 Herb Sutter is the author of three highly acclaimed books, Exceptional C++ Styl ...

  7. linux系统的基础优化

    目录 前言 网络优化 在虚拟软件中配置虚拟局域网 接着可以配置自己windows主机的网络连接配置 在虚拟软件中虚拟机添加网卡 虚拟机中的系统基础优化 前言 在自己做linux的相关服务实验时,是没有 ...

  8. 详解rel 属性及noflow

    rel属性的意思是指: 当前页和指向页的关系. 而 rev 属性则指定从目标文档到源文档的关系.百度目前支持: rel='noflow'属性. rel属性的意思是指: 当前页和指向页的关系. < ...

  9. SQL SERVER 活动监视-sys.dm_exec_requests

    sys.dm_exec_requests (Transact-SQL)应用: 针对 SQL Server 内正在执行的每个请求返回一行.sys.dm_exec_connections.sys.dm_e ...

  10. java.util.LinkedHashMap cannot be cast to

    Jackson转换泛型List出现错误java.util.LinkedHashMap cannot be cast to com.xxx ObjectMapper mapper = new Objec ...