首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Cloud Zookeeper和Feign部署在带有Fargate的AWS ECS上

问Spring Cloud Zookeeper和Feign部署在带有Fargate的AWS ECS上
EN

Stack Overflow用户
提问于 2020-12-19 03:24:06
回答 1查看 336关注 0票数 0

我有两个Spring Boot应用程序,都使用Spring Cloud Zookeeper进行服务发现,其中一个使用Feign与另一个进行对话,如here所述

当通过docker-compose部署在本地主机上并作为docker镜像时,所有这些都工作得很好,但当作为单独的任务/服务部署到AWS ECS (使用awsvpc的默认网络模式)时,两者之间的通信不再起作用,假客户端错误输出为:

代码语言:javascript
复制
feign.FeignException$NotFound: [404 ] during [GET] to [http://my-api/api/workspace-context] [APIKeyService#getContextFromAPIKey(String)]: [<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} ... (431 bytes)]

注意,这里的响应看起来有点像标准的Tomcat404响应。

我已经看到了存储在Zookeeper中的这个亚马逊网络服务部署的值,它似乎把一个IP地址作为address的值,我不确定这是正确的。

代码语言:javascript
复制
{
    "name": "my-api",
    "id": "323be0b7-8ad8-4061-846e-abcdac2bbbca",
    "address": "169.254.xxx.xxx",
    "port": 8080,
    "sslPort": null,
    ...

该IP地址与ECS任务关联的弹性网卡的公网IP和内网IP都不匹配。

如果我手动将该Zookeeper条目的address值替换为弹性网卡的公网IP,它会重新开始正常工作(但不会使用内网IP)。但很明显,在新的部署之后,它将再次被破坏。

感谢您的任何帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-19 04:01:02

Spring Cloud会猜测要使用的主机或IP地址。如果在包含公共IP的主机上设置了env var,则可以使用它来设置address。

代码语言:javascript
复制
spring.cloud.zookeeper.discovery.instanceIpAddress=${MY_IP_ENV_VAR}

否则,根据documentation,您可以将网络接口配置为忽略:

代码语言:javascript
复制
spring:
  cloud:
    inetutils:
      ignoredInterfaces:
        - docker0
        - ecs-eth0 #ecs private network
        - veth.*

或首选的IP地址范围:

代码语言:javascript
复制
spring:
  cloud:
    inetutils:
      preferredNetworks:
        - 192.168
        - 10.0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65362810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档