使用 Terraform 創(chuàng)建應(yīng)用程序負(fù)載均衡器
實(shí)驗(yàn)步驟
前提條件
安裝 Terraform:?地址
下載倉庫代碼模版
本實(shí)驗(yàn)代碼位于?
task_elb
?文件夾中。變量文件?
variables.tf
???
??
在上面的代碼中,您將聲明,
aws_access_key
,aws_secret_key
和?區(qū)域變量
。
terraform.tfvars
??
??
在上面的代碼中,您將定義變量的值。
main.tf
??
?
?
在上面的代碼中,您將執(zhí)行以下任務(wù):
創(chuàng)建一個安全組,并在其中填充規(guī)則以允許特定端口上的流量
創(chuàng)建 2 個 EC2 實(shí)例。實(shí)例類型為?
t2.micro
,實(shí)例數(shù)量為?2
。提到使用哪個 SSH 密鑰對(已存在于您的 AWS EC2 控制臺中)。安全組 ID 是使用將在創(chuàng)建過程中設(shè)置的變量自動獲取的。
添加了用戶數(shù)據(jù)來安裝?
Apache
?服務(wù)器并添加了一個html
頁面。為 EC2 實(shí)例提供了標(biāo)簽。
獲取
vpc_id
的詳細(xì)信息,以及subnet_id
的詳細(xì)信息。使用默認(rèn) VPC 來創(chuàng)建 ELB。
創(chuàng)建目標(biāo)組,提供運(yùn)行狀況檢查的詳細(xì)信息。
創(chuàng)建應(yīng)用程序負(fù)載均衡器和偵聽器
將目標(biāo)組附加到應(yīng)用程序負(fù)載均衡器
outputs.tf
,將輸出應(yīng)用程序負(fù)載均衡器的 DNS 名稱?
??
使用 Terraform 部署
確保您這些文件在同一位置。
通過運(yùn)行以下命令初始化 Terraform:
terraform init
注意:
terraform init
將檢查所有插件依賴項(xiàng)并下載它們。查看生成計劃,請運(yùn)行以下命令:
terraform plan
創(chuàng)建在?
main.tf
?配置文件中聲明的所有資源?,請運(yùn)行以下命令:
terraform apply
您將能夠看到將要創(chuàng)建的資源,通過輸入?
yes
?批準(zhǔn)所有資源的創(chuàng)建。
terraform apply
?命令最多可能需要 2 分鐘才能創(chuàng)建資源。
檢查 AWS 控制臺中的資源
確保您位于美國東部(弗吉尼亞北部)us-east-1 區(qū)域。
通過單擊 AWS 控制臺頂部導(dǎo)航到 EC2。
導(dǎo)航到左側(cè)面板上“網(wǎng)絡(luò)與安全”下的安全組。
您將能夠看到安全組名稱為
Terraform_Sg
的安全組。
??
導(dǎo)航到左側(cè)面板上“實(shí)例”下的“實(shí)例”。
您可以看到創(chuàng)建的實(shí)例。您可以檢查我們在?
terraform
?文件中應(yīng)用的配置,例如密鑰對、安全組、實(shí)例類型等。
?
導(dǎo)航到左側(cè)面板上“負(fù)載平衡”下的“負(fù)載均衡器”。
您將能夠看到創(chuàng)建的負(fù)載均衡器,其名稱為
aws-alb
。
?
導(dǎo)航到左側(cè)面板上“負(fù)載平衡”下的目標(biāo)組。
您將能夠看到創(chuàng)建的目標(biāo)組,其名稱為
aws-tg
。
?
檢查 HTML 頁面和流量分布
在?
terraform
?文件中,我們使用用戶數(shù)據(jù)創(chuàng)建了一個 Apache 服務(wù)器并發(fā)布了一個 HTML 頁面。在瀏覽器中打開一個新選項(xiàng)卡,然后粘貼所創(chuàng)建的應(yīng)用程序負(fù)載均衡器的 DNS 名稱。
在用戶數(shù)據(jù)中創(chuàng)建的 HTML 內(nèi)容將顯示在頁面中。
繼續(xù)刷新頁面以查看兩個實(shí)例之間的傳入流量分布。
??
現(xiàn)在,我們可以說已創(chuàng)建 2 個 EC2 實(shí)例和應(yīng)用程序負(fù)載均衡器。在負(fù)載均衡器的幫助下,傳入流量將分發(fā)到兩個 EC2 實(shí)例。
我們還可以確認(rèn)安全組允許 HTTP 傳入請求。
補(bǔ)充簡單案例
要在Terraform中為ALB綁定EC,您需要使用Terraform的AWS provider和相應(yīng)的資源類型。以下是一個示例配置,用于將ALB與EC2實(shí)例進(jìn)行綁定:
provider "aws" {
region = "your_region"
}
resource "aws_security_group" "example" {
name = "example_sg"
vpc_id = "your_vpc_id"
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "example" {
instance_type = "t2.small"
ami = "your_ami_id"
subnet_id = "your_subnet_id"
key_name = "your_key_name"
vpc_security_group_ids = [aws_security_group.example.id]
}
resource "aws_alb" "example" {
name = "example_alb"
security_groups = [aws_security_group.example.id]
subnets = ["your_subnet_id1", "your_subnet_id2"]
}
resource "aws_alb_listener" "http" {
load_balancer_arn = aws_alb.example.arn
port = 80
protocol = "HTTP"
}
resource "aws_alb_target_group" "example" {
name = "example_target_group"
port = 80
protocol = "HTTP"
vpc_id = "your_vpc_id"
}
resource "aws_alb_target_group_attachment" "example" {
target_group_arn = aws_alb_target_group.example.arn
port = 80
instances = [aws_instance.example.id]
}
在上面的配置中,首先定義了一個AWS provider,指定了您的區(qū)域。
然后,定義了一個安全組(aws_security_group
),
允許從公共IP地址(0.0.0.0/0
)訪問端口80。
接下來,定義了一個EC2實(shí)例(aws_instance
),
并將其與上述安全組關(guān)聯(lián)。
然后,定義了一個ALB(aws_alb
),
并將其與指定的子網(wǎng)和安全組關(guān)聯(lián)。
接下來,定義了一個HTTP監(jiān)聽器(aws_alb_listener
)并將其與ALB關(guān)聯(lián)。
然后,定義了一個目標(biāo)組(aws_alb_target_group
),指定端口為80,協(xié)議為HTTP,并將其與指定的VPC關(guān)聯(lián)。
最后,通過定義目標(biāo)組附件(aws_alb_target_group_attachment
)將EC2實(shí)例與目標(biāo)組進(jìn)行綁定。文章來源:http://www.zghlxwxcb.cn/news/detail-686093.html
請根據(jù)您的實(shí)際需求修改示例配置中的資源和參數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-686093.html
到了這里,關(guān)于【Terraform學(xué)習(xí)】使用 Terraform 創(chuàng)建應(yīng)用程序負(fù)載均衡器(Terraform-AWS最佳實(shí)戰(zhàn)學(xué)習(xí))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!