Amazon-Web-Services
將面向公眾的應用程序負載均衡器連接到私有負載均衡器
我正在使用 AWS 並試圖將一個巨大的應用程序重新映射到小部分 - 總之:我正在將一個單一的應用程序轉換為一個基於微服務的應用程序。
所以我想使用一個面向公眾的負載均衡器,在那裡我可以將一些路徑路由到其他環境。
例如:
domain.com/service1到 Elastic Beanstalk 中的另一個負載平衡應用程序和
domain.com/service2也可以連接到 Elastic Beanstalk 中的不同負載平衡應用程序。
我能夠將 Application Load Balancer 連接到另一個 EC2 實例。但是我嘗試將其連接到另一個由 Elastic Beanstalk 創建的負載均衡器,但沒有成功。
有沒有人對如何做到這一點有一些想法?
您不會通過 ELB 和 Elastic Beanstalk 的功能集找到對此的本機支持。
我建議使用 HAProxy 進行基於路徑的轉發,將流量發送到您的 Elastic Beanstalk 應用程序。為了高可用性,您需要在一對位於簡單經典 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 Container Service上執行容器。