虚IP解决程序连只读服务器故障漂移
目前公司有一套核心交易数据库配置了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解决程序连只读服务器故障漂移的更多相关文章
- 虚IP解决AlWaysON读库服务器过保替换
公司核心交易数据库,使用SQL 2012 AlWaysON的1主4从,有2台(8.14,8.15)从库服务器,已经使用3年多,过保替换,新买的2台服务器已经安装好,一开始方案如下: 服务器(8.14) ...
- PUTTY无法远程连接服务器故障解决[转]
对于一个刚刚了解putty工具的新手来说,在putty工具使用中有时出现了问题而无法解决.今天就来介绍怎么解决putty无法远程连接服务器的故障. 用putty远程连接服务器时,提示错误 server ...
- 【转】解决keepalived正常启动但是虚IP(VIP)没有生成的问题
如题所示,keepalived安装配置好之后能够正常启动,但是虚IP并没有生成.接着检查防火墙(iptables)发现也没有相关的限制.稍微郁闷了一下之后,查看了keepalived日志文件,这次成功 ...
- 【转】Asp.Net Core2.0获取客户IP地址,及解决发布到Ubuntu服务器获取不到正确IP解决办法
1.获取客户端IP地址实现方法(扩展类) using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.ModelBinding; u ...
- Asp.Net Core2.0获取客户IP地址,及解决发布到Ubuntu服务器获取不到正确IP解决办法
1.获取客户端IP地址实现方法(扩展类) using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.ModelBinding; u ...
- Apache服务器故障排除攻略
Apache服务器故障排除攻略 应用服务器Apache浏览器配置管理网络应用 随着网络技术的普及.应用和Web技术的不断完善,Web服务已经成为互联网上重要的服务形式之一.原有的客户端/服务器模式正 ...
- C/S架构程序多种类服务器之间实现单点登录(转)
(一) 在项目开发的过程中,经常会出现这样的情况:我们的产品包括很多,以QQ举例,如登陆.好友下载.群下载.网络硬盘.QQ游戏.QQ音乐等,总不能要求用户每次输入用户名.密码吧,为解决这个问题,高手提 ...
- 部署AlwaysOn第一步:搭建Windows服务器故障转移集群
在Windows Server 2012 R2 DataCenter 环境中搭建集群之前,首先要对Windows服务器故障转移集群(Windows Server Failover Cluster,简称 ...
- C/S架构程序多种类服务器之间实现单点登录
(一) 在项目开发的过程中,经常会出现这样的情况:我们的产品包括很多,以QQ举例,如登陆.好友下载.群下载.网络硬盘.QQ游戏.QQ音乐等,总不能要求用户每次输入用户名.密码吧,为解决这个问题,高手提 ...
随机推荐
- ZooKeeper 系列(二)—— Zookeeper单机环境和集群环境搭建
一.单机环境搭建 1.1 下载 1.2 解压 1.3 配置环境变量 1.4 修改配置 1.5 启动 1. ...
- scala class中孤立代码块揭秘
在 scala class中,经常会有很多的代码块需要执行,它们不在任何方法中,只是孤立的代码块. 案例: class Tester(val name:String, num:Integer) { p ...
- (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
原生js实现放烟花效果,点击鼠标,然后随机向四周扩散,! 思路: 1.首先烟花是五颜六色的,所以我们先写一个随机颜色的函数: 2.创建一个制造烟花的构造函数,第一个参数为元素,第二参数为初始x轴位置, ...
- JavaWeb入门_模仿天猫整站Tmall_SSH实践项目
Tmall_SSH 技术栈 Struts2 + Hibernate + Spring + Jsp + Tomcat , 是 Java Web 入门非常好的练手项目 效果展示: 模仿天猫前台 模仿天猫后 ...
- 使用jinja2模板引擎生成html文件
使用jinja2模板引擎生成html文件 jinja2是纯Python的模板引擎,是仿照Django模板的Python模板语言. 它速度快,被广泛使用,提供了可选的沙箱模板执行环境保证安全. 使用pi ...
- vs 编译说明
静态编译/MT,/MTD 是指使用libc和msvc相关的静态库(lib). 动态编译,/MD,/MDd是指用相应的DLL版本编译. 其中字母含义 d:debug m:multi-th ...
- Effective Java - 静态方法与构造器
目录 用静态工厂方法替代构造器? 静态工厂有名称 静态工厂不必重新创建一个对象 静态工厂可以返回任何子类型对象 静态工厂返回的类可以动态变化 静态工厂返回的类可以不存在 静态工厂方法的缺点 静态工厂方 ...
- "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''zhaoqiuyu' (`NAME`,`PRICE`,`COUNT`) values('电脑',1999,1)' at lin
"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server v ...
- 深入理解Java虚拟机笔记——垃圾收集器与内存分配策略
目录 判断对象是否死亡 引用计数器算法 可达性分析算法 各种引用 回收方法区 垃圾收集算法 标记-清除算法 复制算法 标记-整理算法 分代收集算法 HotSpot算法实现 枚举根节点 GC停顿(Sto ...
- C++模版的用法
模板是实现代码重用机制的一种工具,实质就是实现类型参数化,即把类型定义为参数. C++提供两种模板:函数模板,类模板 函数模板 template <typename T> T myMax( ...