本文档详细介绍了最大化ClustrixDB上运行的应用程序正常运行时间的最佳实践。这涵盖了广泛的主题,从环境需求到变更管理程序,所有这些最终都会影响应用程序的可用性。其中许多是您可能已经熟悉的标准最佳实践或概念。

  • 小心控制环境和应用程序更改
  • 消除单点故障
  • 提供足够的额外资源,以便在发生故障时能够继续运行
  • 定期制定和测试备份和恢复计划

使用多个操作环境

一个运营成熟的组织可能有多达四种不同的环境:

  • 生产
  • 异地容灾
  • 测试
  • 开发  

了获得最高的可用性,生产环境可能包含一对相同的集群,它们在主控配置中进行复制。只有一个集群应该主动接受写操作,而另一个集群可以立即进行故障转移(主动/被动);或者,如果存在不同的应用程序或数据库,则可以将这些应用程序或数据库配置为一个集群对一组应用程序是活动的,而另一个集群对另一个集群是活动的。让两个集群都进行写操作(活动/活动)是可能的,但是会带来一些操作上的挑战(请参阅主从复制)。管理从一个集群到另一个集群的应用程序负载转移,可以通过使用外部负载平衡器来处理,也可以通过重新配置应用程序服务器来处理。

异地容灾环境通常位于地理位置不同的位置,包括从生产环境复制的集群,以及能够在生产环境的站点级故障时提供站点功能(可能会降低性能)的应用服务器。

测试环境通常是生产环境(按比例缩小)的复制品,包括可比较的应用服务器和数据集。它用于验证应用程序软件的更改以及ClustrixDB软件的升级。准备环境的一个关键部分是测试自动化框架,它允许在生产环境中使用接近峰值负载的负载来运行应用程序和数据库。

开发环境允许进行更多的特别开发,其中开发人员相互干扰工作的风险是无关紧要的。

为了实现最佳的正常运行时间目标,Clustrix强烈建议使用多个集群,它们可以提供以下功能:

  • 将应用程序开发与生产数据库隔离
  • 分析工作负载与时间关键型事务工作负载的隔离
  • 用于站点范围内停机的灾难恢复/业务持续故障转移
  • 应用程序更改和ClustrixDB软件升级的预生产验证

高可用性生产环境

为了充分利用ClustrixDB的容错架构,应该满足以下环境和供应要求:

  • 每个节点的电源应该连接到一个单独的电源电路
  • 每个生产集群应该有两个后端网络交换机
  • 每个后端网络交换机应连接到一个单独的电源电路
  • 每个节点应该通过两个以太网端口(接口是绑定的)连接到生产网络,再连接到两个独立的以太网交换机
  • 应该配置集群节点,以便在节点发生故障时满足存储和并发性需求。应该配置专区来隔离故障。

变更管理

绝大多数软件故障都是由应用程序行为的变化引起的,可能是由于应用程序本身的错误,也可能是由于底层(如数据库)中的错误的暴露。因此,最佳实践是首先在非生产环境中彻底验证这些更改,然后小心地将这些更改部署到生产环境中,制定回滚计划,以便在出现意外情况时撤消更改。

应用程序变更管理

开发和测试环境的存在允许组织以安全的方式推出新的应用程序和应用程序更改。

  • 新的应用程序开发被限制在开发环境中,在这种环境中,不正确的查询和数据库的其他滥用只会影响其他开发工作。
  • 一旦代码稳定下来,就可以将其合并到登台环境中,并与现有的生产工作负载一起进行负载测试。(ClustrixGUI管理UI可以提供有用的比较信息。)
  • 在测试环境中验证了适当的功能和性能之后,可以将更改部署到生产环境中。

ClustrixDB升级的最佳实践

在您的ClustrixDB集群上升级软件时,可以采用与更改应用程序代码大致相同的方式进行处理。尽管ClustrixDB软件版本是在内部进行了彻底的测试,但是诸如新的编译器优化之类的更改可能会对客户的工作负载产生意料之外的影响;在运行模拟工作负载的登台集群上对新版本进行验证,可以在产品推出之前发现此类问题。

在理想的操作环境中,客户可以参与beta程序,获得早期版本候选版本,以便在他们的开发集群中使用。一旦有一个合格的版本可用,他们就可以在他们的测试环境中进行测试,以消除在繁重的工作负载下明显存在的问题。升级生产时,如果有一对集群可用,则应先升级一个集群;然后,在升级第二个集群之前,集群可以承受一整天或一周的负载,从而提供故障恢复到运行上一个稳定版本的第二个集群。

高可用性的应用程序配置

虽然消除应用程序堆栈中的单点故障超出了本文的范围,但是下面的指导原则适用于您的应用程序如何与ClustrixDB数据库层进行交互:

  • 应用服务器应该通过负载平衡器连接
  • 应用程序软件应该有数据库事务或连接失败的重试逻辑
  • 初始重试计时应该是积极的,因为集群通常在几秒钟内处理组件故障
  • 重试频率和迭代也应该适应可能的更长的持续时间恢复

备份与恢复

ClustrixDB并行快速备份提供了快速备份,允许在集群增长、工作被跨节点分配时提供几乎恒定的备份时间。在规划你的备份策略时,考虑以下几点:

  • FTP服务器通常成为备份期间的瓶颈
  1. 它应该配备10Gb或几个绑定的1Gb以太网接口
  2. 它应该具有足够快的磁盘I/O来同步集群中所有节点的并行写操作
  3. 它应该有足够的磁盘容量来处理集群的两个或多个完整备份(总使用容量的1/2,因为ClustrixDB只从每个片备份一个副本)
  • 备份的离线存档
  • 定期做备份文件恢复测试
  • ClustrixDB并行恢复支持恢复备份的子集,以及恢复到备用位置(不同的数据库名称),允许在无法使用足够大的集群进行完全恢复时进行定期“抽查”
  • (离线)使用repclient实用程序对binlog进行归档,以支持时间点恢复
  1. 这还需要使用repserver来重放binlog
  2. 描述了实时点恢复的全过程 https://www.cnblogs.com/yuxiaohao/p/11969626.html

14. ClustrixDB 高可用性的最佳实践的更多相关文章

  1. Jenkins最佳实践

    原文:http://www.cnblogs.com/itech/archive/2011/11/14/2248460.html Jenkins最佳实践,其实大部分对于其他的CI工具同样的适用: * J ...

  2. 14.1.2 InnoDB表最佳实践:

    14.1.2 Best Practices for InnoDB Tables InnoDB表最佳实践: 这个章节描述使用InnoDB表最佳实践: 1.指定一个主键用于每个表使用最多查询的列或者多列, ...

  3. Ubuntu14.04+RabbitMQ3.6.3+Golang的最佳实践

    目录 [TOC] 1.RabbitMQ介绍 1.1.什么是RabbitMQ?   RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol ...

  4. 基于AWS的云服务架构最佳实践

    ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关 ...

  5. 基于开源软件在Azure平台建立大规模系统的最佳实践

    作者 王枫 发布于2014年5月28日 前言 Microsoft Azure 是微软公有云的唯一解决方案.借助这一平台,用户可以以多种方式部署和发布自己的应用. 这是一个开放的平台,除了对于Windo ...

  6. Spring Batch在大型企业中的最佳实践

    在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...

  7. Atitit.log日志技术的最佳实践attilax总结

    Atitit.log日志技术的最佳实践attilax总结 1. 日志的意义与作用1 1.1. 日志系统是一种不可或缺的单元测试,跟踪调试工具1 2. 俩种实现[1]日志系统作为一种服务进程存在 [2] ...

  8. PHP核心技术与最佳实践——全局浏览

    难得买到并喜欢一本好书,‘PHP核心技术与最佳实践’. 几天时间,先看了个大概,总结一下整体是什么样子的,怎么看怎么学. 1.总共14章: 2.第1.2章讲PHP的OOP: 其中第一章侧重于PHP的O ...

  9. 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)

      邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...

随机推荐

  1. 什么是redis?常用的命令有哪些?

    1.什么是redis? redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发.高扩展,大数据存储等一系列的问题而产生的数据库 ...

  2. 点云ICP注册

    原文链接 背景 两个点云要注册在一块,一般分两个步骤:先做一个大致的对齐,也就是所谓的初始注册,一般可以通过一些可靠的点对来计算得到(如图3所示):然后在初始注册的基础上进行精细注册,提升注册的精度( ...

  3. 事务与Mysql隔离级别

    事务 定义: 比如ABCD四个业务,作为一个事务,他们要么一起都执行完毕,要么都不执行.(只要有一个不成功,那么所有的都不可以成功) 四个特性 ACID 原子性(Atomicity) 整个事务中的所有 ...

  4. 简述Object(ActiveX)控件遮挡Dialog、select下拉框的解决办法

    1.背景 最近在做项目的过程中,我们使用了Object控件,但是同时在上面写了一个select下拉框,因此每次点击下拉框的时候我们会发现,下拉框的部分内容被Object控件给遮挡了,调查研究后发现,我 ...

  5. 使用 iview Table 表格组件修改操作的显示隐藏

    使用 iview Table 表格组件修改操作的显示隐藏,如下图 1.如何设置 table 操作按后台传入的状态值去渲染 不同的按钮? 解决方法 我们在vue2中,动态渲染html 使用的是 retu ...

  6. Splunk初识

    目录 网址汇总 注册与下载 安装 使用 中文环境 关于APP Splunk自带的APP 创建自己的APP 添加数据 本地文件添加 通过监视添加数据 自定义列 查询语句 SPL 与 SQL对照 命令查找 ...

  7. [转帖]RSA算法与DSA算法的区别

    RSA算法与DSA算法的区别 https://cloud.tencent.com/developer/news/254061 文章来源:企鹅号 - SuperFullStack 本文译自:StackE ...

  8. Go语言代码结构与语法基础(二)

    任何一门语言,都是从打印 hello world 开始的. 最简单的go代码: package main // 声明 main 包,表明当前是一个可执行程序 import "fmt" ...

  9. NOIP2017 时间复杂度 大模拟

    再写一道大模拟题. 由于是限时写的,相当于考场代码,乱的一批. 题目链接:P3952 时间复杂度 先记几个教训: 字符串形式的数字比较大小老老实实写函数,字典序都搞错几次了 栈空的时候不但pop()会 ...

  10. flume复习(一)

    关于flume官方文档介绍可以去:http://flume.apache.org/看看.接下来就介绍一下关于我个人对flume的理解 一.flume介绍: 1.flume是一个分布式.可靠.和高可用的 ...