为了节省成本,有可能将多个应用共享(复用)一个负载均衡实例,使用同一个公网IP地址和端口对外暴露,但仍希望通过转发策略将请求转发到对应的应用。本文介绍多应用共享负载均衡实例和端口时,如何使用域名实现流量的转发。
背景信息
在ECS集群中,使用同一个端口的服务,仅HTTP监听协议支持流量分发。
SLB支持HTTP协议,支持通过HTTP请求的域名和URL进行流量分发,如下图所示,SLB的IP地址绑定了abc***.com和xyz***.com,两个应用所属的服务器组分别绑定到abc***.com和xyz***.com,SLB接收到流量后,会根据HTTP请求的域名进行流量分发,如果域名是abc***.com,会转发到服务器组A所属的应用App1,如果域名是xyz***.com,则会转发到服务器组B所属的应用App2。

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

操作流程
下面介绍一下为2个不同的应用绑定同一个SLB,通过配置不同的域名实现流量分发的流程。
- 创建SLB实例edas-test-slb。具体操作,请参见创建实例。 
- 在EDAS控制台创建ECS类型的应用spring-cloud-provider,为该应用配置公网负载均衡,监听协议要选择HTTP,端口为80,将转发策略配置为 - provider.test.com。
- 为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并配置域名转发策略
为第一个应用绑定负载均衡实例,并配置监听端口、虚拟服务器组及域名转发策略。
- 登录EDAS控制台,在左侧导航栏单击。
- 在应用列表页面的顶部菜单栏选择地域,并在页面上方选择微服务空间,在集群类型列表中选择ECS集群,然后在应用列表中单击目标应用名称。
- 在基本信息页签的应用设置区域,单击负载均衡(公网)右侧的添加。说明 如果您已经配置过负载均衡实例,则在此处会显示负载均衡实例的IP和端口信息,您可单击修改进入配置页面修改负载均衡实例信息,或单击解绑解除与当前负载均衡实例的绑定。
- 在添加负载均衡(公)配置向导中配置负载均衡实例。 - 在选择负载均衡页签中选择负载均衡类型为ALB或CLB,然后在负载均衡(公网)的下拉列表中选择您创建的SLB实例,然后单击下一步。 
- 在选择配置监听页签中配置监听端口,然后单击下一步。 - 当您负载均衡类型选择为ALB时,只支持选中已有的监听端口。负载均衡类型为CLB时,有以下两种情况可选: - 如果想使用为选定SLB实例配置过的监听端口,选择选择已有监听端口,并在下方选择已有的监听端口。 
- 如果没有为选定的SLB实例配置过监听端口,或想为当前应用配置一个新的监听端口,选择添加新监听端口,并为该SLB实例新建一个监听。 - 监听参数说明: - 参数 - 说明 - 协议 - 选择HTTP。如果负载均衡类型为ALB,请参见添加HTTP监听。如果负载均衡类型为CLB,请参见添加HTTP监听 说明- 负载均衡服务监听规定了如何将请求转发给后端服务器。EDAS中部署的应用在使用负载均衡时,需要选择监听协议。HTTP协议需要对数据内容进行识别,如Web应用、小型的手机游戏等。 - 前端端口号 - 负载均衡实例对外提供服务的端口。 重要- 如果想添加的前端端口号已经被其他监听协议占用,请另外设置一个端口号,或者需登录SLB控制台删掉该监听端口后,再在EDAS控制台上重新创建。 - 健康检查路径(URI) - 负载均衡检查后端应用存活状态的URI。默认为/_ehc.html。请根据应用输入正确的健康检查路径,具体操作,请参见配置和管理CLB健康检查。 - 后端端口号 - 应用的服务端口,不可设置。 
 
- 在配置服务器组与转发策略页签中配置SLB实例的虚拟服务器组和基于域名的转发策略,然后单击下一步。 - 参数 - 描述 - 默认服务器组 - 默认服务器组不支持配置转发策略,所以在使用域名实现流量分发时,不可以选择默认服务器组,只能选择虚拟服务器组。 - 现有虚拟服务器组 - 如果想使用为选定的SLB实例创建过的虚拟服务器组,请执行以下操作: - 选择现有虚拟服务器组,并在下方选择已有的虚拟服务器组。 
- 配置转发策略。 - 如果想使用为该虚拟服务器组配置过的转发策略,选择修改当前虚拟服务器组的转发策略选项,并选中已有转发策略。 
- 如果该虚拟服务器组没有配置过转发策略,或想要为其新增转发策略,选择新增转发策略,并在转发策略右侧的文本框中输入域名和路径规则。 
 
 - 新建虚拟服务器组 - 如果没有为选定的SLB实例配置过虚拟服务器组,或想为当前应用配置一个新的虚拟服务器组,请执行以下操作: - 选择新建虚拟服务器组,并输入虚拟服务器组名称。 
- 选择新增转发策略,并在转发策略右侧的文本框中输入域名和路径规则。 
 
- 在确定变更页签中查看设置的SLB实例信息,无误后,单击确认变更。
 
- 验证当前应用通过设置的域名转发策略能否正常访问第一个应用,具体操作,请参见结果验证。 
为第二个应用绑定SLB并配置域名转发策略
登录EDAS控制台,在ECS集群应用的基本信息页签的应用设置区域,重复为第一个应用绑定SLB并配置域名转发策略的操作,为第二个应用和第一个应用绑定相同的负载均衡实例和监听端口,设置不同于第一个应用的虚拟服务器组及域名转发策略。