当您必须在AWS上运行可伸缩应用程序时,您的数据库也必须可伸缩。 扩展无状态应用程序层更容易,在无状态应用程序层中,每个节点大部分都是可使用的-即使3节点集群中的一个节点发生故障,您也可以启动另一个节点,而没人注意到。

数据库层是有状态的,因此存在丢失数据的风险。 仅拥有一个节点不是一个选择,因为一个节点总是会宕机,这意味着停机。 因此,您需要在群集中有多个节点,以确保您的应用程序具有高可用性并具有容错能力(我不会在术语上有所差异)。

我在说什么数据库? 没关系 它可以是SQL或NoSQL数据库-每个数据库都有某种形式的集群。 无论是主动-主动还是主动-被动。

现在,特别是对于AWS,您可以选择RDS(或其他托管选项),它将为您处理。 但是,如果没有托管选项(例如Cassandra),或者您不觉得托管选项可以为您提供足够的控制权,或者价格更高,或者您所需的版本不可用,则必须自己管理数据库层。 我不会详细介绍如何配置特定于数据库的集群-您应该查看特定数据库的文档。 我将尝试提供一些技巧,以提示如何安全地运行支持数据库集群的基础架构。

这里是自动缩放组。 它们允许您有一组相同的节点(基于启动配置),并且ASG通过在现有节点发生故障时启动新节点来确保您始终至少有X个健康节点(它们可以自动杀死不健康的节点(即,节点)无法响应自动运行状况检查))。

这对于应用程序节点来说真是太棒了,但是对于数据库节点来说可能是个问题。 如果数据库节点一段时间没有响应,则不一定要杀死它。 这就是为什么我在下面汇总了一些避免陷阱的提示的原因。 不幸的是,其中的许多功能无法通过CloudFormation获得,因此您必须手动进行操作。 并记录它们,以防万一您需要重新创建堆栈时不会忘记:

  • 将最小节点数设置为1。它可以防止在尝试其他不相关的ASG时意外将“所需”计数设置为0。
  • 确保已为每个实例启用终止保护,并且已根据ASG启用了扩展终止保护。
  • 在ASG设置中,有“悬浮过程”。 确保暂停“终止”和“替换不健康”。
  • 确保在启动配置中,不会终止EBS卷。 考虑到您已禁用所有终止选项,为什么需要它? 好吧,由于底层主机的问题,终止有时可能会发生,或者可能安排了某个节点的退役
  • 如果需要从EBS卷还原,请执行以下操作:1.让ASG产生一个新节点2.将“启动”暂时添加到已暂停的操作中3.分离节点的根卷4.将旧的EBS卷附加到/ dev / xvda 5.启动节点。
  • 设置生命周期策略(通过CloudFormation或手动)以对数据库EBS卷进行备份。 确保为卷设置了正确的标签(并且只能手动完成)
  • 确保ASG可以在多个可用区域中生成实例(以防实例掉线)

如果您遵循此步骤,则您的自动伸缩组将不会完全像自动伸缩组那样运行。 您仍然可以配置为在增加负载的情况下自动增加节点数,但是对于数据库层而言,其余功能很少是一个好主意–您宁愿解决现有计算机上的数据库问题,即使暂时停止也是如此。不只是产生新的。

但是你应该拥抱失败。 即使具有所有终止保护,您也必须假设一切都可能失败并消亡,并且应该有一条清晰的路径来还原节点。

翻译自: https://www.javacodegeeks.com/2020/02/running-a-safe-database-cluster-in-aws-with-auto-scaling-groups.html

使用自动伸缩组在AWS中运行安全数据库集群相关推荐

  1. aws集群重启_使用自动伸缩组在AWS中运行安全数据库集群

    aws集群重启 当您必须在AWS上运行可扩展应用程序时,您的数据库也必须是可扩展的. 扩展无状态应用程序层更容易,在无状态应用程序层中,每个节点几乎都是一次性的-即使3节点集群中的一个节点发生故障,您 ...

  2. 实践中整理出tomcat集群和负载均衡

    实践中整理出tomcat集群和负载均衡 来源:http://macrochen.blogdriver.com/macrochen/1207263.html (一)环境说明 (1)服务器有4台,一台安装 ...

  3. 教你在Kubernetes中快速部署ES集群

    摘要:ES集群是进行大数据存储和分析,快速检索的利器,本文简述了ES的集群架构,并提供了在Kubernetes中快速部署ES集群的样例:对ES集群的监控运维工具进行了介绍,并提供了部分问题定位经验,最 ...

  4. Docker中搭建redis分片集群,搭建redis哨兵结构,实现springboot中对redis分片集群、哨兵结构的访问,Redis缓存雪崩、缓存击穿处理(非关系型数据库技术课程 第十二周)

    文章目录 一.要求: 二.知识总结 缓存雪崩 解决方案 docker中redis分片集群搭建 配置好配置文件 redis-6380.conf redis-6381.conf redis-6382.co ...

  5. 在 Kubernetes 中, 搭建高可用集群

    永久地址:在 Kubernetes 中, 搭建高可用集群(保存网址不迷路

  6. Kubernetes 中创建 Pod 时集群中到底发生了些什么?

    想象一下,如果我想将 nginx 部署到 Kubernetes 集群,我可能会在终端中输入类似这样的命令: $ kubectl run --image=nginx --replicas=3 然后回车. ...

  7. mysql 的节点组是什么_什么是MySQL集群

    一.什么是MySQL集群 MySQL集群是一个无共享的(shared-nothing).分布式节点架构的存储方案,其目的是提供容错性和高性能. 数据更新使用读已提交隔离级别(read-committe ...

  8. Redis~集群(分布理论、一致性哈希分区、虚拟槽分区、节点握手、集群通信、集群伸缩、请求路由、故障转移、集群维护)

    文章目录 分布理论 集群的分布式存储 简单哈希 一致性哈希分区 虚拟槽分区 Redis集群功能限制 节点握手 分配槽 集群通信 Gossip消息 集群伸缩 集群扩容 集群收缩 请求路由 MOVED重定 ...

  9. Docker 中的网络管理与集群构建

    Docker中的网络与数据管理 一.Docker网络管理 1.Docker默认网络管理 docker的网络模式 注:docker有三种网络模式,默认的为bridge,配置后可以和宿主机通信,host和 ...

最新文章

  1. AI产品之路:神经元与神经网络
  2. 2008 R2 AD通过组策略针对用户进行限制QQ等软件的运行
  3. Class com.googlecode.jsonplugin.JSONWriter ca...
  4. htmljavascript 事件触发机制
  5. 构建iOS稳定应用架构时方案选择的思考,主要涉及工程结构,数据流思想和代码规范...
  6. lucene-solr本地调试方法
  7. 天气预报接口和城市代码
  8. 【后缀数组】【poj2774】【 Long Long Message】
  9. Oracle配置监听要注意的地方
  10. linux vmware 服务,学习笔记:在Linux虚拟机上搭建node服务
  11. pytorch 中nn.MaxPool1d() 和nn.MaxPool2d()对比;nn.functional.max_pool1d
  12. 如何为Mac视频添加模糊效果?
  13. null和空 not null
  14. ali-oss配合element上传130M以上的文件,浏览器直接崩溃,有大神知道是什么情况么
  15. 信奥中的数学 相关资料汇总(2022.07.08)
  16. 斯坦福cs231n作业数据集下载
  17. Android 蓝牙传导和耦合测试介绍
  18. 【异常检测】DAGMM:结合深度自编码器器和GMM的端到端无监督网络(二):代码实战(PyTorch)...
  19. 女朋友让你帮他破解邻居家的wifi?看完这篇文章你就会了
  20. php鼠标已入移除,原生javascript学习:鼠标移入移出改变样式

热门文章

  1. P4981-父子【数学,树】
  2. jzoj3085-图的计数【组合数,数论】
  3. POJ2352-Stars【树状数组】
  4. 【快速幂】小明解密码 (jzoj 2146)
  5. 2、安装和连接mysql
  6. publiccms实现遍历多级分类下的不同样式内容
  7. 第二章jQuery选择器
  8. hibernate正向生成数据库表以及配置——hibernate.cfg.xml
  9. SpringSecurity认证
  10. MyBatis中Mapper代理方式