目录

1. Elastic Load Balancing

1.1 负载均衡器概述

1.2 负载均衡器比较

2. Listener和Target group

2.1 Listener

2.2 Target group

3. Classic Load Balancer

3.1 环境准备

3.2 创建CLB

4. Application Load Balancer

4.1 基于路径路由的使用场景

4.2 环境准备

4.3 创建ALB

4.4 ALB基于路径的路由功能

5. Network Load Balancer

5.1 NLB路由算法

5.2 创建NLB

5.3 测试


1. Elastic Load Balancing

1.1 负载均衡器概述

截止现在,AWS支持三种类型的负载均衡器: Classic Load Balancer(已停用)、网络负载均衡器、应用程序负载均衡器和网关负载均衡器。

其中Classic Load Balancer为上一代负载均衡器,它目前只被推荐使用于仍然有实例运行在ec2-classic网络的场景,如果你需要的不是这种场景,那AWS建议使用网络负载均衡器 或 应用程序负载均衡器,因为Classic Load Balancer所提供的功能是可以被网络负载均衡器或应用程序负载均衡器替代的。

1.2 负载均衡器比较

官网上关于负载均衡器的对比可以参考:Elastic Load Balancing 功能对比。

总而言之,如果需要灵活管理应用程序,AWS建议使用 Application Load Balancer。

如果应用程序需要实现极致性能和静态 IP,AWS建议使用Network Load Balancer。

如果现有应用程序构建于ec2-classic网络内,AWS建议使用Classic Load Balancer。

2. Listener和Target group

2.1 Listener

侦听器是负载均衡器用于检查连接请求的进程。

侦听器使用配置的协议和端口检查来自客户端的连接请求(如配置侦听器检查连接请求为HTTP 协议 和 80端口),侦听器定义的规则决定负载均衡器如何将请求路由到其已注册目标。

2.2 Target group

侦听器将客户端请求路由到目标组,然后目标组使用指定的协议和端口号将请求路由到一个或多个注册目标,如 EC2 实例。

在创建侦听器规则时,可以指定目标组和条件。满足规则条件时,流量会转发到相应的目标组。

但创建侦听器指定的目标组只适用于新一代的负载均衡器,也就是应用程序负载均衡器以及网络负载均衡器。

3. Classic Load Balancer

3.1 环境准备

以下需要准备两台EC2,并安装配置NGINX,假设分别为lin和lin2。

关于如何通过putty连接EC2以及切换到root可以参考:EC2日志内容推送至CloudWatch。

1) 切换到root安装NGINX。

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmyum -y install nginx

2) 修改默认INDEX文件。

cd /usr/share/nginx/htmlvim index.html

两台EC2的<h1>分别更新为:

<h1>Welcome to BAS blog1!</h1>

<h1>Welcome to BAS blog2!</h1>

3) 启动NGINX。

systemctl start nginx

4) 访问:http://54.219.12.182/index.html ,其中ip为EC2的公网ip。

3.2 创建CLB

进入到elb创建页面可以看到,clb已经被停用了。

4. Application Load Balancer

Application Load Balancer 在请求级别(第 7 层)运行,根据请求的内容将流量路由到目标(EC2 实例、容器、IP 地址和 Lambda 函数)。

Application Load Balancer 非常适合 HTTP 和 HTTPS 流量的高级负载平衡,提供高级请求路由,旨在交付现代应用程序架构,包括微服务和基于容器的应用程序,通过确保始终使用最新的 SSL/TLS 密码和协议来简化和提高应用程序的安全性。

关于ALB的官方文档可以参考:What is an Application Load Balancer。

以下主要是总结应用程序负载均衡器基于路径的路由功能。

4.1 基于路径路由的使用场景

在应用程序负载均衡器的监听器配置规则条件:

1) 可以将负载均衡器收到的bas.com/images/请求 ,URL中包括/images/的请求路由到server 1;

2) 可以将负载均衡器收到的的bas.com/data/请求,URL中包括/data/的请求路由到server 2 。

这种方式就是应用程序负载均衡器的基于路径的路由功能。

通过基于路径的路由功能,您可以将您的应用程序构造为较小的服务,并根据 URL 内容将请求路由到正确的服务。

4.2 环境准备

1) 将图片文件image.jpg复制到EC2的/usr/share/nginx/html/images,将数据文件userinfo.txt复制到/usr/share/nginx/html/data。

2) 访问http://54.183.53.8/images/image.jpg, http://54.183.53.8/data/userinfo.txt

4.3 创建ALB

1) 因为必须要创建目标组,所以进入到创建目标组页面,目标类型选择实例。

2)  进入到创建页面, 假设这里命名为bas-alb。

3) 确保TG的目标是healthy状态的。

4) 根据ALB的DNS访问数据。

4.4 ALB基于路径的路由功能

上一步我们创建了一个ALB和两个TG,TG分别指定了EC2的实例lin和lin2。所以以下通过编辑ALB的侦听器来实现不同的url转发到不同的TG,也就是基于路径的路由功能。

1) 确保lin有images和data文件,lin2只有包含data,并且文件内容包含server lin2。

2) 添加ALB的侦听器规则:data和images。

3) 访问images的时候会转发至lin,访问data的时候会转发至lin2。

5. Network Load Balancer

NLB,在 OSI模型的第四层运行(传输层),它只支持传输层的协议:TCP、UDP、以及TLS。

5.1 NLB路由算法

  1. 对于 TCP 流量,NLB基于协议、源 IP 地址、源端口、目标 IP 地址、目标端口和 TCP 序列号,使用流哈希算法选择目标;
  2. 当来自客户端的 TCP 连接具有不同的源端口和序列号,这样可以路由到不同的目标;
  3. 对于每个单独的 TCP 连接在连接的有效期内路由到单个目标。

5.2 创建NLB

1) 创建一个弹性IP。

2) 创建NLB目标组tg-lin。

3) 创建NLB bas-nlb,其中网络映射的IPv4选择上面的弹性ip。

5.3 测试

这个弹性IP,实际是分配给了我们创建NLB选择的可用区us-west-1a的NLB的网络接口上,也可以称其为NLB的节点。默认情况下,每个负载均衡器节点仅在其可用区中的已注册目标之间分配流量。如果启用了跨区域负载均衡,则每个负载均衡器节点会在所有启用的可用区中的已注册目标之间分配流量。

1) 访问NLB的DNS,http://bas-nlb-8a86ec6fa6f95824.elb.us-west-1.amazonaws.com/index.html,可以确认NLB已经正常运行。

2) 可以在EC2输入nslookup看下这个NLB目前被分配的IP地址是不是我们配置的弹性iP地址。

1. EC2安全组的80端口要打开,才可以正常访问到NGINX的资源。

2. 一个TG只能对应一个ALB,也就是如果ALB1侦听器绑定了TG1的话,那ALB2就不能再使用TG1了。

1. 关于ALB的侦听器规则可以参考官网文档:Listeners for your Application Load Balancers。

2. 关于ALB转发到Route53可以参考:关于AWS Alb和Route53的使用 小结。

关于AWS负载均衡器的使用相关推荐

  1. AWS负载均衡器的健康检查机制

    负载均衡器使用指定的端口.协议和 ping 路径,每 隔 HealthCheckIntervalSeconds 指定的秒数向每个已注册目标发送一次运行状况检查请求.每个运行状况检 查请求都是独立的,并 ...

  2. AWS ALB ELB

    How Elastic Load Balancing works - Elastic Load Balancing 使用AWS Application Load Balancer实现基于主机名的路由分 ...

  3. 在AWS EKS部署ALB

    目录 一.前置条件 二.创建IAM OIDC提供商 三.安装`AWS Load Balancer Controller` 四.应用中部署ALB 参考 一.前置条件 在AWS EKS中service默认 ...

  4. Docker是世界上最牛逼的CaaS!

    Docker是世界领先的CaaS(Container-as-a-Service平台).Docker是目前集装箱生态系统中最主要的工具.容器是一种将软件与二进制文件以及使软件在共享操作系统时,独立运行所 ...

  5. 深度好文:Netflix奈飞微服务架构设计解析

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 来源:22j.co/dz54 1 概述 数年来,Netflix 一直是全球 ...

  6. 全面解析 Netflix 的微服务架构设计

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术 1简介 多年来,Netflix 一直是全球最出色的在线订阅制视频流 ...

  7. 镭速-文件传输系统,单机、负载均衡,使用外部AD域用户

    AD域对接配置:在安装启动镭速后,[登录镭速](www.raysync.cn)服务器的管理员控制台,在控制台中配置AD域对接信息. 数据库选择:单机部署模式下,镭速服务器支持配置SQLite或MySQ ...

  8. Serilog 最佳实践

    Serilog 最佳实践 概述 Serilog[1]是 Microsoft .NET 的结构化日志记录库,并已成为Checkout.com 上NET 的首选日志记录库.它支持各种日志记录目的地(称为接 ...

  9. Netflix如何在上万台机器中管理微服务?(史上最全)

    疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 < Java 高并发 三部曲 > 面试必备 + 大厂必备 + 涨薪必备 疯狂创客圈 经典图书 : <N ...

  10. 全面解析Netflix的微服务架构设计

    作者 | Cao Duc Nguyen 策划 | 万佳 本文描绘了 Netflix 流媒体服务的整体云架构图景,并从可用性.延迟.可扩展性和对网络系统或系统中断的适应性方面分析了系统的设计. 1 简介 ...

最新文章

  1. 网站SEO优化没有捷径!
  2. vue2.0-脚手架-todolist案例
  3. python输出para关键词占比_使用python操作word
  4. Mysql逻辑架构简介
  5. 【转载】VMware完全卸载
  6. 还在用iTunes管理iPhone这款软件帮你轻松解决
  7. 利用URL对网络资源进行下载(简制版)
  8. 微信小程序引入外部字体后编译包过大的问题解决
  9. Received status code 409 from server: Conflict
  10. 在线CHM阅读器(2)——文件提取及关键文件解析
  11. 两阶段目标检测详解--FasterRCNN
  12. 【7gyy】笔者支招:巧设安全模式防攻击
  13. LAMBDA表达式常用写法
  14. 邮箱激活功能,前台用户注册后需要登录邮箱激活账号才能够登录的,请简述激活过程,重点是安全性
  15. windows隐藏CMD窗口,使jar程序在后台执行
  16. kdj指标主要看哪个值_终于有人把KDJ指标讲通透了,简单实用,建议收藏
  17. 金庸感人的经典爱情对白
  18. 沪深交易所level2行情
  19. C++作业 设计一个程序实现油桶面积与体积的计算(构造函数与析构函数)
  20. 输出n个格子需要的麦粒数

热门文章

  1. 《东周列国志》第三十五回 晋重耳周游列国 秦怀嬴重婚公子
  2. VR眼镜连接android设备,VR眼镜怎么连接手机 VR眼镜使用教程
  3. 史上最好听的十首纯音乐推荐
  4. 34亿骗局!如何“杀死”萝卜章?
  5. 白萝卜烘干技术,白萝卜的干燥过程
  6. 乱世王者服务器维护,乱世王者微信541区风平浪静开服时间表_乱世王者新区开服预告_第一手游网手游开服表...
  7. mysql root权限_如何设置Mysql root权限
  8. 方维团购系统添加短信接口,方维团购系统短信接口开发
  9. iOS-QQ音乐播放器的简单实现
  10. 计算机英语四六级考试时间,2019年12月英语四六级考试时间