Amazon web services Spring云微服务部署中的IP地址规范

Amazon web services Spring云微服务部署中的IP地址规范,amazon-web-services,amazon-ec2,spring-cloud,amazon-ecs,Amazon Web Services,Amazon Ec2,Spring Cloud,Amazon Ecs,我正在尝试开发SpringCloud微服务。我使用Zuul代理、Eureka服务器和Hystrix开发了一个springcloud项目的示例演示。我添加了我开发的服务作为Eureka服务器的客户端,并应用了路由。一切都很顺利。现在我需要在我的AWS Ec2机器上部署。在我的本地文件中,我在application.properties文件中添加了默认区域URL,如下所示: eureka.client.serviceUrl.defaultZone=http://localhost:8071/eure

我正在尝试开发SpringCloud微服务。我使用Zuul代理、Eureka服务器和Hystrix开发了一个springcloud项目的示例演示。我添加了我开发的服务作为Eureka服务器的客户端,并应用了路由。一切都很顺利。现在我需要在我的AWS Ec2机器上部署。在我的本地文件中,我在application.properties文件中添加了默认区域URL,如下所示:

eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/

当我移动到我的Ec2机器或使用AWS ECS时,如何修改此属于云的IP地址以进行正确配置?我还使用localhost:8090和8091,比如Zuul和Turbine dashboard项目等的这些端口。因此,当我部署到云时,我需要如何更改此URL?

我们使用域。因此,您可以将api.yourdomain.com的A记录指向支持您的服务的IP地址或负载平衡器别名

为什么??当我们决定更改基础设施时,我们可以更改DNS条目,而不是修改所有微服务的配置。我们最近从Eureka/Zuul转移到AWS的ALB。通过使用域,我们可以并行运行这两个环境,并在没有停机时间的情况下进行切换。如果新环境出现故障,旧环境仍在运行,我们可以通过简单的a-record更改进行缩减

在application.yml文件中,您可以配置不同的配置文件,以便在本地进行测试,然后在ECS中定义创建任务定义时要使用的配置文件

首先,这里是一个示例,说明如何配置application.yml文件,使其能够在不同的配置文件上运行: 第二:设置ECS以使用您的产品配置文件: 构建docker容器时,用新配置文件的名称标记它,在本例中为“prod”

第三:创建任务定义,并在repo URL中定义Docker标记,在容器运行命令中定义新配置文件:


现在,当您在本地计算机上处理应用程序时,您可以使用“localhost”运行它,当您将其部署到ECS时,您可以在容器定义中的run命令中定义要使用的新域/ip。是否使用弹性ip地址?
############# 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