14. ClustrixDB 高可用性的最佳实践
本文档详细介绍了最大化ClustrixDB上运行的应用程序正常运行时间的最佳实践。这涵盖了广泛的主题,从环境需求到变更管理程序,所有这些最终都会影响应用程序的可用性。其中许多是您可能已经熟悉的标准最佳实践或概念。
- 小心控制环境和应用程序更改
- 消除单点故障
- 提供足够的额外资源,以便在发生故障时能够继续运行
- 定期制定和测试备份和恢复计划
使用多个操作环境
一个运营成熟的组织可能有多达四种不同的环境:
- 生产
- 异地容灾
- 测试
- 开发
了获得最高的可用性,生产环境可能包含一对相同的集群,它们在主控配置中进行复制。只有一个集群应该主动接受写操作,而另一个集群可以立即进行故障转移(主动/被动);或者,如果存在不同的应用程序或数据库,则可以将这些应用程序或数据库配置为一个集群对一组应用程序是活动的,而另一个集群对另一个集群是活动的。让两个集群都进行写操作(活动/活动)是可能的,但是会带来一些操作上的挑战(请参阅主从复制)。管理从一个集群到另一个集群的应用程序负载转移,可以通过使用外部负载平衡器来处理,也可以通过重新配置应用程序服务器来处理。
异地容灾环境通常位于地理位置不同的位置,包括从生产环境复制的集群,以及能够在生产环境的站点级故障时提供站点功能(可能会降低性能)的应用服务器。
测试环境通常是生产环境(按比例缩小)的复制品,包括可比较的应用服务器和数据集。它用于验证应用程序软件的更改以及ClustrixDB软件的升级。准备环境的一个关键部分是测试自动化框架,它允许在生产环境中使用接近峰值负载的负载来运行应用程序和数据库。
开发环境允许进行更多的特别开发,其中开发人员相互干扰工作的风险是无关紧要的。
为了实现最佳的正常运行时间目标,Clustrix强烈建议使用多个集群,它们可以提供以下功能:
- 将应用程序开发与生产数据库隔离
- 分析工作负载与时间关键型事务工作负载的隔离
- 用于站点范围内停机的灾难恢复/业务持续故障转移
- 应用程序更改和ClustrixDB软件升级的预生产验证
高可用性生产环境
为了充分利用ClustrixDB的容错架构,应该满足以下环境和供应要求:
- 每个节点的电源应该连接到一个单独的电源电路
- 每个生产集群应该有两个后端网络交换机
- 每个后端网络交换机应连接到一个单独的电源电路
- 每个节点应该通过两个以太网端口(接口是绑定的)连接到生产网络,再连接到两个独立的以太网交换机
- 应该配置集群节点,以便在节点发生故障时满足存储和并发性需求。应该配置专区来隔离故障。
变更管理
绝大多数软件故障都是由应用程序行为的变化引起的,可能是由于应用程序本身的错误,也可能是由于底层(如数据库)中的错误的暴露。因此,最佳实践是首先在非生产环境中彻底验证这些更改,然后小心地将这些更改部署到生产环境中,制定回滚计划,以便在出现意外情况时撤消更改。
应用程序变更管理
开发和测试环境的存在允许组织以安全的方式推出新的应用程序和应用程序更改。
- 新的应用程序开发被限制在开发环境中,在这种环境中,不正确的查询和数据库的其他滥用只会影响其他开发工作。
- 一旦代码稳定下来,就可以将其合并到登台环境中,并与现有的生产工作负载一起进行负载测试。(ClustrixGUI管理UI可以提供有用的比较信息。)
- 在测试环境中验证了适当的功能和性能之后,可以将更改部署到生产环境中。
ClustrixDB升级的最佳实践
在您的ClustrixDB集群上升级软件时,可以采用与更改应用程序代码大致相同的方式进行处理。尽管ClustrixDB软件版本是在内部进行了彻底的测试,但是诸如新的编译器优化之类的更改可能会对客户的工作负载产生意料之外的影响;在运行模拟工作负载的登台集群上对新版本进行验证,可以在产品推出之前发现此类问题。
在理想的操作环境中,客户可以参与beta程序,获得早期版本候选版本,以便在他们的开发集群中使用。一旦有一个合格的版本可用,他们就可以在他们的测试环境中进行测试,以消除在繁重的工作负载下明显存在的问题。升级生产时,如果有一对集群可用,则应先升级一个集群;然后,在升级第二个集群之前,集群可以承受一整天或一周的负载,从而提供故障恢复到运行上一个稳定版本的第二个集群。
高可用性的应用程序配置
虽然消除应用程序堆栈中的单点故障超出了本文的范围,但是下面的指导原则适用于您的应用程序如何与ClustrixDB数据库层进行交互:
- 应用服务器应该通过负载平衡器连接
- 应用程序软件应该有数据库事务或连接失败的重试逻辑
- 初始重试计时应该是积极的,因为集群通常在几秒钟内处理组件故障
- 重试频率和迭代也应该适应可能的更长的持续时间恢复
备份与恢复
ClustrixDB并行快速备份提供了快速备份,允许在集群增长、工作被跨节点分配时提供几乎恒定的备份时间。在规划你的备份策略时,考虑以下几点:
- FTP服务器通常成为备份期间的瓶颈
- 它应该配备10Gb或几个绑定的1Gb以太网接口
- 它应该具有足够快的磁盘I/O来同步集群中所有节点的并行写操作
- 它应该有足够的磁盘容量来处理集群的两个或多个完整备份(总使用容量的1/2,因为ClustrixDB只从每个片备份一个副本)
- 备份的离线存档
- 定期做备份文件恢复测试
- ClustrixDB并行恢复支持恢复备份的子集,以及恢复到备用位置(不同的数据库名称),允许在无法使用足够大的集群进行完全恢复时进行定期“抽查”
- (离线)使用repclient实用程序对binlog进行归档,以支持时间点恢复
- 这还需要使用repserver来重放binlog
- 描述了实时点恢复的全过程 https://www.cnblogs.com/yuxiaohao/p/11969626.html
14. ClustrixDB 高可用性的最佳实践的更多相关文章
- Jenkins最佳实践
原文:http://www.cnblogs.com/itech/archive/2011/11/14/2248460.html Jenkins最佳实践,其实大部分对于其他的CI工具同样的适用: * J ...
- 14.1.2 InnoDB表最佳实践:
14.1.2 Best Practices for InnoDB Tables InnoDB表最佳实践: 这个章节描述使用InnoDB表最佳实践: 1.指定一个主键用于每个表使用最多查询的列或者多列, ...
- Ubuntu14.04+RabbitMQ3.6.3+Golang的最佳实践
目录 [TOC] 1.RabbitMQ介绍 1.1.什么是RabbitMQ? RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol ...
- 基于AWS的云服务架构最佳实践
ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关 ...
- 基于开源软件在Azure平台建立大规模系统的最佳实践
作者 王枫 发布于2014年5月28日 前言 Microsoft Azure 是微软公有云的唯一解决方案.借助这一平台,用户可以以多种方式部署和发布自己的应用. 这是一个开放的平台,除了对于Windo ...
- Spring Batch在大型企业中的最佳实践
在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...
- Atitit.log日志技术的最佳实践attilax总结
Atitit.log日志技术的最佳实践attilax总结 1. 日志的意义与作用1 1.1. 日志系统是一种不可或缺的单元测试,跟踪调试工具1 2. 俩种实现[1]日志系统作为一种服务进程存在 [2] ...
- PHP核心技术与最佳实践——全局浏览
难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...
- 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)
邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...
随机推荐
- Unity3D 旋转
Unity有两种设置物体旋转的方式,一种时用Rotate()函数来旋转,另一种时直接构造目标Quaternion来直接赋予rotation. 好吧,不知到写什么,各种旋转和unity2D差不多.在国内 ...
- ELK+Kafka
kafka:接收java程序投递的消息的日志队列 logstash:日志解析,格式化数据为json并输出到es中 elasticsearch:实时搜索搜索引擎,存储数据 kibana:基于es的数据可 ...
- 应用安全 - 工具 - 中间件 - Apache - Apache Tika - 漏洞汇总
CVE-2016-6809 Date2016 类型远程代码执行 影响范围Apache Tika 1.6-1.13 CVE-2018-1335 Date2018 类型命令注入 影响范围Tika-serv ...
- mac下mysql重置密码及使用用户和密码登陆
回车后 登录管理员权限 sudo su回车后输入以下命令来禁止mysql验证功能 ./mysqld_safe --skip-grant-tables &回车后mysql会自动重启(偏好设置中m ...
- Websocket --(1)简介
最近项目需求提出前台界面实时获取后端数据,也就是数据发生变化后服务端主动通知前端页面,以往都是前端请求服务端.当然了,前人已经为我们想好了解决办法,那就是websocket.至于websocket的介 ...
- [转帖]基于VIM漏洞CVE-2019-12735的VIM宏后门病毒详解
基于VIM漏洞CVE-2019-12735的VIM宏后门病毒详解 不明觉厉 只要是人做的东西 就会有bug 就会有安全问题 就看发现bug 或者是发现安全问题 有没有收益了 会用linux的都是比较熟 ...
- python 传址 与传值(暂时保存,后续做分类)
# python 传址 与 传值 # 定义一个函数 用于将 list 下标为2的数据加100 并进行打印 该list def test1(list): list[2]+=100 print(list) ...
- 不用 Notepad++,还有更牛逼的选择!
来源:oschina.net/news/110987/no-notepad-plus-plus 这两天 Notepad++ 牛逼了,然后引发了大家的关注,具体事件内容请大家自行百度,其实作为文本编辑工 ...
- redis 无序集合 数据类型
sadd emptno 8000 sadd emptno 8001 sadd emptno 8002 smembers emptno 返回集合全部数据 scard 获取集合长度 sismem ...
- Java Web开发技术教程入门-JSP基本语法和九大内置对象
这两天气温逐渐升高,好想把自己泡在冰块里······ 恩嗯摁蒽恩嗯摁蒽恩嗯摁蒽恩嗯摁蒽.......今天阅读到了这本书的第四章-JSP基本语法.经过第一天的阅读,我们明白JSP技术是Java Web开 ...