(转) HA的几种方案
数据库HA
一般把数据库层面的HA,和应用层面HA分开考虑
数据库一般采用数据库产品提供的HA方案,比如Oracle的RAC,mysql的集群,mongodb的replica set等
无HA的运维
在应用层面不做HA,我们产品有试过,后果十分惨重。无论是应用down了,还是硬件故障,都会造成业务中断。而且这时候想定位问题就十分纠结,因为保留现场去定位问题比较理想,但是业务一直不恢复客户又有意见,所以不做HA在生产环境是强烈不推荐的
如果真的没有HA,那运维也就是人工观察,发现业务中断了,就赶快把应用再启起来。好一点的话,可以做一点自动拉起引用的脚本,实现自动化。但是因为硬件始终只有一台,所以有时候没有办法启起来,只能临时迁移,业务中断时间会很长。而且只有一套环境,会发生应用一起来马上又down掉
冷备
基本上就是准备两套硬件,一套跑业务,另一套备用。第一套坏了,就把备用的那套启起来。这样基本可以抗硬件故障,因为2套硬件同时坏的几率比较低。也可以把2套硬件放在不同的网段,这样还可以抗网络故障
不过也有几个问题:
1、成本高,硬件成本,以及相应的机柜场租、电费也跟着上去了
2、第二套启动需要时间,所以业务还是会中断一会,如果是对可用性要求很严格的服务,冷备的方案基本无法满足
一般会搭配一些HA管理软件,业界比较有名的是VERITAS,可以自动改IP,自动启应用等,不过也比较贵
N:1备份
也是冷备的一种,不过比硬件double的方案能省一些成本。前提是应用是分布式的,那么可以只准备一台额外的机器,把所有分布式组件都部署上,然后哪个组件坏了就启哪个。如果同时2个组件坏了,那就没办法了。启动过程中的业务中断也是无法避免的。总的来说,可靠性不如完全的冷备方案,不过能省点成本
热备负载均衡
这种方案是可用性最高的方案,同时启动2套应用,在上层加一个负载均衡。如果一套坏了,就把请求发到好的那一台,再尝试恢复坏的那一套。业务是不中断的,但是只剩一套应用的那段时间,压力会突然大很多
前提是应用需要是无状态的,否则坏了那台机的请求,也没法转发到别的机器上。基本上应用只要满足这个条件,都会选择热备,选择冷备一般是无奈的选择(无状态改造短期做不到),因为消耗的硬件是一样的,热备的效果明显要更好HA
(转) HA的几种方案的更多相关文章
- 防止服务器宕机时MySQL数据丢失的几种方案
这篇文章主要介绍了防止服务器宕机时MySQL数据丢失的几种方案,结合实践介绍了Replication和Monitor以及Failover这三个项目的应用,需要的朋友可以参考下. 对于多数应用来说,My ...
- 组建MySQL集群的几种方案
组建MySQL集群的几种方案LVS+Keepalived+MySQL(有脑裂问题?但似乎很多人推荐这个)DRBD+Heartbeat+MySQL(有一台机器空余?Heartbeat切换时间较长?有脑裂 ...
- 【Win 10 应用开发】文件读写的三种方案
本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧——事无定法,灵活运用者为上. OK,咱们开始吧 ...
- 集合框架,ArrayList和Vector的区别,让arrayList线程安全的几种方案
boolean add(E e) 将指定的元素添加到此列表的尾部. void add(int index, E element) 将指定的元素插入此列表中的指定位置. boolean addAll(C ...
- javascript 网络是否连接的几种方案
js 网络是否连接的几种方案 1.通过html5的新属性: window.onload = function () { var isOnLine = navigator.on ...
- javascript把IP地址转为数值几种方案,来挑战一下效率吧
先看看什么是IP地址: IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节).IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~25 ...
- [转] Asp.Net 导出 Excel 数据的9种方案
湛刚 de BLOG 原文地址 Asp.Net 导出 Excel 数据的9种方案 简介 Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式.Tab格式.website ...
- 浅谈实现placeholder效果的几种方案
placeholder是html5<input>的一个属性,它提供可描述输入字段预期值的提示信息(hint), 该提示会在输入字段为空时显示.高端浏览器支持此属性(ie10/11在获得焦点 ...
- GPRS组网的几种方案【来自网络】
GPRS组网的几种方案:1) 方案一:中心采用ADSL等INTELNET公网连接,采用公网固定IP或者公网动态IP+DNS解析服务.此种方案向先INTERNET运营商申请ADSL等宽带业务. ...
随机推荐
- CentOS6.8 安装rar解压缩
wget http://www.rarsoft.com/rar/rarlinux-x64-5.4.0.tar.gz tar -zxvf rarlinux-x64-5.4.0.tar.gz cd rar ...
- mysql 并发下数据不一致的问题分析及解决
MySQL 5.6 , InnoDB存储引擎,默认事务隔离级别(REPEATABLE-READ) 初始sql 脚本如下: CREATE DEFINER=`root`@`localhost` PROCE ...
- input placeholder 兼容问题
placeholder是html5出的新特性,ie9以下是不兼容的, 那么为了兼容ie9 我们需要对他做处理 //jq的处理方式$(function(){ jQuery('[placeholder] ...
- js_页面关闭beforeunload事件
做圆桌爆文公众号的时候,需要对阅读的文章进行时间统计.是这个公众号的核心功能,客户把文章转发到朋友圈或者转给朋友,记录谁阅读此文章和阅读时长进行记录,从而展示给客户. 功能点是,关闭页面时触发事件,请 ...
- python中的argparse模块
argparse干什么用的? 答:参数设置,比如python demo.py -h 诸如此类的. 开始学习这个模块: parser = argparse.ArgumentParser() #使用这个模 ...
- python自动开发之第二十二天
知识点概要 - Session - CSRF - Model操作 - Form验证(ModelForm) - 中间件 - 缓存 - 信号 一. Session 基于Cookie做用户验证时:敏感信息不 ...
- go语言爬虫goquery和grequests的使用
/*下载工具*/ package main import ( "fmt" //go语言版本的jquery "github.com/PuerkitoBio/goquery& ...
- oc 与 swift 之间的桥接文件 (ProjectNmae-Bridging-Header.h) (ProjectNmae-Swift.h)
oc 与 Swift 是2种不同的语言, oc代码只能写带oc文件里, Swift代码只能写在Swift文件里, 虽然2者不同语言, 但却能互相调用, 不过需要进行一下桥接, 就是下面的2个文件 (P ...
- C基础 万能动态数组
引言 - 动态数组切入 开发中动态类型无外乎list 或者 vector, 这里就是在C中实现vector结构容器部分. 对于C中使用的数据结构, 可以参照下面感觉很不错框架源码学习 , 感觉是< ...
- 亚马逊EC2根硬盘空间扩容
买的系统盘为32G,结果发现只使用了8G,剩下的都未分配 lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda : 32G disk └─xvda1 : ...