为了节省成本,有可能将多个应用共享(复用)一个负载均衡实例,使用同一个公网IP地址和端口对外暴露,但仍希望通过转发策略将请求转发到对应的应用。本文介绍多应用共享负载均衡实例和端口时,如何使用域名实现流量的转发。

背景信息

说明 在ECS集群中,使用同一个端口的服务,仅HTTP监听协议支持流量分发。

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

JJHKH

例如有两个应用:一个提供订单查询的功能的应用User,一个提供用户登录的应用Order,这两个应用对外提供同一个公网IP地址,且端口默认都是 80 。您可以通过为两个应用设置不同的域名(u.domain.com为应用User的域名,o.domain.com为应用Order的域名),来实现流量分发。

通过域名实现流量分发

操作流程

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

  1. 创建SLB实例edas-test-slb。具体操作,请参见创建实例
  2. 在EDAS控制台创建ECS类型的应用spring-cloud-provider,为该应用配置公网负载均衡,监听协议要选择HTTP,端口为80,将转发策略配置为provider.test.com
  3. 为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应用。

为第一个应用绑定SLB并配置域名转发策略

为第一个应用绑定负载均衡实例,并配置监听端口、虚拟服务器组及域名转发策略。

  1. 登录EDAS控制台,在左侧导航栏单击应用管理 > 应用列表
  2. 应用列表页面的顶部菜单栏选择地域,并在页面上方选择微服务空间,在集群类型列表中选择ECS集群,然后在应用列表中单击目标应用名称。
  3. 基本信息页签的应用设置区域,单击负载均衡(公网)右侧的添加
    说明 如果您已经配置过负载均衡实例,则在此处会显示负载均衡实例的IP和端口信息,您可单击修改进入配置页面修改负载均衡实例信息,或单击解绑解除与当前负载均衡实例的绑定。
  4. 添加负载均衡(公)配置向导中配置负载均衡实例。
    1. 选择负载均衡页签中选择负载均衡类型ALBCLB,然后在负载均衡(公网)的下拉列表中选择您创建的SLB实例,然后单击下一步
    2. 选择配置监听页签中配置监听端口,然后单击下一步

      当您负载均衡类型选择为ALB时,只支持选中已有的监听端口。负载均衡类型CLB时,有以下两种情况可选:

      • 如果想使用为选定SLB实例配置过的监听端口,选择选择已有监听端口,并在下方选择已有的监听端口。
      • 如果没有为选定的SLB实例配置过监听端口,或想为当前应用配置一个新的监听端口,选择添加新监听端口,并为该SLB实例新建一个监听。

        监听参数说明:

        参数 说明
        协议 选择HTTP。如果负载均衡类型为ALB,请参见添加HTTP监听。如果负载均衡类型为CLB,请参见添加HTTP监听
        说明 负载均衡服务监听规定了如何将请求转发给后端服务器。EDAS中部署的应用在使用负载均衡时,需要选择监听协议。HTTP协议需要对数据内容进行识别,如Web应用、小型的手机游戏等。
        前端端口号 负载均衡实例对外提供服务的端口。
        重要 如果想添加的前端端口号已经被其他监听协议占用,请另外设置一个端口号,或者需登录SLB控制台删掉该监听端口后,再在EDAS控制台上重新创建。
        健康检查路径(URI) 负载均衡检查后端应用存活状态的URI。默认为/_ehc.html。请根据应用输入正确的健康检查路径,具体操作,请参见配置和管理健康检查
        后端端口号 应用的服务端口,不可设置。
    3. 配置服务器组与转发策略页签中配置SLB实例的虚拟服务器组和基于域名的转发策略,然后单击下一步
      参数 描述
      默认服务器组 默认服务器组不支持配置转发策略,所以在使用域名实现流量分发时,不可以选择默认服务器组,只能选择虚拟服务器组。
      现有虚拟服务器组 如果想使用为选定的SLB实例创建过的虚拟服务器组,请执行以下操作:
      1. 选择现有虚拟服务器组,并在下方选择已有的虚拟服务器组。
      2. 配置转发策略。
        • 如果想使用为该虚拟服务器组配置过的转发策略,选择修改当前虚拟服务器组的转发策略略,并选中已有转发策略。
        • 如果该虚拟服务器组没有配置过转发策略,或想要为其新增转发策略,选择新增转发策略,并在转发策略右侧的文本框中输入域名和路径规则。
      新建虚拟服务器组 如果没有为选定的SLB实例配置过虚拟服务器组,或想为当前应用配置一个新的虚拟服务器组,请执行以下操作:
      1. 选择新建虚拟服务器组,并输入虚拟服务器组名称
      2. 选择新增转发策略,并在转发策略右侧的文本框中输入域名和路径规则。
    4. 确定变更页签中查看设置的SLB实例信息,无误后,单击确认变更
  5. 验证当前应用通过设置的域名转发策略能否正常访问第一个应用,具体操作,请参见结果验证

为第二个应用绑定SLB并配置域名转发策略

登录EDAS控制台,在ECS集群应用的基本信息页签的应用设置区域,重复为第一个应用绑定SLB并配置域名转发策略的操作,为第二个应用和第一个应用绑定相同的负载均衡实例和监听端口,设置不同于第一个应用的虚拟服务器组及域名转发策略。