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

当您必须在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php无法新数据类型,新手入门PHP必知的七种数据类型

想要入门PHP,首先要学会搭建环境,其次是学习基础语法。PHP的基础包括数据类型,运算符,变量和常量等。在这篇文章中,我们主要了解什么是数据类型。数据类型是指同种数据的一个统称,一般会描述为XX数据类型。…

java batch_Java EE 7 Batch中传递属性/参数的2种方式

java batch谈到Java EE 7批处理功能,有两种方法可以将属性/参数传递给块和批处理。 本快速指南向您展示了两种方式,在开发批处理Java EE 7方式时可能会经常使用它们。 1.运行前预定义的属性/参数 预定义属性是您在部署应用程序之前定义的属性&#xff0…

攻防世界web高手进阶php_rce,php_rce 攻防世界xctf web

php_rce首先了解ThinkPHP5.x rec 漏洞分析与复现https://blog.csdn.net/qq_40884727/article/details/101452478var_pathinfo的默认配置为s,我们可以通过$_GET[‘s’]来传参于是构造payloadhttp://111.198.29.45:30600/index.php?sindex/\think\App/invokefunction&functi…

具有InlfuxDB的Spring Boot和Micrometer第2部分:添加InfluxDB

自从我们添加了基本应用程序以来&#xff0c;是时候启动InfluxDB实例了。 我们将按照之前的教程进行操作&#xff0c;并添加一个docker实例。 docker run –rm -p 8086&#xff1a;8086 –name influxdb-本地influxdb 是时候在我们的pom上添加微米InfluxDB依赖项了 < dep…

ci 地址去掉index.php,CI框架如何删除地址栏的 index.php

默认CI框架显示地址是http://localhost/ci/index.php/test/去PHP去掉index.php这样会更好些。1.修改Http.conf的LoadModule rewrite_module modules/mod_rewrite.so去掉注释2.ci根目录增加.htaccess文件RewriteEngine OnRewriteBase /ci#Removes access to the system folder b…

gradle的二进制版本_Gradle入门:创建二进制分发

gradle的二进制版本创建有用的应用程序后&#xff0c;很可能我们想与其他人共享它。 一种方法是创建一个可以从我们的网站下载的二进制发行版。 这篇博客文章描述了如何满足以下要求的二进制发行版&#xff1a; 我们的二进制分发不得使用所谓的“胖子”方法。 换句话说&#…

php auth和rbac区别,php中比rbac更好的权限认证的方式auth类认证

RBAC是按节点进行认证的&#xff0c;如果要控制比节点更细的权限就有点困难了&#xff0c;比如页面上面的操作按钮&#xff0c; 我想判断用户权限来显示这个按钮&#xff0c; 如果没有权限就不会显示这个按钮&#xff1b; 再比如我想按积分进行权限认证&#xff0c; 积分在0-10…

使用比较器的nulls对具有null值的列表进行排序

你好朋友&#xff0c; 在本教程中&#xff0c;我们将看到如何使用Java 8 Comparator.nullsFirst在列表中的项目很少为空时如何对项目列表进行排序&#xff0c;以便将null视为列表中的最小元素。 –什么是比较器 – nullsFirst方法在Comparator中做什么 –排序具有非空名称的…

php 获取文件给用户下载,php 下载文件/直接下载数据内容

思路步骤* 定义参数* 魔术方法* 执行下载* 获取设置属性函数* 获取设置文件mime 类型* 获取设置下载文件名* 设置header* 下载函数实现代码class DownFile{// 定义参数public $data; // 下载的数据或文件名public $is_confalse; // 是否是下载内容public $down_file_name; // 下…

Jar Hell变得轻松–用jHades揭开类路径的神秘面纱

Java开发人员将不得不面对的最困难的问题是类路径错误&#xff1a; ClassNotFoundException &#xff0c; NoClassDefFoundError &#xff0c;Jar Hell&#xff0c; Xerces Hell和公司。 在本文中&#xff0c;我们将探究这些问题的根本原因&#xff0c;并了解最小的工具&#…

韩顺平php教程笔记,PHP笔记,韩顺平php笔记_PHP教程

PHP笔记&#xff0c;韩顺平php笔记Mysql-----------------------------------------------------------------------------Mysql 改默认密码update mysql.user set PasswordPASSWORD(123456) WHERE UserrootFLUSH PRIVILEGES去了解下MYSQL的范式、反范式、混合范式还有索引的建…

php键盘输入函数,php的常用输入语句以及常用函数

这篇文章主要介绍了关于php的常用输入语句以及常用函数&#xff0c;有着一定的参考价值&#xff0c;现在分享给大家&#xff0c;有需要的朋友可以参考一下一、 echo语句echo做php的人在熟悉不过了&#xff0c;在php文件中我们用他来输出数据。<?php echo "hi mm"…

分度器中硒定位器的完整指南(示例)

在测试网站的功能时&#xff0c;特别是Web元素&#xff08;例如单选按钮&#xff0c;文本框&#xff0c;下拉列表等&#xff09;&#xff0c;您需要确保能够访问这些元素。 Selenium定位器正是出于这个目的&#xff0c;通过使用此命令&#xff0c;我们可以识别这些Web元素DOM&a…

ajax php 投票,PHP 实例 AJAX 投票

PHP 实例 - AJAX 投票AJAX 投票在下面的实例中&#xff0c;我们将演示一个投票程序&#xff0c;通过它&#xff0c;投票结果在网页不进行刷新的情况下被显示。你喜欢 PHP 和 AJAX 吗?是:否:实例解释 - HTML 页面当用户选择上面的某个选项时&#xff0c;会执行名为 "getVo…

wildfly管理控制台_WildFly 9 –别希望您的控制台像这样!

wildfly管理控制台每个人都可能听到这个消息。 周一发布了第一个WildFly 9.0.0.Alpha1版本。 您可以从wildfly.org网站上下载它&#xff0c;最大的变化是它是由一个新的功能配置工具构建的&#xff0c;该工具位于现在单独的核心发行版上&#xff0c;还包含一个新的Servlet发行版…

azure mysql sql,UiPath连接Azure Sql Server数据库

一、创建数据库在Azure中创建SQL数据库image更改防火墙设置&#xff0c;并设置客户端IP访问规则image二、安装数据源驱动在本地安装数据源驱动程序&#xff0c;保证可以正常接入到远程的数据库。如果不安装驱动程序&#xff0c;则会出现以下报错&#xff1a;[Microsoft][ODBC D…

Spring Boot删除嵌入式Tomcat服务器,启用Jetty服务器

快速指南&#xff0c;在Spring Boot应用程序中排除嵌入式tomcat服务器并添加Jetty Server。 配置删除tomcat并添加Jetty Server。 1.简介 在本教程中&#xff0c;我们将学习如何从Spring Boot应用程序中删除Tomcat服务器 。 实际上&#xff0c;一旦我们添加了“ spring-boot-s…

java 方式配置ssm,关于SSM以及Spring boot中对于Spring MVC配置的问题

SSM中 Spring MVC配置传统的web.xml配置web.xmlcontextConfigLocationclasspath*:applicationContext.xmlorg.springframework.web.context.ContextLoaderListenerencodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingUTF-8encodingFilter/*SpringMV…

java 并发的原子性_Java并发教程–原子性和竞争条件

java 并发的原子性原子性是多线程程序中的关键概念之一。 我们说一组动作是原子的&#xff0c;如果它们都以不可分割的方式作为单个操作执行。 认为多线程程序中的一组操作将被串行执行是理所当然的&#xff0c;可能会导致错误的结果。 原因是由于线程干扰&#xff0c;这意味着…

linux 误删除mysql表能恢复吗,Linux误删数据恢复

引子指在键上飘&#xff0c;难免会湿手套。当你按下shiftdel键后&#xff0c;会不会突然心里凉透&#xff0c;当你执行rm -rf后&#xff0c;会不会马上去搜索哪个国家入境不需要签证。或者你还会遇到如下的情况&#xff1a;root4xem7:~# aliasalias cdrm -rfalias ddocker数据恢…