深圳哪里有做網(wǎng)站的公司東莞今日頭條新聞
簡介:
歡迎來到小李哥全新亞馬遜云科技AWS云計算知識學習系列,適用于任何無云計算或者亞馬遜云科技技術(shù)背景的開發(fā)者,讓大家零基礎(chǔ)5分鐘通過這篇文章就能完全學會亞馬遜云科技一個經(jīng)典的服務(wù)開發(fā)架構(gòu)方案。
我將每天介紹一個基于亞馬遜云科技AWS云計算平臺的全球前沿云開發(fā)/架構(gòu)技術(shù)基礎(chǔ)解決方案,幫助大家快速了解國際上最熱門的云計算平臺亞馬遜云科技AWS最佳實踐,并應(yīng)用到自己的日常工作里。本次我將介紹如何設(shè)計一個高可用的數(shù)據(jù)庫RDS集群,包括數(shù)據(jù)庫和只讀副本實現(xiàn)讀寫分離,保證系統(tǒng)服務(wù)的高可用性,提升數(shù)據(jù)庫查詢性能。
方案所需基礎(chǔ)知識?
什么是 Amazon RDS?
Amazon RDS(Relational Database Service)是亞馬遜云科技提供的一項托管關(guān)系型數(shù)據(jù)庫服務(wù)。它簡化了數(shù)據(jù)庫的設(shè)置、操作和擴展,使用戶能夠?qū)W⒂趹?yīng)用程序開發(fā),而無需擔心數(shù)據(jù)庫的維護和管理。RDS 支持多種數(shù)據(jù)庫引擎,包括 Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle 和 SQL Server。
為什么要創(chuàng)建高可用只讀副本?
在 RDS 集群中創(chuàng)建高可用只讀副本(Read Replica)有助于提高應(yīng)用程序的性能、可用性和擴展性。
分擔讀負載:
只讀副本可以分擔主實例的讀請求,減少主實例的壓力,提高整體讀性能和效率。
提升可用性:
只讀副本可以在不同可用區(qū)或區(qū)域中創(chuàng)建,增強系統(tǒng)的容災(zāi)能力。如果主實例發(fā)生故障,只讀副本可以迅速接管讀請求,確保服務(wù)不中斷。
數(shù)據(jù)庫擴展性:
通過增加只讀副本數(shù)量,可以輕松應(yīng)對不斷增長的讀請求需求。只讀副本的數(shù)量可以根據(jù)實際需求進行調(diào)整。
簡化管理:
RDS 自動管理只讀副本的備份、軟件補丁和硬件維護,用戶無需手動操作,降低運維成本。
本方案包括的內(nèi)容:
1. 創(chuàng)建一個亞馬遜云科技RDS數(shù)據(jù)庫實例
2. 為RDS數(shù)據(jù)庫實例配置只讀副本,創(chuàng)建RDS集群
3. 為數(shù)據(jù)庫集群進行數(shù)據(jù)備份
項目搭建具體步驟:
1. 首先我們進入亞馬遜云科技控制臺,打開RDS服務(wù)。
?2. 點擊左側(cè)Database選項,點擊“Create Database”創(chuàng)建一個數(shù)據(jù)庫
3. 選擇MariaDB數(shù)據(jù)庫引擎
4. 選擇需要的MariaDB版本,點擊數(shù)據(jù)庫部署模式為測試/開發(fā)模型
?5. 為數(shù)據(jù)庫起名為“my-database”,為數(shù)據(jù)庫配置username和密碼,用戶名默認為admin
6. 為數(shù)據(jù)庫選擇計算資源類型: 突增式資源類型“db.t3.xlarge”,并配置硬盤存儲類型為gp2,大小為20GiB。
?7. 為數(shù)據(jù)庫的存儲配置自動擴展功能,存儲最大值擴展值1000GiB。并且選擇部署模式為雙區(qū)高可用,包括跨可用區(qū)只讀副本。
8. 選擇RDS實例部署的defaultVPC網(wǎng)絡(luò)環(huán)境和default子網(wǎng),只允許數(shù)據(jù)庫內(nèi)網(wǎng)訪問No Public Access,并且添加Security Group安全組防火墻。
?9. 添加MariaDB初始數(shù)據(jù)庫名字“my_database”,添加默認MariaDB數(shù)據(jù)庫配置參數(shù)組。
?10. 開啟RDS磁盤加密,添加KMS秘鑰對其加密。
11. 取消數(shù)據(jù)庫集群自動更新維護,配置數(shù)據(jù)庫更新維護窗口。我們在這里也可以看到我們將要創(chuàng)建的數(shù)據(jù)庫實例每個月的價格為401.72美元。
?12. 點擊末尾的Create創(chuàng)建后,我們就可以看到我們的創(chuàng)建好的RDS數(shù)據(jù)庫集群了。
如何通過cdk代碼創(chuàng)建一個RDS數(shù)據(jù)庫集群?
我們也可以利用亞馬遜云科技提供的IaC(代碼定義基礎(chǔ)設(shè)施)的方式,用cdk代碼創(chuàng)建一個RDS數(shù)據(jù)庫集群,實例代碼如下。
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();
以上就是在亞馬遜云科技上創(chuàng)建高可用數(shù)據(jù)庫集群的全部步驟。歡迎大家關(guān)注0基礎(chǔ)5分鐘上手AWS系列,未來獲取更多國際前沿的AWS云開發(fā)/云架構(gòu)方案!