微信公众号视频网站开发,市场营销策划书500字,网站站内结构优化,成都私人借钱空放私人简介#xff1a;
欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者#xff0c;让大家零基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构方案。
我将每天介绍一个基于亚马逊云科…简介
欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列适用于任何无云计算或者亚马逊云科技技术背景的开发者让大家零基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构方案。
我将每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术基础解决方案帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践并应用到自己的日常工作里。本次我将介绍如何设计一个高可用的数据库RDS集群包括数据库和只读副本实现读写分离保证系统服务的高可用性提升数据库查询性能。 方案所需基础知识
什么是 Amazon RDS
Amazon RDSRelational Database Service是亚马逊云科技提供的一项托管关系型数据库服务。它简化了数据库的设置、操作和扩展使用户能够专注于应用程序开发而无需担心数据库的维护和管理。RDS 支持多种数据库引擎包括 Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle 和 SQL Server。
为什么要创建高可用只读副本
在 RDS 集群中创建高可用只读副本Read Replica有助于提高应用程序的性能、可用性和扩展性。
分担读负载
只读副本可以分担主实例的读请求减少主实例的压力提高整体读性能和效率。
提升可用性
只读副本可以在不同可用区或区域中创建增强系统的容灾能力。如果主实例发生故障只读副本可以迅速接管读请求确保服务不中断。
数据库扩展性
通过增加只读副本数量可以轻松应对不断增长的读请求需求。只读副本的数量可以根据实际需求进行调整。
简化管理
RDS 自动管理只读副本的备份、软件补丁和硬件维护用户无需手动操作降低运维成本。 本方案包括的内容
1. 创建一个亚马逊云科技RDS数据库实例
2. 为RDS数据库实例配置只读副本,创建RDS集群
3. 为数据库集群进行数据备份 项目搭建具体步骤
1. 首先我们进入亚马逊云科技控制台打开RDS服务。 2. 点击左侧Database选项点击“Create Database”创建一个数据库 3. 选择MariaDB数据库引擎 4. 选择需要的MariaDB版本点击数据库部署模式为测试/开发模型 5. 为数据库起名为“my-database”为数据库配置username和密码用户名默认为admin 6. 为数据库选择计算资源类型: 突增式资源类型“db.t3.xlarge”并配置硬盘存储类型为gp2大小为20GiB。 7. 为数据库的存储配置自动扩展功能存储最大值扩展值1000GiB。并且选择部署模式为双区高可用包括跨可用区只读副本。 8. 选择RDS实例部署的defaultVPC网络环境和default子网只允许数据库内网访问No Public Access并且添加Security Group安全组防火墙。 9. 添加MariaDB初始数据库名字“my_database”添加默认MariaDB数据库配置参数组。 10. 开启RDS磁盘加密添加KMS秘钥对其加密。 11. 取消数据库集群自动更新维护配置数据库更新维护窗口。我们在这里也可以看到我们将要创建的数据库实例每个月的价格为401.72美元。 12. 点击末尾的Create创建后我们就可以看到我们的创建好的RDS数据库集群了。 如何通过cdk代码创建一个RDS数据库集群
我们也可以利用亚马逊云科技提供的IaC代码定义基础设施的方式用cdk代码创建一个RDS数据库集群实例代码如下。
import * as cdk from aws-cdk-lib;
import { CfnOutput, Stack, StackProps } from aws-cdk-lib;
import * as rds from aws-cdk-lib/aws-rds;
import * as ec2 from aws-cdk-lib/aws-ec2;
import * as secretsmanager from aws-cdk-lib/aws-secretsmanager;
import { Construct } from constructs;export class RdsStack extends Stack {constructor(scope: Construct, id: string, props?: StackProps) {super(scope, id, props);// Create a VPCconst vpc new ec2.Vpc(this, Vpc, {maxAzs: 2});// Create a secret for the DB credentialsconst dbCredentialsSecret new secretsmanager.Secret(this, DBCredentialsSecret, {generateSecretString: {secretStringTemplate: JSON.stringify({ username: admin }),generateStringKey: password,excludeCharacters: /\\,}});// Create the RDS clusterconst cluster new rds.DatabaseCluster(this, Database, {engine: rds.DatabaseClusterEngine.auroraMysql({version: rds.AuroraMysqlEngineVersion.VER_2_09_1}),credentials: rds.Credentials.fromSecret(dbCredentialsSecret),instanceProps: {vpc,instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.XLARGE),vpcSubnets: {subnetType: ec2.SubnetType.PRIVATE_WITH_NAT}},instances: 1,storageEncrypted: true,storageType: rds.StorageType.GP2,allocatedStorage: 20,defaultDatabaseName: MyDatabase});// Create a read replicaconst replica new rds.DatabaseInstanceReadReplica(this, ReadReplica, {sourceDatabaseInstance: cluster.instanceIdentifiers[0],instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.XLARGE),vpc,storageEncrypted: true});new CfnOutput(this, DatabaseEndpoint, {value: cluster.clusterEndpoint.socketAddress});new CfnOutput(this, ReadReplicaEndpoint, {value: replica.dbInstanceEndpointAddress});}
}const app new cdk.App();
new RdsStack(app, RdsStack);
app.synth();以上就是在亚马逊云科技上创建高可用数据库集群的全部步骤。欢迎大家关注0基础5分钟上手AWS系列未来获取更多国际前沿的AWS云开发/云架构方案