文档

使用CLB访问ECS上的EDAS应用

更新时间:

当您使用EDAS将应用托管到多个ECS上,并且需要统一流量入口时,您可以为EDAS应用绑定CLB实例,将应用实例作为CLB的后端,由CLB根据转发策略将流量分发到不同的应用实例。

企业级分布式应用服务EDAS简介

企业级分布式应用服务EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的云原生PaaS平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持Spring Cloud和Apache Dubbo(以下简称Dubbo)等微服务运行环境,助力您的应用轻松上云。

详细介绍可参考什么是企业级分布式应用服务EDAS

CLB如何结合EDAS使用

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

EDAS集群

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

不同CLB

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

CLB+EDAS+公司网结合使用

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

CLB+EDAS:流量分发

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

基于域名和URL转发规则

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

CLB支持对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个实例,可以分别为每个应用绑定单独的CLB。在EDAS控制台中绑定CLB时,EDAS会为应用创建CLB服务器组,然后将应用实例所在的ECS添加到服务器组中。

单应用独享负载均衡实例

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

  1. 创建CLB实例,本文以创建的CLB名称为edas-test-CLB进行说明。具体操作,请参见创建实例

  2. 登录EDAS控制台创建ECS类型的应用。本文以创建的应用名称为spring-cloud-provider进行说明,具体操作,请参见在ECS集群中创建并部署应用

  3. 应用管理 > 应用列表页面顶部菜单栏选择地域,在页面中选择所属微服务空间,在集群类型下拉列表中选择ECS集群,然后单击目标应用名称。

  4. 基本信息页面中基本信息页签的应用设置区域,单击负载均衡(公网)右侧的添加

  5. 在弹出的页面中,选择创建好的CLB,并完成监听和服务器组配置。完成后单击确认变更

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

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

多应用共享负载均衡实例

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

多应用共享负载均衡实例

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

支持两种流量分发规则:

  • 使用端口实现流量分发。

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

使用端口实现流量分发

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

多应用共享负载均衡实例

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

  1. 创建CLB实例,本文以创建的CLB名称为edas-test-CLB进行说明。具体操作,请参见创建实例

  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。

配置完成后,假如CLB的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实现流量分发

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

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

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

  1. 创建CLB实例,本文以创建的CLB名称为edas-test-CLB进行说明。具体操作,请参见创建实例

  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

  5. provider.test.comconsumer.test.com域名添加A记录解析到CLB的公网IP地址。具体操作可参考设置A记录域名解析

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

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