在 Terraform 中配置高可用性 SQL





0/5 (0投票)
大家好,这周是一个简短的帖子,但正如我们讨论可用性、混沌工程等话题时,我看到的最常见的数据元素之一就是 SQL 和 Azure SQL。SQL 是一种普遍且常见的数据存储,随处可见。
鉴于此,许多公司都在实施基础设施即代码来管理配置漂移并为他们的应用程序提供更高的弹性。这绝对是一个很好的方法。 有几个人和我讨论过一个不太明确的问题……如何在 Terraform 中配置异地复制。
实际上,这已经内置到 Terraform azure rm 提供程序中,可以使用以下代码实现
provider "azurerm" { subscription_id = "" features { key_vault { purge_soft_delete_on_destroy = true } } } data "azurerm_client_config" "current" {} resource "azurerm_resource_group" "rg" { name = "sqlpoc" location = "{region}" } resource "azurerm_sql_server" "primary" { name = "kmack-sql-primary" resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location version = "12.0" administrator_login = "sqladmin" administrator_login_password = "{password}" } resource "azurerm_sql_server" "secondary" { name = "kmack-sql-secondary" resource_group_name = azurerm_resource_group.rg.name location = "usgovarizona" version = "12.0" administrator_login = "sqladmin" administrator_login_password = "{password}" } resource "azurerm_sql_database" "db1" { name = "kmackdb1" resource_group_name = azurerm_sql_server.primary.resource_group_name location = azurerm_sql_server.primary.location server_name = azurerm_sql_server.primary.name } resource "azurerm_sql_failover_group" "example" { name = "sqlpoc-failover-group" resource_group_name = azurerm_sql_server.primary.resource_group_name server_name = azurerm_sql_server.primary.name databases = [azurerm_sql_database.db1.id] partner_servers { id = azurerm_sql_server.secondary.id } read_write_endpoint_failover_policy { mode = "Automatic" grace_minutes = 60 } }
上面的 TF 代码将部署两个配置了异地复制的数据库服务器。关键部分如下
resource "azurerm_sql_failover_group" "example" { name = "sqlpoc-failover-group" resource_group_name = azurerm_sql_server.primary.resource_group_name server_name = azurerm_sql_server.primary.name databases = [azurerm_sql_database.db1.id] partner_servers { id = azurerm_sql_server.secondary.id } read_write_endpoint_failover_policy { mode = "Automatic" grace_minutes = 60 } }
重要的元素是“server_name”和“partner_servers”,这建立了数据复制的连接。然后,“read_write_endpoint_failover_policy”设置了故障转移策略。