为了节省成本,有可能将多个应用共享(复用)一个负载均衡实例,使用同一个公网IP地址和端口对外暴露,但仍希望通过转发策略将请求转发到对应的应用。本文介绍多应用共享负载均衡实例和端口时,如何使用域名实现流量的转发。
背景信息
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并配置域名转发策略
为第一个应用绑定负载均衡实例,并配置监听端口、虚拟服务器组及域名转发策略。
为第二个应用绑定SLB并配置域名转发策略
登录EDAS控制台,在ECS集群应用的基本信息页签的应用设置区域,重复为第一个应用绑定SLB并配置域名转发策略的操作,为第二个应用和第一个应用绑定相同的负载均衡实例和监听端口,设置不同于第一个应用的虚拟服务器组及域名转发策略。