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

news2025/1/17 3:17:29

使用 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   = 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,指定了您的区域。

然后,定义了一个安全组(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.coloradmin.cn/o/926494.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Visio

Visio 简介Office Tool Plus教程 简介 Visio(Microsoft Visio)是微软公司开发的一款流程图和图表绘制软件。它主要用于创建各种类型的图表、流程图、组织结构图、平面图、网络图等,以帮助用户可视化和呈现复杂的信息、流程和关系。 Office …

智信数科SMS短信平台安装教程

智信SMS客户端下载 使用智信SMS短信平台前,需要前往公司官网或者百度网盘共享地址下载最新版本的短信平台。 下载地址一:公司官网 下载地址二:百度网盘共享(推荐) 智信SMS客户端安装 安装前,确保您已经正…

抖音seo短视频矩阵系统源码开发源代码分享--开源-可二开

适用于抖音短视频seo矩阵系统,抖音矩阵系统源码,短视频seo矩阵系统源码,短视频矩阵源码开发,支持二次开发,开源定制,招商加盟SaaS研发等。 功能开发设计 1. AI视频批量剪辑(文字转语音&#x…

Node基础--Node中的文件系统

我们学习了npm,这是Node中使用很频繁且重要的内容,下面一起来看看Node中的文件系统。 1.buffer缓冲区 (1).概述 从结构上看Buffer非常像一个数组,我们知道在javaScript中,数组是一个比较强大的内容。但是这里也存在着一个比较大的问题,如果你需要存在一张图,这一个时候需…

【音视频】 视频的播放和暂停,当播放到末尾时触发 ended 事件,循环播放,播放速度

video 也可以 播放 MP3 音频&#xff0c;当不想让 视频显示出来的话&#xff0c;可以 给 video 设置宽和高 1rpx &#xff0c;不可以隐藏 <template><view class"form2box"><u-navbar leftClick"leftClick"><view slot"left&q…

抖音短视频seo矩阵系统源码开发代码分享--开源

前言&#xff1a; 适用于抖音seo源码&#xff0c;抖音矩阵源码&#xff0c;抖音短视频seo源码&#xff0c;抖音短视频矩阵源码开发与实践等。 产品开发代码展示&#xff1a; <?php /** * Created by PhpStorm. * User: ikinvin * Date: 2021/2/24 * Time: 11:32 AM …

Ingress 响应超时504故障排除

Ingress 响应超时504故障排除 1. 故障现象: 在阿里云的ACK新上了一套系统.该系统有个将查询结果导出为excle并下载的功能,当第一次下载时等待1分钟后就跳出504,点击返回后再次下载可以正常下载. 2. 分析判断 根据504的页面应该是和Ingress配置相关和超时时间长短有关 3. …

【1448. 统计二叉树中好节点的数目】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一棵根为 root 的二叉树&#xff0c;请你返回二叉树中好节点的数目。 「好节点」X 定义为&#xff1a;从根到该节点 X 所经过的节点中&#xff0c;没有任何节点的值大于 X 的值。 示例 1&#…

vue实现富文本

效果图展示 一、安装依赖 npm install vue-quill-editor --save二、具体使用 html <template><!-- 富文本 --><quill-editorref"myQuillEditor"v-model"content":options"editorOption"blur"onEditorBlur($event)"…

力扣:73. 矩阵置零(Python3)

题目&#xff1a; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚…

net start mysql 提示:服务名无效 请键入NET HELPING 2185

解决办法&#xff1a; 使用windowr打开运行&#xff0c;输入services.msc, 可以看到名称是mysql80&#xff0c;而且服务已经启动

Vite知识体系

一、浅谈构建工具 1、前端工程的痛点 &#xff08;1&#xff09;前端项目的组成部分&#xff08;核心要素--文件资源&#xff09; ①逻辑代码&#xff1a;js、ts、jsx ②样式代码&#xff1a;css、scss、less ③静态资源&#xff1a;jpg、png、webp &#xff08;2&#xff0…

【打印流】常用方法以及应用场景

打印流常用方法以及应用场景 1.打印流是什么&#xff1f; 可以实现更方便、更高效地写数据&#xff0c;分为字节打印流PrintStream和字符打印流PrintWriter&#xff0c;使用方便&#xff0c;性能高效&#xff0c;底层封装了高效流 字节打印流PrintStream&#xff1a;继承Out…

自己搭建Minecraft服务器并通过cpolar内网穿透实现与公网小伙伴联机我的世界

文章目录 1. Java环境搭建2.安装我的世界Minecraft服务3. 启动我的世界服务4.局域网测试连接我的世界服务器5. 安装cpolar内网穿透6. 创建隧道映射内网端口7. 测试公网远程联机8. 配置固定TCP端口地址8.1 保留一个固定tcp地址8.2 配置固定tcp地址 9. 使用固定公网地址远程联机 …

Python遥感图像处理应用篇037 GDAL+Scikit-image遥感图像主成分分析PCA

1.计算效果图 使用多波段遥感图像进行主成分分析,这里使用了6个波段的数据计算和显示效果图如下:左边是原图像IR+R+G显示图,右边是计算得到的3个主成分组合显示的RGB图像。 2.计算方法详解 使用GDAL库读取和保存遥感图像,使用numpy对图像数据进行相应的变换和计算,使用…

App Inventor 2 开发 ChatGPT 对话App

ChatGPT大家应该不会陌生&#xff0c;它的回答内容非常的专业及深入&#xff0c;具有实际的可指导性。我们通过App Inventor 2开发一个简单的对话App&#xff0c;先看效果&#xff1a; App Inventor 2 ChatGPT教育领域对话演示 代码块如下&#xff1a; 用到的核心组件“ChatBot…

人工智能浅浅的入门

目录 人工智能——让机器具备人的思维 一、人工智能三学派&#xff08;主流方向——连接主义&#xff09; 1.行为主义 2.符号主义 3.连接主义 二、连接主义的神经网络设计过程 1.举例&#xff1a;神经元 2.大致过程 三、人工智能的理解与涉及的重要点 1.个人观点 2.M…

牛客网Verilog刷题 | 入门特别版本

文章目录 1、 VL1 输出12、VL2 wire连线3、 VL3 多wire连接4、VL4 反相器5、VL5 与门6、VL6 NOR 门7、VL7 XOR 门8、VL8 逻辑运算10、VL10 逻辑运算211、VL11 多位信号12、VL12 信号顺序调整13、VL13 位运算与逻辑运算14、VL14 对信号按位操作15、VL15 信号级联合并16、VL16 信…

【redis问题】Caused by: io.netty.channel

遇到的问题&#xff1a; 在使用 RedisTemplate 连接 Redis 进行操作的时候&#xff0c;发生了如下报错&#xff1a; 测试代码为&#xff1a; 配置文件&#xff1a; 问题根源&#xff1a; redis没有添加端口映射解决方案&#xff1a; 删除原来的redis容器&#xff0c;添加新…

【附安装包】Flash2015安装教程|装机必备

软件下载 软件&#xff1a;Flash版本&#xff1a;2015语言&#xff1a;简体中文大小&#xff1a;897.8M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨下载链接&#xff1a;https://pan.baidu.com/s…