我正在尝试开发Spring Cloud微服务。我使用Zuul代理、Eureka服务器和Hystrix开发了Spring Cloud项目的示例演示。我将我开发的服务添加为Eureka服务器的客户端并应用了路由。所有这些都运行良好。现在我需要部署在我的AWSEc2机器中。在我的本地,我在application.properties文件中添加了默认区域URL,如下所示,
eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
当我移动到我的EC2机器或通过唱AWSECS时,我如何修改这个IP地址属于云以进行适当的配置?我也使用localhost:8090和8091,如Zuul和Turbine仪表板项目等这些端口。那么当我部署到云时,我需要如何更改URL呢?
我们使用域。因此,您可以将api.yourdomain.com的A记录指向支持您的服务的IP地址或负载均衡器别名。
为什么?当我们决定更改基础架构时,我们能够更改DNS条目,而不是修改我们所有的微服务配置。我们最近从尤里卡/祖尔转移到AWS的ALB。使用域允许我们并行和切换运行这两个环境,而不会停机。如果新环境出现故障,旧环境仍在运行,我们可以通过简单的A记录更改来削减。
在您的application. yml文件中,您可以配置不同的配置文件,以便您可以在本地进行测试,然后在ECS您可以定义创建任务定义时要使用的配置文件。
############# for running locally ################
server:
port: 1234
logging:
file: logs/example.log
level:
com.example: INFO
endpoints:
health:
sensitive: true
spring:
datasource:
url: jdbc:mysql://example.us-east-1.rds.amazonaws.com/example_db?noAccessToProcedureBodies=true
username: example
password: example
driver-class-name: com.mysql.jdbc.Driver
security:
oauth2:
client:
clientId: example
clientSecret: examplesecret
scope: webapp
accessTokenUri: http://localhost:9999/uaa/oauth/token
userAuthorizationUri: http://localhost:9999/uaa/oauth/authorize
resource:
userInfoUri: http://localhost:9999/uaa/user
########## For deployment in Docker containers/ECS ########
spring:
profiles: prod
datasource:
url: jdbc:mysql://example.rds.amazonaws.com/example_db?noAccessToProcedureBodies=true
username: example
password: example
driver-class-name: com.mysql.jdbc.Driver
prodnetwork:
ipAddress: api.yourdomain.com
security:
oauth2:
client:
clientId: exampleid
clientSecret: examplesecret
scope: webapp
accessTokenUri: https://${prodnetwork.ipAddress}/v1/uaa/oauth/token
userAuthorizationUri: https://${prodnetwork.ipAddress}/v1/uaa/oauth/authorize
resource:
userInfoUri: https://${prodnetwork.ipAddress}/v1/uaa/user