通過(guò)Terraform管理負(fù)載均衡服務(wù)
本文介紹如何使用Terraform創(chuàng)建一個(gè)負(fù)載均衡實(shí)例,并為其添加監(jiān)聽(tīng)。
本教程所含示例代碼支持一鍵運(yùn)行,您可以直接運(yùn)行代碼。一鍵運(yùn)行
前提條件
在開(kāi)始之前,請(qǐng)您確保完成以下操作:
使用Terraform,您需要一個(gè)阿里云賬號(hào)和訪問(wèn)密鑰(AccessKey)。 請(qǐng)?jiān)诎⒗镌瓶刂婆_(tái)中的AccessKey管理頁(yè)面上創(chuàng)建和查看您的AccessKey。
已經(jīng)安裝并配置了Terraform,具體操作請(qǐng)參見(jiàn)在本地安裝和配置Terraform和在Cloud Shell中使用Terraform。
背景信息
本文以創(chuàng)建一個(gè)名為slb_worder的公網(wǎng)實(shí)例,并為它配置TCP、UDP和HTTP監(jiān)聽(tīng)為例。
操作步驟
創(chuàng)建一個(gè)負(fù)載均衡實(shí)例。
創(chuàng)建terraform.tf文件,輸入以下內(nèi)容,并保存在當(dāng)前的執(zhí)行目錄中。
說(shuō)明需要為每個(gè)Terraform項(xiàng)目創(chuàng)建一個(gè)獨(dú)立的執(zhí)行目錄。在初始化配置之前至少需要有1個(gè).tf文件。
resource "alicloud_slb_load_balancer" "instance" { load_balancer_name = "slb_worder" load_balancer_spec = "slb.s3.small" internet_charge_type = "PayByTraffic" address_type = "internet" }
運(yùn)行terraform apply開(kāi)始創(chuàng)建。出現(xiàn)類似下面的日志,說(shuō)明創(chuàng)建成功。
alicloud_slb_load_balancer.instance: Creating... alicloud_slb_load_balancer.instance: Still creating... [10s elapsed] alicloud_slb_load_balancer.instance: Creation complete after 14s [id=lb-gw89kh14ra0htarr1ub8n] ...... Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
運(yùn)行terraform show查看已創(chuàng)建的負(fù)載均衡實(shí)例。
添加監(jiān)聽(tīng)。以下示例添加了TCP、UDP和HTTP三種協(xié)議的監(jiān)聽(tīng)。
創(chuàng)建listener.tf文件,輸入以下內(nèi)容,并保存在當(dāng)前的執(zhí)行目錄中。
說(shuō)明在該目錄下所有*.tf 文件都會(huì)被terraform自動(dòng)加載。因此,用戶可以按照實(shí)際用途將配置信息寫(xiě)入不同的文件中。
resource "alicloud_slb_listener" "tcp" { load_balancer_id = alicloud_slb_load_balancer.instance.id backend_port = "22" frontend_port = "22" protocol = "tcp" bandwidth = "10" health_check_type = "tcp" persistence_timeout = 3600 healthy_threshold = 8 unhealthy_threshold = 8 health_check_timeout = 8 health_check_interval = 5 health_check_http_code = "http_2xx" health_check_connect_port = 20 health_check_uri = "/console" established_timeout = 600 } resource "alicloud_slb_listener" "udp" { load_balancer_id = alicloud_slb_load_balancer.instance.id backend_port = 2001 frontend_port = 2001 protocol = "udp" bandwidth = 10 persistence_timeout = 3600 healthy_threshold = 8 unhealthy_threshold = 8 health_check_timeout = 8 health_check_interval = 4 health_check_connect_port = 20 } resource "alicloud_slb_listener" "http" { load_balancer_id = alicloud_slb_load_balancer.instance.id backend_port = 80 frontend_port = 80 protocol = "http" sticky_session = "on" sticky_session_type = "insert" cookie = "testslblistenercookie" cookie_timeout = 86400 health_check = "on" health_check_uri = "/cons" health_check_connect_port = 20 healthy_threshold = 8 unhealthy_threshold = 8 health_check_timeout = 8 health_check_interval = 5 health_check_http_code = "http_2xx,http_3xx" bandwidth = 10 request_timeout = 80 idle_timeout = 30 }
運(yùn)行terraform apply開(kāi)始創(chuàng)建資源。出現(xiàn)類似下面的日志,說(shuō)明創(chuàng)建成功。
alicloud_slb_listener.udp: Creating... alicloud_slb_listener.http: Creating... alicloud_slb_listener.tcp: Creating... alicloud_slb_listener.http: Creation complete after 5s [id=lb-gw89kh14ra0htarr1ub8n:http:80] ...... Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
運(yùn)行terraform show查看已創(chuàng)建的監(jiān)聽(tīng)。
操作樣例
當(dāng)前示例代碼支持一鍵運(yùn)行,您可以直接運(yùn)行代碼。一鍵運(yùn)行
resource "alicloud_slb_load_balancer" "instance" {
load_balancer_name = "slb_worder"
load_balancer_spec = "slb.s3.small"
internet_charge_type = "PayByTraffic"
address_type = "internet"
}
resource "alicloud_slb_listener" "tcp" {
load_balancer_id = alicloud_slb_load_balancer.instance.id
backend_port = "22"
frontend_port = "22"
protocol = "tcp"
bandwidth = "10"
health_check_type = "tcp"
persistence_timeout = 3600
healthy_threshold = 8
unhealthy_threshold = 8
health_check_timeout = 8
health_check_interval = 5
health_check_http_code = "http_2xx"
health_check_connect_port = 20
health_check_uri = "/console"
established_timeout = 600
}
resource "alicloud_slb_listener" "udp" {
load_balancer_id = alicloud_slb_load_balancer.instance.id
backend_port = 2001
frontend_port = 2001
protocol = "udp"
bandwidth = 10
persistence_timeout = 3600
healthy_threshold = 8
unhealthy_threshold = 8
health_check_timeout = 8
health_check_interval = 4
health_check_connect_port = 20
}
resource "alicloud_slb_listener" "http" {
load_balancer_id = alicloud_slb_load_balancer.instance.id
backend_port = 80
frontend_port = 80
protocol = "http"
sticky_session = "on"
sticky_session_type = "insert"
cookie = "testslblistenercookie"
cookie_timeout = 86400
health_check = "on"
health_check_uri = "/cons"
health_check_connect_port = 20
healthy_threshold = 8
unhealthy_threshold = 8
health_check_timeout = 8
health_check_interval = 5
health_check_http_code = "http_2xx,http_3xx"
bandwidth = 10
request_timeout = 80
idle_timeout = 30
}