Elastic Load Balancing (ELB) 笔记

Elastic Load Balancing (ELB) 笔记

目前我们已经将两台 Web 服务器放在两个不同的可用区,如何让使用者可以将这两台或是更多台的 Web 服务器是为是一台 Web 服务器,所以我们需要在 Web 服务器前放置一个负载均衡器,如图 1 所示,今天要介绍的是 Amazon 的负载均衡器 - Elastic Load Balancing (ELB)。

Elastic Load Balancing (ELB) 笔记_第1张图片
图 1 、具有 ELB 的应用程序架构

负载均衡器的目的是自动将传入的应用程序流量,分配到多个目标,例如 Amazon Elastic Compute Cloud (EC2) 实例、容器或 Internet 协议 (IP) 地址。而 Amazon 将 ELB 分成三种不同类型

Application Load Balancer (ALB)

  • 应用程序级别(第 7 层)
  • 支持基于内容的路由和在容器中运行的应用程序
  • 支持两种行业标准协议(WebSocket 和 HTTP/2)
  • 能够了解有关目标实例和容器运行状况的其他信息。

Network Load Balancer (NLB)

  • 每秒处理数以千万计的请求,同时以超低延迟保持高吞吐量。
  • 适合实现传输控制协议 (TCP) 流量负载均衡,且能够在每秒处理数百万请求的同时保持超低延迟。
  • 在连接级别运行(第 4 层)

Classic Load Balancer (CLB)

  • 可跨多个 Amazon EC2 实例提供基本的负载均衡
  • 在应用程序级别和连接级别运行
  • 非常适合内置于 Amazon EC2-Classic 网络的应用程序

安装应用程序

合理来说,当加装为 ELB 后, ELB 应该要在两台WEB服务器之间自动进行切换,为了要观察这个行为,我们需要一个应用程序来观察目前执行的主机是哪一台, Amazon EC2 实例有内建一个网址(http://169.254.169.254/latest/meta-data),使用者可以针对这个网址来查询这个 EC2 实例的相关设定数据,如实例 ID 、实例可用区等等,我们就可以透过这个方法来得知目前执行的 EC2 实例是哪一台。

使用 PuTTy 登入两台 EC2 实例,执行相同指令,用来查询这个 EC2 实例所在的可用区,可以发现两台 EC2 实例所呈现的结果不同,见图 2

curl http://169.254.169.254/latest/meta-data/placement/availability-zone

Elastic Load Balancing (ELB) 笔记_第2张图片
图 2 、查询 EC2 实例所在的可用区

将以上内容写成 php 程序代码,置于 EC2 实例首页,首先先使用 Putty 登入 EC2 实例,接着安装 web 服务器与 php ,并启动 web 服务器

# install web server and php
sudo yum -y install httpd php  
# start web server
sudo systemctl  start httpd

接着撰写首页,可以选择自己孰悉的 Linux 编辑器,如 vim 或是 nano

sudo vim /var/www/html/index.php

Elastic Load Balancing (ELB) 笔记_第3张图片
图 3 、设定 EC2 的首页

index.php 首页内容

"; # Availability Zone echo ""; ?>
Meta-DataValue
InstanceId" . file_get_contents($urlRoot . 'instance-id') . "
Availability Zone" . file_get_contents($urlRoot . 'placement/availability-zone') . "

接着就可以透过浏览器看到结果,不同的网址,所呈现的可用区跟实例ID是不同的

Elastic Load Balancing (ELB) 笔记_第4张图片
图 4 、检查 EC2 的首页画面

设定 ELB

进入 EC2 控制台,在左手选单下方选择负载平衡器,并在右边按下Create Load Balancer

Elastic Load Balancing (ELB) 笔记_第5张图片
图 5 、新增负载平衡器

我们选择 Application Load Balancer (ALB)

Elastic Load Balancing (ELB) 笔记_第6张图片
图 6 、选择Application Load Balancer

接下来可以发现需要六个步骤

  1. Configure Load Balancer: 建议先看一下图 1,可以发现负载平衡器会跨越两个可用区,因为唯有如此才能完成高可用性的设定,所以除了设定名字外,记得选择 VPC (PS:一个区域可以有多个 VPC )以及可用区

Name : ithomeALB
Availability Zones
VPC : vpc-0bb7004b67556d0da (172.16.0.0/16) | ithomeVPC
Availability Zones
ap-southeast-1a: subnet-0f1df807467b642f6 (ithome public subnet 1)
ap-southeast-1b: subnet-06f56dccb2a9cfcf0 (ithome public subnet 2)

Elastic Load Balancing (ELB) 笔记_第7张图片
图 7 、设定负载平衡器的涵盖范围

  1. Configure Security Settings: 没有设定
  2. Configure Security Groups: 设定安全组,选择先前设定的安全组,跟原来的 EC2 实例一样

Assign a security group: Select an existing security group
_ithome_web_SG _

Elastic Load Balancing (ELB) 笔记_第8张图片
图 8 、设定负载平衡器安全组

  1. Configure Routing: 设定要将收到的流量转给哪个对象,因为 AWS 会将这些对象设定成一个目标群,所以我们先指定一个目标群,到后面再来设定这个目标群的内容

Target group : New target group
Name : ithomeTargetGroup

Elastic Load Balancing (ELB) 笔记_第9张图片
图 9 、指定负载平衡器目标群

  1. Register Targets: 指定目标群的内容,将先前设定的两个 EC2 实例指定到上面新建立的目标群

Elastic Load Balancing (ELB) 笔记_第10张图片
图 10、指定负载平衡器目标群内容

  1. Review

完成设定后,记得在回到负载平衡器得主画面,这时候就可以看到刚刚建立的负载平衡器,这时候就可以直接复制 DNS Name 的字段,当作是网址,直接读取网页(图 11),但请注意,要等一段时间,因为 DNS 注册需要一段时间,所以可能要等五分钟后, DNS 的 TTL 到期后会再去抓取的时候,这时候网页才会正常(图 12)

Elastic Load Balancing (ELB) 笔记_第11张图片
图 11 、负载平衡器的内容

![观察负载平衡器所对应到的主机]](https://img-blog.csdnimg.cn/img_convert/659487363b66d711327d90a9256f8772.png)
图 12、观察负载平衡器所对应到的主机

你可能感兴趣的:(AWS,ELB,负载均衡,服务器,云计算)