虚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音乐等,总不能要求用户每次输入用户名.密码吧,为解决这个问题,高手提 ...
随机推荐
- 分析RESTful API安全性及如何采取保护措施
本文中讨论了API安全性和采用安全措施的重要性,如身份验证,API密钥,访问控制和输入验证. API设计的第一步是撰写接口文档 根据TechTarget(海外IT专业媒体)的定义,RESTful AP ...
- Spark学习之路(十三)—— Spark Streaming 与流处理
一.流处理 1.1 静态数据处理 在流处理之前,数据通常存储在数据库,文件系统或其他形式的存储系统中.应用程序根据需要查询数据或计算数据.这就是传统的静态数据处理架构.Hadoop采用HDFS进行数据 ...
- string类总结第二部分实战练习
第二部门:实战练习 昨天由于时间原因,这个部分应该在同一个文章中的,无奈只能今天再开一个了,今天主要是讲一些面试题 一:equals和==的区别 最简单的面试题,也是最基础的,我估计每个学习java的 ...
- ajax入门级
AJAX AJAX:即异步的JavaScript 和 XML,是一种用于创建快速动态网页的技术: 传统的网页(不使用AJAX)如果需要更新内容,必需重载整个网页面: 使用AJAX则不与要加载更新整个网 ...
- JS中 【“逻辑运算”,“面试题:作用域问题”,“dom对象”】这些问题的意见见解
1.逻辑运算 || && ! ||:遇到第一个为true的值就中止并返回 &&:遇到第一个为false的值就中止并返回,如果没有false值,就返回最后一个不是fa ...
- Programming In Lua 第四章
1, 2, 3, 4, 5, 6, 7,
- Python开发【第七篇】: 面向对象和模块补充
内容概要 特殊成员 反射 configparser模块 hashlib模块 logging模块 异常处理 模块 包 1. 特殊成员 什么是特殊成员呢? __init_()就是个特殊的成员. 带双下划线 ...
- java-NIO-FileChannel(文件IO)
Java NIO中的FileChannel是一个连接到文件的通道.可以通过文件通道读写文件. FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下. 对于文件的复制,平时我们都是使用输入 ...
- 使用SSH+SFTP操作终端全解析,告别XShell
1.前言 在Windows系统下操作远程服务器的方式很多,比如XShell+XFTP组合,亦或是PuTTY+WinSCP组合,但在Mac系统下登陆远程服务器,并没有这些工具供我们使用.相比较而言,在M ...
- Python之Pandas库学习(一):简介
官方文档 1. 安装Pandas windos下cmd:pip install pandas 导入pandas包:import pandas as pd 2. Series对象 带索引的一维数组 创建 ...