【Terraform学习】使用 Terraform 创建应用程序负载均衡器(Terraform-AWS最佳实战学习)

使用 Terraform 创建应用程序负载均衡器

实验步骤

前提条件

  • 安装 Terraform: 地址

下载仓库代码模版

  • 本实验代码位于 task_elb 文件夹中

  • 变量文件 variables.tf   

  

  • 在上面的代码中,您将声明aws_access_keyaws_secret_key和 区域变量

  • terraform.tfvars  

  

  • 在上面的代码中,您将定义变量的值

  • main.tf

  

 

 

  • 在上面的代码中,您将执行以下任务

    • 创建一个安全组,并在其中填充规则允许特定端口上的流量

    • 创建 2 个 EC2 实例。实例类型为 t2.micro,实例数量为 2

    • 提到使用哪个 SSH 密钥对(已存在于您的 AWS EC2 控制台中)。安全组 ID 是使用将在创建过程中设置的变量自动获取的

    • 添加了用户数据来安装 Apache 服务器并添加了一个html页面

    • 为 EC2 实例提供了标签

    • 获取vpc_id的详细信息,以及subnet_id的详细信息

    • 使用默认 VPC 来创建 ELB

    • 创建目标组,提供运行状况检查详细信息

    • 创建应用程序负载均衡器和侦听器

    • 目标组附加到应用程序负载均衡器

  • outputs.tf,将输出应用程序负载均衡器的 DNS 名称 

  


使用 Terraform 部署

  • 确保您这些文件在同一位置

  • 通过运行以下命令初始化 Terraform

    • terraform init

    • 注意:terraform init检查所有插件依赖项下载它们

  • 查看生成计划,请运行以下命令

    • terraform plan

  • 创建在 main.tf 配置文件中声明的所有资源 ,请运行以下命令

    • terraform apply

  • 您将能够看到将要创建的资源,通过输入 yes 批准所有资源的创建

  • terraform apply 命令最多可能需要 2 分钟才能创建资源


检查 AWS 控制台中的资源

  • 确保您位于美国东部(弗吉尼亚北部)us-east-1 区域

  • 通过单击 AWS 控制台顶部导航到 EC2

  • 导航到左侧面板“网络与安全”下的安全组

  • 您将能够看到安全组名称为Terraform_Sg的安全组。

  

  • 导航到左侧面板“实例”下的“实例”

  • 您可以看到创建的实例。您可以检查我们在 terraform 文件中应用的配置,例如密钥对、安全组、实例类型等。

 

  • 导航到左侧面板“负载平衡”下的“负载均衡器”

  • 您将能够看到创建的负载均衡器,其名称为aws-alb

 

  • 导航到左侧面板“负载平衡”下的目标组

  • 您将能够看到创建的目标组,其名称为aws-tg

 


检查 HTML 页面和流量分布

  • 在 terraform 文件中,我们使用用户数据创建了一个 Apache 服务器并发布了一个 HTML 页面

  • 在浏览器中打开一个新选项卡,然后粘贴所创建的应用程序负载均衡器的 DNS 名称

  • 在用户数据中创建的 HTML 内容将显示在页面中

  • 继续刷新页面以查看两个实例之间的传入流量分布

  

  • 现在,我们可以说已创建 2 个 EC2 实例应用程序负载均衡器。在负载均衡器的帮助下,传入流量将分发到两个 EC2 实例

  • 我们还可以确认安全组允许 HTTP 传入请求

补充简单案例

要在Terraform中为ALB绑定EC,您需要使用Terraform的AWS provider和相应的资源类型。以下是一个示例配置,用于将ALB与EC2实例进行绑定:

provider "aws" {region = "your_region"
}resource "aws_security_group" "example" {name   = "example_sg"vpc_id = "your_vpc_id"ingress {from_port   = 80to_port     = 80protocol    = "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.arnport              = 80protocol          = "HTTP"
}resource "aws_alb_target_group" "example" {name     = "example_target_group"port     = 80protocol = "HTTP"vpc_id   = "your_vpc_id"
}resource "aws_alb_target_group_attachment" "example" {target_group_arn = aws_alb_target_group.example.arnport             = 80instances        = [aws_instance.example.id]
}

在上面的配置中,首先定义了一个AWS provider,指定了您的区域。

然后,定义了一个安全组(aws_security_group),

允许从公共IP地址(0.0.0.0/0)访问端口80。

接下来,定义了一个EC2实例(aws_instance),

并将其与上述安全组关联。

然后,定义了一个ALB(aws_alb),

并将其与指定的子网和安全组关联。

接下来,定义了一个HTTP监听器(aws_alb_listener)并将其与ALB关联。

然后,定义了一个目标组(aws_alb_target_group),指定端口为80,协议为HTTP,并将其与指定的VPC关联。

最后,通过定义目标组附件(aws_alb_target_group_attachment)将EC2实例与目标组进行绑定。

请根据您的实际需求修改示例配置中的资源和参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/110404.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解ArrayList的动态扩容机制及应用

在java编程中,数据结构起着至关重要的作用,而ArrayList作为一种常用的动态数组,为我们在处理数据时提供了便利。其中,其独特的动态扩容机制更是为其赢得了广泛的应用。我们不管在工作还是面试中,都会遇到ArrayList&…

Nginx详解 二:配置文件部分

文章目录 1. Nginx 配置文件1.1 主配置文件1.2 子配置文件1.3 全局配置1.3.1 修改启动的进程数1.3.2 cpu和work进程绑定(nginx调优)1.3.3 修改PID路径1.3.4 nginx进程的优先级(work进程的优先级)1.3.5 调试work进程打开的文件的个…

聚观早报|2023戴尔科技峰会助力创新;小米汽车电池供应商敲定

【聚观365】8月23日消息 2023戴尔科技峰会助力企业创新 小米汽车电池供应商敲定中创新航和宁德时代 iPhone15预计有6种配色 王小川卸任自动驾驶企业禾多科技董事 特斯拉动力总成副总裁宣布离职 2023戴尔科技峰会助力企业创新 近日“新生万物 数实新格局 —— 2023戴尔科技…

周鸿祎为360智脑招贤纳士;LLM时代的选择指南;Kaggle大语言模型实战;一文带你逛遍LLM全世界 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 思否「齐聚码力」黑客马拉松,用技术代码让生活变得更美好 主页:https://pages.segmentfault.com/google-hacka…

系统架构设计高级技能 · 安全架构设计理论与实践

点击进入系列文章目录 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 系统架构设计高级技能 安全架构设计理论与实践 一、信息安全面临的威胁1.1 信息…

相机SD卡数据丢失如何恢复?

出门在外,相机是人们记录生活点滴的重要工具,是旅游的最佳玩伴。人们每到一个地方,都喜欢用相机来见证自己来过的痕迹,拍好的照片都会被放到相机卡里,但在使用相机时,有时我们会意外删除了重要的照片或视频…

【SpringCloudAlibaba】Sentinel使用

文章目录 概述官网解决的问题主要特性 配置下载可视化控制台POMYML 流控规则直接(默认)关联链路 降级规则降级策略实战RT异常比例异常数 热点key限流示例:高级选项:参数例外项其他 系统规则SentinelResource按资源名称限流后续处理按照Url地址限流后续处…

hdfs操作

hadoop fs [generic options] [-appendToFile … ] [-cat [-ignoreCrc] …] [-checksum …] [-chgrp [-R] GROUP PATH…] [-chmod [-R] <MODE[,MODE]… | OCTALMODE> PATH…] [-chown [-R] [OWNER][:[GROUP]] PATH…] [-copyFromLocal [-f] [-p] [-l] [-d] … ] [-copyTo…

深度学习卷积神经网络识别光学字符验证码,及captcha使用简单案例

深度学习卷积神经网络识别验证码 文章目录 深度学习卷积神经网络识别验证码一、引言二、导入必要的库三、防止 tensorflow 占用所有显存四、定义数据生成器并测试五、定义网络结构六、训练模型七、测试模型 一、引言 验证码识别&#xff0c;本身使用来判断访问网站的用户是不是…

【JSDocvscode】使用JSDoc、在vscode中开启node调试、使用vscode编写运行Python程序

JSDoc JSDoc是JavaScript的一种注释语法&#xff0c;同时通过JSDoc注释也可以规避js弱类型中不进行代码提示的问题 图形展示JSDoc的效果&#xff1a; 上述没有进行JSDoc&#xff0c;然后我们a点什么 是没有任何提示的 上述就是加上 JSDoc的效果 常用的 vscode 其实内置了 js…

SpringBoot整合JUnit、MyBatis、SSM

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 SpringBoot整合 一、SpringBoot整合JUnit二、Spri…

Android获取手机已安装应用列表JAVA实现

最终效果: 设计 实现java代码: //获取包列表private List<String> getPkgList() {List<String> packages new ArrayList<String>();try {//使用命令行方式获取包列表Process p Runtime.getRuntime().exec("pm list packages");//取得命令行输出…

11.2.1-通货膨胀CPI

文章目录 1. 什么是CPI2. 在哪里获取CPI数据3. CPI的同比、环比到底是什么意思&#xff1f;4. 计算购买力侵蚀5. 复利计算 微不足道的小事也会引发惊人的结果&#xff0c; 每念及此&#xff0c; 我就认为世上无小事。——布鲁斯巴登&#xff08;Bruce Barton&#xff09; 核心内…

大数据Flink实时计算技术

1、架构 2、应用场景 Flink 功能强大&#xff0c;支持开发和运行多种不同种类的应用程序。它的主要特性包括&#xff1a;批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。在启用高可用选项的情况下&#xff0c;它不存在单点失效问题。事实证明&#…

Scrum敏捷研发迭代式开发

Scrum是一个迭代式增量软件开发过程&#xff0c;是敏捷方法论中的重要框架之一。它通常用于敏捷软件开发&#xff0c;包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括Scrum主管&#xff08;Scrum Master&#xff09;、产品负责人&#xff08;Product Owner&…

Dockerfile文件详细

Dockerfile 是一个文本文件&#xff0c;里面包含组装新镜像时用到的基础镜像和各种指令&#xff0c;使用dockerfile 文件来定义镜像&#xff0c;然后运行镜像&#xff0c;启动容器。 构建镜像步骤 ① 编写一个 dockerfile 文件 ② 使用 ​​​docker build​​​构建镜像 ③ …

引领未来商业:循环购模式的创新突破-微三云门门

尊敬的创业者们&#xff0c;我是微三云门门。今天&#xff0c;我将与您深入探讨一种崭新的商业模式——循环购模式。该模式在私域流量领域取得了巨大成功&#xff0c;仅用6个月时间就创造了超过400万的用户数量&#xff01; 循环购商业模式的核心概念涵盖三个关键要素&#xf…

C语言(第三十一天)

6. 调试举例1 求1!2!3!4!...10!的和&#xff0c;请看下面的代码&#xff1a; #include <stdio.h> //写一个代码求n的阶乘 int main() {int n 0;scanf("%d", &n);int i 1;int ret 1;for(i1; i<n; i){ret * i;}printf("%d\n", ret);return …

C语言的发展及特点

1. C语言的发展历程 C语言作为计算机编程领域的重要里程碑&#xff0c;其发展历程承载着无数开发者的智慧和创新。C语言诞生于20世纪70年代初&#xff0c;由计算机科学家Dennis Ritchie在贝尔实验室首次推出。当时&#xff0c;Ritchie的目标是为Unix操作系统开发一门能够更方便…

WPF读取dicom序列:实现上一帧、下一帧、自动播放、暂停

一、整体设计概况 创建WPF程序使用.Net Framework4.8定义Image控件展示图像增加标签展示dcm文件信息规划按钮触发对应的事件:上一帧、下一帧、自动播放、暂停、缩放、播放速率二、页面展示 三、代码逻辑分析 Windows窗体加载Loaded事件:生成初始图像信息Windows窗体加载Mous…