[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

[Azure] 我尝试使用 Azure 自动化自动缩放 SQL 数据库的 DTU。

大家好,我是系统开发部的Hase。

我目前正在使用Azure提供的App Service和SQL数据库开发一个Web系统,但是当我开始操作时,我正在考虑实现自动缩放以尽可能降低成本。

但是,App Service有自动伸缩功能,但SQL Database没有这样的功能。

我想知道是否有办法做到这一点,所以我做了一些研究,发现一篇文章说您可以使用名为 Azure 自动化的功能来自动缩放 SQL 数据库。

当我实际测试时,我能够成功地自动缩放,所以我这次介绍一下如何做。

前提

SQL 数据库有多种购买模式(DTU、基于 vCore 和 Serverless),但这次我们将使用 DTU。

什么是 Azure 自动化?

  • Azure 门户的一项功能,允许你自动执行任务(在 Azure 自动化中称为 Runbook)
  • 可以通过指定时间(每天0:00等)定期执行
  • Runbook 可以使用 PowerShell、PowerShell Workflow、Python 2 和 DSC 语言编写

实施形象

  • 在 Azure 自动化中创建 powershell 格式的 SQL 数据库扩展 Runbook
  • 将创建的Runbook添加到计划中,以便在指定时间自动执行Runbook

程序

添加 Azure 自动化帐户

① 登录Azure门户

② 从Azure服务中选择“自动化帐户”

③ 选择“+添加”添加自动化帐户

④ 输入自动化账户信息创建

姓名 任何名字
订阅 选择您的订阅
资源组 选择您正在使用的资源组
地方 服务器区域
创建 Azure 运行方式帐户 选择“是”*1


*1) 创建Azure执行帐户时请务必选择“是”⇒
为了通过Runbook操作SQL数据库,需要执行帐户的批准,因此
如果选择“否”,则可以从以下位置执行SQL数据库操作操作手册变得无法。

创建后,您的自动化帐户将显示在列表中。

将模块添加到已添加的自动化帐户

添加以下模块以从 Runbook 操作 SQL 数据库(任务)

AZ.帐户 用于管理所有 Azure 凭据和常见配置的模块
AZ.自动化 管理有关 Azure 自动化的信息的模块
数据库服务器 具有新 cmdlet 的模块可支持最新的 SQL 功能

⑤ 该模块是为每个自动化帐户设置的,因此请选择您创建的帐户。

⑥ 选择“模块库”

共享资源 > 模块库

⑦ 从模块库画面安装要注册的模块

在这里注册Az.Account模块(安装顺序无关紧要)

⑧ 将显示 Az.Accounts 模块详细信息屏幕,因此单击“导入”

⑨ 将显示导入确认屏幕,因此单击“确定”


Az.Accounts 模块导入开始

如果导入成功,屏幕右上角会显示“导入成功”的信息。

⑩ 以同样的方式导入其余模块。

创建运行手册(任务)

⑪ 从创建的自动化帐户中选择“Runbook”

流程自动化 > 操作手册

⑫ 选择“+创建 Runbook”来创建 Runbook

⑬ 输入 Runbook 信息并创建

姓名 任何名字
操作手册类型 电源外壳
解释 任何描述性文字

创建的 Runbook 将显示在列表中。

*AzureAutomationTutorial、AzureAutomationTutorialPython2 和 AzureAutomationTutorialScript 在创建 Automation 帐户时默认提供,因此我们不会使用它们。

在 Runbook 中编写代码

在创建的 Runbook 中编写执行自动缩放的流程
* 使用 PowerShell 作为语言

■ 大致实施流程
① 获取 Azure 自动化连接信息
② 使用获取的 Azure 自动化连接信息连接到您的 Azure 帐户
③ 更改 SQL 数据库规范
* 使用 PowerShell 更改 SQL 数据库规范 需要连接到 Azure 帐户才能进行更改

⑭ 选择创建的Runbook

⑮ 选择“编辑”打开代码编辑器


*在这里写下代码

⑯ 描述获取Azure自动化连接信息的过程

■ 代码

# 编写命令获取 Azure Automation 连接信息并将其分配给变量 $connection = Get-AutomationConnection -Name "{自动化帐户连接名称}"

■ 命令详细信息

获取自动化连接
获取有关 Azure 自动化连接的信息。
选项
-姓名 用于获取信息的 Azure 帐户名

⑰ 您可以在“连接”中查看步骤21中的自动化帐户连接名称

共享资源 > 连接

⑱ 使用获取的 Azure Automation 连接信息连接到您的 Azure 帐户

■ 代码

# 授权您的 Azure 帐户 Connect-AzAccount -Tenant $connection.TenantID ` -ApplicationId $connection.ApplicationID -CertificateThumbprint ` $connection.CertificateThumbprint

*如果您想在公式中间换行,请在末尾添加“`(重音符号)”。

■ 命令详细信息

连接-AzAccount
连接到您的 Azure 帐户
选项
-租户 Azure 自动化租户 ID
-应用程序ID Azure 自动化应用程序 ID
-证书指纹 Azure 自动化证书信息

⑲ 更改SQL数据库规格

■ 代码

# 将 SQL 数据库计划更改为 S0(标准 DTU 10) Set-AzSqlDatabase -ResourceGroupName "{资源组名称}" ` -DatabaseName "{SQL 数据库名称}" -ServerName "{SQL Server 名称}" ` -Edition " Standard" -请求的服务目标名称“S0”

■ 命令详细信息

设置 AzSqlDatabase
设置 SQL 数据库属性
选项
-资源组名称 正在使用的资源组
-数据库名称 要使用的 SQL 数据库名称
-服务器名称 要使用的 SQL Server 名称
-版 您想要更改的计划(基本、标准或高级)
-请求的服务目标名称 描述您要更改的 DTU(例如 S1、P2 等)

完成的代码

结合上面的代码将得到这样的结果

# 编写命令获取 Azure 自动化连接信息并将其分配给变量 $connection = Get-AutomationConnection -Name "{自动化帐户连接名称}" # 授权 Azure 帐户 Connect-AzAccount -Tenant $connection TenantID ` -ApplicationId $connection. .ApplicationID -CertificateThumbprint ` $connection.CertificateThumbprint # 将 SQL 数据库计划更改为 S0(标准 DTU 10) Set-AzSqlDatabase -ResourceGroupName "{资源组名称}" ` -DatabaseName "{SQL 数据库名称 }" -ServerName "{SQL Server名称}" ` -版本“标准”-RequestedServiceObjectiveName“S0”

检查创建的Runbook的运行情况

⑳ 打开测试窗口,检查创建的Runbook的运行情况

在代码编辑器屏幕上选择“测试窗口”

㉑ 选择“开始”运行测试

㉒ 测试成功完成后,将显示流。


*如果测试失败,错误消息将以红色显示。

您可以确认目标 SQL 数据库计划已更改。

将创建的 Runbook 注册到计划中

将创建的 Runbook 注册到计划中,以便定期执行
*为了将 Runbook 注册到计划中,您需要发布 Runbook,以便可以在生产环境中使用。

㉓ 单击“发布”并选择“是”以发布 Runbook。

如果 Runbook 成功发布,屏幕右上角将显示一条消息。

㉔ 接下来,单击“链接到日程”以注册到日程。

㉕ 将显示日程设置屏幕,因此创建并注册新的日程。

计划 > + 创建新计划
*如果您已有计划,则无需创建计划

㉖ 输入日程的时间设定信息,点击“创建”

姓名 任何名字
解释 任何描述性文字
一开始 选择任意开始日期和时间
时区 选择任意时区
重复 选择“一次”或“定期”
间隔 可选择执行间隔(仅当您选择“重复”为“定期”时)
设置到期日期 选择“是”或“否”
到期日期 可选择到期日期和时间(仅当“到期日期设置”设置为“是”时)

㉗ 您创建的日程将被选中,因此单击“确定”

成功注册日程后,将显示一条蓝色背景的消息。

㉘ 计划执行后,会显示在作业列表中。

流程自动化 > 职位

概括

通过上述步骤,您将能够自动缩放 SQL 数据库。

顺便说一句,要实现横向扩展/横向扩展,您只需创建两个类似的 Runbook 并重写计划 (-RequestedServiceObjectiveName) 部分即可。

然而,问题是它只能在指定的时间执行,并且不可能使用重要的负载条件作为阈值来执行自动缩放...
如果有人知道如何执行此操作,请告诉我。如果你能让我知道,我会很高兴!

另外,这次我使用了DTU,但我认为与其他购买的型号可以以类似的方式实现,所以请尝试一下。

最后

我开设了我所属的系统开发服务网站“SEKARAKU Lab”。
Beyond是从服务器设计搭建到运营的一站式服务,所以如果您在服务器端开发方面遇到任何问题,请随时联系我们。
SEKARAKU 实验室: [https://sekarakulab.beyondjapan.com/](https://sekarakulab.beyondjapan.com/)

就这样。
这次非常感谢。

如果您觉得这篇文章有帮助,请点赞!
1
加载中...
1 票,平均:1.00 / 11
4,578
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

长谷达也

应届毕业生加入Beyond Co., Ltd.。

我们开发网络系统(开发在浏览器上运行的服务和系统,例如网络服务、数字内容和业务管理系统)和游戏API(开发与应用程序游戏通信的程序)。

我们还为 Shopify 开发私人/自定义应用程序。

原本在大阪事务所工作,2019年调到横滨事务所。
我的爱好是棒球/卡拉OK/动漫