【发布时间】:2018-01-14 19:09:03
【问题描述】:
我有 8 个 Spring Boot 微服务,它们在内部相互调用。其他微服务的调用dns,定义在每个服务的application.properties文件中。
假设,微服务 A 由 A -> a.mydns.com 和 B-> b.mydns.com 等代表
所以基本上每个微服务都包含一个 ELB 和两个 HA 代理(分布式 在两个区域中)和 4 个应用服务器(分布在两个区域中)。
目前我正在创建新的绿色服务器(仅限应用服务器)并从 HA 代理级别切换实时流量。在这种情况下,当新版本的微服务在测试时,它也会暴露给现场客户。
理想情况下,方法应该是,为每个微服务创建整个服务器结构,包括 ELB 和 HA 代理,对吗?
但是我怎么会面临使用测试 dns 进行测试的挑战。我可以将 ELB 映射到测试 dns。 那么,在 application.properties 文件中硬编码的外部微服务 dns 呢?
在这种情况下我应该采取什么方法?
【问题讨论】:
-
如果你必须一次更换所有的微服务,那意味着你没有微服务。
-
您为什么要在生产环境中进行测试?你应该有单独的测试环境。
-
@JakubKania 我没有必要一次部署所有微服务。可能是 1,但部署的微服务对其他微服务有内部调用。还有一个测试环境来测试应用程序,但是一旦部署完成,还有一个 BVT 在生产环境中运行
-
为每个微服务使用单独的 ELB 是一种浪费。您应该使用应用程序负载均衡器 (ALB),一个 ALB 就足以满足所有微服务的需求。每个微服务都会通过 ALB 互相调用
标签: java amazon-web-services spring-boot microservices blue-green-deployment