使用Terraform可以快速完成负载均衡配置,实现多源站间的流量智能调度和健康检查。
安装Terraform并配置权限
在本地安装和配置Terraform
您可以参考安装和配置Terraform,在本地使用Terraform。
由于阿里云账号(主账号)拥有资源的所有权限,其AccessKey一旦泄露风险巨大,所以建议您使用满足最小化权限需求的RAM用户的AccessKey。具体操作方式请参见创建AccessKey。
创建环境变量,用于存放身份认证信息。
在AccessKey管理页面上创建和查看您的AccessKey。
若无对应环境变量,在执行terraform模板时无法确认身份信息,将会导致调用失败。
使用在线服务(免安装和权限配置)
如果您不想安装Terraform,可以直接使用在线服务Cloud Shell。
阿里云Cloud Shell是一款帮助您运维的免费产品,预装了Terraform的组件,并配置好身份凭证(Credentials)。因此您可直接在Cloud Shell中运行Terraform的命令。更多信息,请参见使用Terraform快速创建资源。
通过Cloud Shell使用Terraform时,由于其销毁特性会导致数据丢失,因此建议您使用Cloud Shell做简单、快速的操作,例如调试。更多使用限制,请参见使用限制。
涉及的资源
创建站点:alicloud_esa_site
创建源地址池:alicloud_esa_origin_pool
创建负载均衡:alicloud_esa_load_balancer
查询ESA实例:alicloud_esa_sites
生成随机整数:random_integer
配置负载均衡
创建一个名为
main.tf的配置文件,然后将以下代码复制到配置文件中,用于配置负载均衡。# 定义变量 variable "name" { type = string default = "terraform-example" # 资源命名前缀 } # 配置阿里云 Provider provider "alicloud" { region = "cn-hangzhou" # API调用区域 } # 1. 查询企业版 ESA 实例 data "alicloud_esa_sites" "default" { plan_subscribe_type = "enterpriseplan" # 筛选企业版实例 # 2. 生成随机数用于域名唯一性 resource "random_integer" "default" { min = 10000 max = 99999 } # 3. 创建站点 resource "alicloud_esa_site" "resource_Site_OriginPool" { site_name = "DOMAIN" # 替换为实际域名,如 example.com instance_id = data.alicloud_esa_sites.default.sites.0.instance_id coverage = "overseas" # 海外加速 access_type = "NS" # NS 接入方式 } # 4. 创建源地址池 resource "alicloud_esa_origin_pool" "resource_OriginPool_LoadBalancer_1_1" { site_id = alicloud_esa_site.resource_Site_OriginPool.id origin_pool_name = "originpool1" enabled = true origins { type = "ip_domain" # 源站类型:域名或IP address = "www.example.com" # 替换为实际源站地址 header = "{\"Host\":[\"www.example.com\"]}" # 回源Host头 enabled = true weight = "30" # 流量权重 name = "origin1" } } # 5. 创建负载均衡 resource "alicloud_esa_load_balancer" "default" { site_id = alicloud_esa_site.resource_Site_OriginPool.id load_balancer_name = "${var.name}-loadbalancer.${alicloud_esa_site.resource_Site_OriginPool.site_name}" description = var.name steering_policy = "geo" # 地理位置调度策略 default_pools = [alicloud_esa_origin_pool.resource_OriginPool_LoadBalancer_1_1.origin_pool_id] fallback_pool = alicloud_esa_origin_pool.resource_OriginPool_LoadBalancer_1_1.origin_pool_id # 故障转移池 # 健康检查配置 monitor { type = "ICMP Ping" # 健康检查协议 timeout = 5 # 超时时间(秒) monitoring_region = "ChineseMainland" # 探测点位置 consecutive_up = 3 # 连续成功3次判定恢复 consecutive_down = 5 # 连续失败5次判定宕机 interval = 60 # 检测间隔(秒) port = 80 # 端口(ICMP不使用) } }说明请根据实际情况修改代码中的占位符:将
DOMAIN替换为您的实际域名,将www.example.com替换为实际源站地址。关键参数说明请参见本文末尾的相关参考章节。进入配置文件所在目录,执行如下命令,初始化Terraform环境。
terraform init执行如下命令,验证Terraform语法与配置。
terraform validate执行如下命令,预览执行结果。
terraform plan执行如下命令,执行Terraform脚本。
terraform apply依据提示输入
yes确认执行即可。
验证结果
执行terraform show命令
在 terraform apply 成功后、清理资源前,可在工作目录执行以下命令核对资源状态。
terraform show登录控制台查看
在ESA控制台选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择。
在负载均衡页面可以看到新创建的负载均衡规则,包括负载均衡名称、调度策略、默认源地址池和健康检查配置等信息。
相关参考
本文代码示例中关键参数的说明如下:
参数名称 | 示例值 | 说明 |
|
| 筛选企业版ESA实例,用于获取可用的实例ID。 |
|
| 站点域名。替换为您的实际域名,如 |
|
| 加速节点覆盖范围。取值: |
|
| 接入方式。 |
|
| 源地址池名称,用于标识源站组。 |
|
| 源站类型。取值: |
|
| 源站地址。根据 |
|
| 回源时携带的HTTP头信息。通常需要设置 |
|
| 流量权重。取值范围:0~100,多个源站的权重总和应为100。 |
|
| 负载均衡名称。命名格式为 |
|
| 流量调度策略。取值: |
|
| 默认源地址池列表。流量将按调度策略分配到这些源地址池。 |
|
| 故障转移源地址池。当所有默认池不可用时,流量将转发到此池。 |
|
| 健康检查协议。支持 |
|
| 健康检查探测点位置。取值: |
|
| 健康检查间隔时间(秒)。取值范围:30~3600。 |
|
| 连续失败次数阈值。连续失败该次数后,判定源站不可用。 |
|
| 连续成功次数阈值。连续成功该次数后,判定源站恢复可用。 |
|
| 单次健康检查超时时间(秒)。取值范围:1~30。 |
更多参数说明,请参见alicloud_esa_load_balancer。
不同套餐的支持情况
免费版 | 基础版 | 标准版 | 高级版 | 企业版 |
联系销售按需定制 |