当前位置: 首页 > 知识库问答 >
问题:

Netflixeureka客户端使用私有DNS而不是AWS ec2中的公共DNS或公共IP注册eureka发现服务器

陶博涉
2023-03-14

我正在使用spring cloud实现微服务Netflix堆栈。一切都很顺利,但有一个问题。

我的discovery服务器托管在数字海洋水滴上。我所有来自数字海洋的尤里卡客户反应都很好。但是我的一个客户托管在aws ec2 midium实例中。在运行我的客户端后,它成功地与eureka服务器连接。Eureka服务器在仪表板中显示我的实例,但它的状态是显示私有DNS,而不是公共DNS或公共IP。由于这个原因,我的zuul网关没有与那个aws实例连接。

我的问题是:

  • 我的eureka客户端如何使用公共IP或公共DNS与我的eureaka发现服务器连接
  • 这个问题也存在于我的eureka客户端的docker部署

以下是我的eureka客户的application.yml文件:

# Spring properties
spring:
  application:
    name: product-service

# HTTP Server
server:
  port: 9090
  servlet:
      context-path: /product-service

my_message:server 5050

# Discovery Server Access
eureka:
  client:
    serviceUrl:
                  defaultZone: http://xx.xx.xx.xx:8080/discovery-server/eureka/
    instance:
      leaseRenewalIntervalInSeconds: false

management:
  security:
    enabled: false

共有1个答案

董俊
2023-03-14

是的,最后我解决了我的问题并在我的服务器中解决了这个问题。

问题分析:

  • 在docker案例中,eureka客户端使用其内部ip和端口向eureka服务器注册。
  • 在aws ec2案例中,eureka客户端使用其私有ip地址和端口向eureka服务器注册

对于这两种情况,Netflixribbon都使用他们提供的ip调用eureka客户端。因此,ribbon未能调用预期的客户端。

解决方案:

为eureka实例提供预期的IP地址并使用该IP地址与eureka服务器连接。

只需在eureka clients application.yml文件中添加以下行:

eureka:
  instance:
    prefer-ip-address : true
    ip-address : xx.xx.xx.xx

谢谢:)

 类似资料:
  • 一个和我一起工作的人给了我EC2证书,让我登录到他的EC2控制台。不是我设计的。一些实例显示公共dns名称,而另一些实例具有空白的公共dns。我希望能够连接到具有空白公共DNS的实例。我一直无法理解为什么这些显示为空白。

  • pom.xml 主应用程序类 Application.Properties eureka客户端设置 pom.xml Application.Properties 我在eureka-server仪表板(http://localhost:8761)中没有看到向Eureka server注册的micro-service-currency-exchange-service 为什么eureka客户端没有注册

  • 我有一个Angular应用程序,有一个API,它连接并调用一个在服务器上建立的数据库,该数据库具有一个公共IP。 第二,你有什么想法为什么会发生这种情况吗? 谢谢。

  • 我启动了一个亚马逊网络服务 (AWS) EC2 实例 t2.micro,该实例必须启动到 VPC 中。 VPC 将“自动分配公有 IP”设置为“是”。 域名解析:是 DNS 主机名:是 但是在EC2仪表板上,该实例仍然有一个空白的公共DNS和公共IP。我已经多次尝试重新启动该实例,但它仍然没有被分配一个公共IP。我们的AWS帐户附带的5个弹性IP已经被使用。在不使用弹性IP的情况下,有可能获得分配

  • 我已经在Eureka发现服务器、Config服务器和其他Eureka客户机中启用了ssl。配置服务器能够安全地向Discovery Server注册,Eureka仪表板显示配置服务器的正确健康检查URL信息。配置服务器有一个硬编码端口,但是,其他Eureka客户端被配置为分配一个随机端口。这些客户端可以注册到Eureka服务器,但是,这些客户端的端口在Eureka仪表板上显示为0。我不知道我错过了

  • 我正在aws中运行openshift 我有一个主节点和两个节点。如何向aws公共IP公开服务?我可以在内部访问服务: 我怎么把它暴露给公共IP呢?是否可以在openshfit web控制台中完成?我尝试使用https://docs.openshift.com/container-platform/3.4/dev_guide/expose_service/expose_internal_ip_ser