如何扩展 Azure 弹性池

How to scale Azure Elastic Pools

我想自动扩展我们的弹性池,以便在上午 8 点到下午 6 点之间为它们提供大量资源,而在下午 6 点到早上 8 点之间我们为它们提供很少的资源。 我可以使用 powershell 上下缩放弹性池...

Set-AzSqlElasticPool 
-ResourceGroupName "ResourceGroupName01"
-ServerName "ServerName01"
-ElasticPoolName "ElasticPoolName01"
-Dtu 100
-DatabaseDtuMax 50 
-DatabaseDtuMin 20

但我不确定如何在 Azure 中自动执行该 powershell 脚本的 运行 以自动缩放我的弹性池。

Is it possible to make azure elastic pool scale automatically?

https://docs.microsoft.com/en-us/azure/azure-sql/database/scripts/monitor-and-scale-pool-powershell

我不确定你有什么类型的应用程序,但你可以使用 Azure Functions 或 WebJob 在每天的特定时间缩小和放大。这比纯 PowerShell 更可靠。

在 Azure 门户中创建一个新的 Function App。 要完成这项工作,我们需要向函数应用程序添加 2 个模块。我们需要最新版本 Az.Accounts 和 Az.Sql。您可以在此处查看最新版本: https://www.powershellgallery.com/packages/Az.Accounts https://www.powershellgallery.com/packages/Az.Sql 在上述每个页面的“手动下载”选项卡上下载 nuget 包。

返回 Azure 中的函数应用程序和 select“高级工具”并单击“开始”,从顶部菜单中选择“调试控制台”>“Powershell”

浏览至 \site\wwwroot 并编辑文件:requirements.psd1。 添加对我们打算添加的 2 个模块的引用(如果需要,请不要忘记更新版本号),然后保存。

在 wwwroot 目录中创建一个名为 Modules 的新文件夹,在 Modules 文件夹中创建 2 个附加文件夹“Az.Sql”和“Az.Accounts”。在每个文件夹中拖放您之前下载的相应 nuget 包。您需要稍等片刻,让 Kudu 解压它们。

现在单击主页按钮并运行执行以下 2 个 powershell 命令 Import-Module C:\home\site\wwwroot\Modules\Az.Accounts\Az.Accounts.psd1 Import-Module C:\home\site\wwwroot\Modules\Az.Sql\Az.Sql.psd1 对此有一个很好的解释:https://tech.nicolonsky.ch/azure-functions-powershell-modules/ 模块现已安装,因此请返回菜单中的功能应用程序和 select 标识,然后打开系统分配。 现在浏览到您的 SQL 服务器(托管弹性池)> 访问控制 > 添加 > 添加角色分配。选择合适的角色(Owner 会工作但不适合生产环境)。在成员中选择“将访问权限分配给”“托管标识”,select 成员并选择您的函数应用程序,然后分配角色。

返回函数应用程序,您现在可以创建一个函数来扩展您的弹性池。对于计时器函数,这个网站对于生成 CRON 表达式非常有帮助 https://ncrontab.swimburger.net/ 在函数的代码和测试选项卡中,添加以下行以根据您的要求缩放池:Set-AzSqlElasticPool -ResourceGroupName "ResourceGroupName01" -ServerName "ServerName01" -ElasticPoolName "ElasticPoolName01" -Dtu 100 -DatabaseDtuMax 50 -DatabaseDtuMin 20