SLB是阿里云首选的流量分发控制服务,具有高可用、可扩展、低成本、安全和高并发等特点。EDAS应用可以绑定SLB,以SLB作为流量入口,将应用实例作为SLB的后端,由SLB根据转发策略,将流量分发到不同到应用实例。

背景信息

EDAS支持在阿里云ECS集群和混合云ECS集群上托管应用,您可以使用EDAS的ECS环境托管Spring Cloud和Dubbo等主流Java微服务框架应用,也可以托管HSF框架应用。应用托管到EDAS平台后,应用的多个实例需要作为一个整体对外提供服务,因此应用的流量要有一个统一的入口,需要一个能够将访问流量根据转发策略分发到后端应用不同实例的流量分发控制服务。

BV

EDAS应用以SLB作为流量入口,将应用实例作为SLB的后端,由SLB根据转发策略,将流量分发到不同到应用实例。EDAS应用绑定SLB如下图所示:

BH

一个多机部署的应用能够结合SLB以保证应用的高可用,降低单台服务器的负载,实现流量的分发。SLB能够配置调度后端服务器的算法,如轮询、加权轮询。若开启会话保持功能,来自同一台客户端请求将转发到同一台应用服务器后端,以提高访问性能。

GHHJK

公网SLB和私网SLB的结合使用,能够提供Web应用的外部公网访问能力。后端服务器通过私网SLB进行通信,能够实现前端Web应用和后端应用分离,根据前后端服务性能需求的不同,各自进行后端服务器扩展。

GHNB

SLB基于端口创建监听,通过规划应用后端服务器组,支持多个应用复用一个SLB。此外,七层负载均衡支持基于域名和URL配置转发规则。

dsfsfdfds

应用跨区域部署并结合SLB能够支持应用跨区域冗灾。在不同地域下部署负载均衡实例,并分别挂载相应地域内不同可用区的ECS服务器。上层利用云解析做智能DNS,将域名解析到不同地域的负载均衡实例服务地址下,可实现全局负载均衡。当某个地域出现不可用时,暂停对应解析即可实现所有用户访问不受影响。

SLB支持对DDoS、SYN Flood、UDP Flood、ACK Flood、ICMP Flood、DNS Flood等攻击防护,七层负载均衡还能额外支持一键集成WAF(Web Application Firewall),让应用层更加可靠。

EDAS应用在使用负载均衡时,根据场景不同,分为以下使用方式:
  • 单应用独享负载均衡实例。
  • 多应用共享负载均衡实例。

本文以公网负载均衡实例为例,介绍上述两种使用场景,私网负载均衡实例的操作方式与公网一致,需要您注意的是验证的时候需要选择相对应的网络环境。

单应用独享负载均衡实例

在EDAS控制台中,允许为单个应用配置独享的负载均衡实例。如下图所示,在一个EDAS集群中部署了2个应用,分别是App1和App2,App1包含3个实例,App2包含2个实例,可以分别为每个应用绑定单独的SLB。在EDAS控制台中绑定SLB时,EDAS会为应用创建SLB服务器组,然后将应用实例所在的ECS添加到服务器组中。

由于每个应用独占一个SLB实例,因此应用可以独占SLB的资源和带宽,每个应用的QPS取决于单个SLB的规格。

  1. 创建SLB实例,本文以创建的SLB名称为edas-test-slb进行说明。具体操作,请参见创建实例
  2. 登录EDAS控制台创建ECS类型的应用。本文以创建的应用名称为spring-cloud-provider进行说明,具体操作,请参见创建和部署应用(ECS)
  3. 应用列表页面顶部菜单栏选择地域,在页面中选择微服务空间,在集群类型下拉列表中选择ECS集群,然后单击目标应用名称。
  4. 应用总览页面的访问方式配置区域,单击负载均衡(公网)右侧的加号图标。
  5. 在弹出的页面中,选择在1创建好的SLB。
  6. 选择监听配置,选择添加新监听端口,将协议配置为TCP,前端端口配置为80。
  7. 配置虚拟分组与转发策略。
  8. 单击确认变更

    创建完成后,在应用基本信息页可以查看SLB的地址和端口,也可以对SLB进行修改和解绑。

    EDAS中为应用绑定独享负载均衡实例的详细操作流程请参见应用独享负载均衡实例

多应用共享负载均衡实例

为了降低成本,减少SLB的实例数,EDAS允许为多个应用共享一个SLB。如下图所示,在一个EDAS集群中部署了2个应用,分别是App1和App2,App1包含3个实例,App2包含2个实例,两个应用共享同一个SLB实例。在EDAS控制台为应用绑定SLB时,EDAS会分别为每个应用在共享SLB实例中创建服务器组,然后将应用实例所在的ECS添加到服务器组中。由于多个应用共享同一个SLB实例,因此应用会共享SLB的资源和带宽。

dtyh

如图所示,SLB的入口流量可以根据流量转发规则将流量转发到不同的服务器组,从而将流量分发到不同的应用中。

EDAS支持两种流量分发规则:

  • 使用端口实现流量分发。
  • 使用域名或URL实现流量分发。

使用端口实现流量分发

多应用共享负载均衡实例最简单的方式是为不同的服务器组配置不同的监听端口。如下图所示,两个应用所属的服务器组分别监听80和81端口,SLB接收到流量后,会根据目的端口进行流量分发,如果目的端口是80端口,会转发到服务器组A所属的应用App1,如果目的端口是81端口,则会转发到服务器组B所数的应用App2。

erwtrg

下面介绍为2个不同的应用绑定同一个SLB,通过配置不同的端口号实现流量分发的流程。

  1. 创建SLB实例,本文以创建的SLB名称为edas-test-slb进行说明。具体操作,请参见创建实例
  2. 在EDAS控制台创建ECS类型的应用,本文以创建的应用名称为spring-cloud-provider和spring-cloud-consumer进行说明,具体操作,请参见创建和部署应用(ECS)
  3. 为spring-cloud-provider应用配置公网负载均衡,配置过程与单应用独享负载均衡实例中的同名应用的配置过程一致,监听协议依然选择TCP,端口为80,虚拟服务器组命名为spring-cloud-provider。
  4. 为spring-cloud-consumer应用配置公网负载均衡,配置过程与spring-cloud-provider应用类似,只是在配置端口时将端口配置为81。

配置完成后,假如SLB的IP地址为123.1.XX.XX,可以使用http://123.1.XX.XX:80访问spring-cloud-provider应用,使用http://123.1.XX.XX:81访问spring-cloud-consumer应用。

在EDAS中多应用共享负载均衡实例使用端口进行流量分发的详细操作流程请参见使用端口实现流量分发(共享负载均衡实例)

使用域名和URL实现流量分发

SLB支持HTTP协议,支持通过HTTP请求的域名和URL进行流量分发,如下图所示,SLB的IP地址绑定了abc***.comxyz***.com,两个应用所属的服务器组分别绑定到abc***.comxyz***.com,SLB接收到流量后,会根据HTTP请求的域名进行流量分发,如果域名是abc***.com,会转发到服务器组A所属的应用App1,如果域名是xyz***.com,则会转发到服务器组B所数的应用App2。

JJHKH

下面介绍一下为2个不同的应用绑定同一个SLB,通过配置不同的域名实现流量分发的流程。

  1. 创建SLB实例,本文以创建的SLB名称为edas-test-slb进行说明。具体操作,请参见创建实例
  2. 在EDAS控制台创建ECS类型的应用,本文以创建的应用名称为spring-cloud-provider和spring-cloud-consumer进行说明,具体操作,请参见创建和部署应用(ECS)
  3. 为spring-cloud-provider应用配置公网负载均衡,配置过程与单应用独享负载均衡实例中的同名应用的配置过程类似,监听协议要选择HTTP,端口为80,虚拟服务器组命名为spring-cloud-provider,将转发策略配置为provider.test.com
  4. 为spring-cloud-consumer应用配置公网负载均衡,配置过程与spring-cloud-provider应用类似,监听协议要选择HTTP,端口同样为80,只是将转发策略配置为consumer.test.com

配置完成后,假如SLB的IP地址为123.1.XX.XX,在Linux和macOS下可以通过修改/etc/hosts,添加一下条目进行Host绑定,方便测试。

123.1.XX.XX provider.test.com
123.1.XX.XX consumer.test.com

然后可以使用http://provider.test.com访问spring-cloud-provider应用,使用http://consumer.test.com访问spring-cloud-consumer应用。

在EDAS中多应用共享负载均衡实例使用域名和URL进行流量分发的详细操作流程请参见使用域名或URL实现流量分发(共享负载均衡实例)