使用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
查询ESA实例:alicloud_esa_sites
生成随机整数:random_integer
配置源地址池
创建一个名为
main.tf的配置文件,然后将以下代码复制到配置文件中,用于配置包含阿里云OSS和AWS S3两个源站的源地址池。# 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" "default" { site_name = "gositecdn-${random_integer.default.result}.cn" instance_id = data.alicloud_esa_sites.default.sites.0.instance_id coverage = "overseas" # 海外加速 access_type = "NS" # NS 接入方式 } # 4. 创建包含多个源站的源地址池 resource "alicloud_esa_origin_pool" "default" { site_id = alicloud_esa_site.default.id origin_pool_name = "exampleoriginpool" enabled = "true" # 源站1:阿里云 OSS origins { type = "OSS" # 源站类型:阿里云对象存储 address = "example.oss-cn-beijing.aliyuncs.com" # OSS Bucket 域名,请替换 header = "{\"Host\":[\"example.oss-cn-beijing.aliyuncs.com\"]}" # 回源Host头 enabled = "true" weight = 50 # 流量权重50% name = "origin1" # OSS 私有访问鉴权配置 auth_conf { auth_type = "private_cross_account" # 私有跨账号访问 access_key = "{{ACCESS_KEY}}" # 阿里云AK(请替换为实际值) secret_key = "{{ACCESS_SECRET_KEY}}" # 阿里云SK(请替换为实际值) } } # 源站2:AWS S3 origins { type = "S3" # 源站类型:AWS S3对象存储 address = "example.s3.com" # S3 Bucket 域名,请替换 header = "{\"Host\": [\"example1.com\"]}" # 回源Host头 enabled = "true" weight = 50 # 流量权重50% name = "origin2" # S3 私有访问鉴权配置 auth_conf { auth_type = "private" # AWS S3 私有访问 version = "v2" # AWS 签名版本 2 region = "us-east-1" # S3 Bucket 所在AWS区域 access_key = "{{S3_ACCESS_KEY}}" # AWS AK(请替换为实际值) secret_key = "{{S3_ACCESS_SECRET_KEY}}" # AWS SK(请替换为实际值) } } }说明请根据实际情况修改代码中的占位符:将OSS和S3的
address替换为实际Bucket域名,将access_key和secret_key替换为实际访问密钥。关键参数说明请参见本文末尾的相关参考章节。进入配置文件所在目录,执行如下命令,初始化Terraform环境。
terraform init执行如下命令,验证Terraform语法与配置。
terraform validate执行如下命令,预览执行结果。
terraform plan执行如下命令,执行Terraform脚本。
terraform apply依据提示输入
yes确认执行即可。
验证结果
执行terraform show命令
在 terraform apply 成功后、清理资源前,可在工作目录执行以下命令核对资源状态。
terraform show登录控制台查看
在ESA控制台选择站点管理,在站点列单击目标站点。
在左侧导航栏,选择。
在源地址池页面可以看到新创建的源地址池,包括源地址池名称、包含的源站列表、各源站的类型、地址、权重和鉴权配置等信息。
相关参考
本文代码示例中关键参数的说明如下:
参数名称 | 示例值 | 说明 |
|
| 筛选企业版ESA实例,用于获取可用的实例ID。 |
|
| 站点域名。示例中使用随机数生成唯一域名,实际使用时替换为您的域名。 |
|
| 加速节点覆盖范围。取值: |
|
| 接入方式。 |
|
| 源地址池名称,用于标识源站组。 |
|
| 是否启用源地址池。 |
|
| 源站类型。取值: |
|
| 源站地址。根据源站类型填写域名、IP地址或对象存储域名。 |
|
| 回源时携带的HTTP头信息。通常需要设置 |
|
| 流量权重。取值范围:0~100,多个源站的权重总和应为100。 |
|
| 源站标识名称,便于管理和识别。 |
|
| 鉴权模式。OSS支持: |
|
| 访问密钥ID。阿里云OSS使用阿里云AK,AWS S3使用AWS AK。请替换为实际值并妥善保管。 |
|
| 访问密钥。阿里云OSS使用阿里云SK,AWS S3使用AWS SK。请替换为实际值并妥善保管。 |
|
| AWS签名版本。仅S3源站需要,支持 |
|
| AWS区域代码。仅S3源站需要,如 |
更多参数说明,请参见alicloud_esa_origin_pool。
不同套餐的支持情况
功能项 | 免费版 | 基础版 | 标准版 | 高级版 | 企业版 |
源地址池个数 | 2个 | 5个 | 10个 | 15个 | 20个 |
源地址池中服务器数量上限 | 2个 | 5个 | 10个 | 15个 | 20个 |