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及两者相结合的实 ...
随机推荐
- 1.2.2 OSI参考模型 下
[今天打酱油了,纯抄书.OSI太重要,不敢随便乱写.] 一.开放系统互联参考模型 答:20世纪80年代初,ISO提出来著名的开放系统互联参考模型[Open Systems Interconnectio ...
- Linux环境下Oracle安装参数设置
前面讲了虚拟机的设置和OracleLinux的安装,接下来我们来说下Oracle安装前的准备工作.1.系统信息查看系统信息查看首先服务器ip:192.168.8.120服务器系统:Oracle Lin ...
- 几张图让你看懂WebAssembly
几张图让你看懂WebAssembly:https://www.jianshu.com/p/bff8aa23fe4d
- java tomcat服务器
1.什么是javaweb? Java web,是用java技术来解决相关web互联网领域的技术的总称. web包括:web服务器和web客户端两部分.java在最早web客户端的应用有java app ...
- redis 字符串 数据类型
1 字符串 设置: set key value 获取: get key 删除: del key getrange key 0 3 截取字符串内容 ...
- vue-cli 2.* 中导入公共less文件
在新版的Vue CLI 3中,如何导入公共less文件在文档里已经描述的很清楚了,但是在2.*的版本中,我没有查到相关的办法,网友的办法又相当复杂,于是我推荐给大家一个很简单的办法. 首先,会用到we ...
- $NOI$ $2019$ 网络同步赛
D2T1考试前测了自己造的“假”极限数据,看了看内存发现是118MB,感觉没问题就交上去了. 赛后用Lemon测了一下:MLE 88->0 对于别的题我已经不想再说什么了. update: 由于 ...
- 云服务器linux重新挂载指定目录(非扩充)
新买的香港云服务器,系统只能在商家的控制台上安装. 系统和硬盘分开的,根目录空间只有10G.需要重新设置相关目录的大小,如:/usr./var./home等. 以下是自己的解决方法小计. 一.初始的分 ...
- 手把手 教你把H5页面打造成windows 客户端exe 软件
序言: 好久没有更新博客了,最近在工作中碰到这种需求,由于没有做过,中间碰到好多坑,最后在一位贵人帮助的情况下,最终还是搞定了. 第一步,先安装 cefpython3 pip install cefp ...
- openapi
https://www.breakyizhan.com/swagger/2810.html https://www.cnblogs.com/serious1529/p/9318115.html htt ...