我正在使用 AWS 并尝试将大型应用程序重新映射到小部分 - 总之:我正在将单体应用程序转换为基于微服务的应用程序。
所以我想使用面向公众的负载均衡器,这样我就可以把一些路径路由到其他环境。
例如:
domain.com/service1到 Elastic Beanstalk 中的另一个负载平衡应用程序和
domain.com/service2到 Elastic Beanstalk 中的不同负载均衡应用程序。
我能够将应用程序负载均衡器连接到另一个 EC2 实例。但我尝试将其连接到 Elastic Beanstalk 创建的另一个负载均衡器,但没有成功。
有人知道如何实现这一目标吗?
答案1
您不会在 ELB 和 Elastic Beanstalk 的功能集中找到对此的本机支持。
我建议使用 HAProxy 进行基于路径的转发,将流量发送到您的 Elastic Beanstalk 应用程序。为了实现高可用性,您需要在位于简单 Classic ELB 后面的一对 EC2 实例上运行此功能,并对 HAProxy 本身进行运行状况检查。
以下是 HAProxy 的一般示例:
# match incoming request based on path in url
acl service1 path_beg /service1
acl service2 path_beg /service2
# send matched request to a specific backend
use_backend service1 if service1
use_backend service2 if service2
# define the target backends (Elastic Beanstalk LB DNS, likely)
backend service1 :80
option httpchk /haproxy_health_check
server service-1 service1.aws.mybeanstalklb.com:80
backend service2 :80
option httpchk /haproxy_health_check
server service-2 service2.aws.mybeanstalklb.com:80
如果你不想在 EC2 上自行运行此程序,你可以尝试将此配置注入 HAProxy docker 镜像并在EC2 容器服务。