标签: netflix-eureka

Eureka - 无法得到回复 - 无法联系任何eureka节点

我有一个在端口8761(localhost:8761/eureka)上运行的Eureka服务器,我有一个Zuul应用程序,我想在eureka注册,但我一直得到同样的错误:

Can't get a response from http://localhost:8761/eurekaapps/ZUULSERVER
Can't contact any eureka nodes - possibly a security group issue?

java.lang.RuntimeException: Bad status: 404
        at com.netflix.discovery.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1155)
        at com.netflix.discovery.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1060)
        at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:606)
        at com.netflix.discovery.DiscoveryClient$HeartbeatThread.run(DiscoveryClient.java:1596)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

这是zuul应用程序的application.yml:

info:
  component: Zuul Server

eureka:
  server:
    enabled: true
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka
    registerWithEureka: true
    fetchRegistry: false  

endpoints:
  restart:
    enabled: true
  shutdown:
    enabled: true
  health:
    sensitive: false

zuul:
  route:
    discovery:
      url: http://localhost:9000/polaris/discovery 
      path: /polaris/discovery/**
    sla:
      url: http://localhost:9000/polaris/sla
      path: /polaris/sla/**
    stores: …
Run Code Online (Sandbox Code Playgroud)

netflix spring-cloud netflix-eureka netflix-zuul

4
推荐指数
1
解决办法
1万
查看次数

EnableEurekaServer导入不存在

我用gradle构建了一个Spring-Service,我想和它一起使用Eureka-Server。我的java文件看起来像这样:

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
public class Welcome {
   ....
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用gradle文件构建它时,它说:

org.springframework.cloud.netflix.eureka.server不存在

我正在寻找解决此问题的方法,但似乎一个人呆着。有人知道为什么它不起作用吗?我是否需要在build.gradle文件中写一些特定的东西?

java import spring netflix-eureka

4
推荐指数
1
解决办法
8735
查看次数

Zuul url映射与春天启动,尤里卡

我正在使用微服务架构构建Rest api.我有多个api用户,我们已经进入多个项目.除了我无法将面向用户的用户映射到zuul中的应用程序URL之外,我还准备好了其他所有内容.

面向网址的用户是:user/v1/accountholders/{id}/cards,我的应用程序的实际网址是/ user-cards/v1/accountholders/{id}/cards.

这里的id是路径变量.下面是其他类似的api url,所以如果有一种方法在zuul中一般配置它们.此外,应用程序URL的上下文根也是Eureka中的项目名称.

Other similar urls are:

client side:- /user/v1/accountholders/{id}/cards/{cardid}
application:- /user-cards/v1/accountholders/{id}/cards/{cardid}

client side:- /user/v1/accountholders
application:- /user-cardholder/v1/accountholder

client side:- /user/v1/accountholders
application:- /user-cardholder/v1/accountholder

client side:- /user/v1/accountholders/{id}
application:- /user-cardholder/v1/accountholders/{id}

client side:- /user/v1/accountholders/{id}/accounts
application:- /user-accounts/v1/accountholders/{id}/accounts

client side:- /user/v1/accountholders/{id}/accounts/{accid}
application:- /user-accounts/v1/accountholders/{id}/accounts/{accid}
Run Code Online (Sandbox Code Playgroud)

需要一些帮助来在zuul的属性或yml文件中进行设置.我还没有能够在映射中取得任何进展.任何输入都会有所帮助.

解决: - 从@Daniel获得输入后(这是接受的答案)这是我在zuul配置中使用的: -

zuul:
 routes:
   User-Cards: 
        path: /user/v1/accountholders/*/cards/**
        url: http://desktop-uvkv1ed:9999/user-cards/v1/accountholders
   User-Transactions1: 
        path: /user/v1/accountholders/*/transactions
        url: http://desktop-uvkv1ed:5555/user-transactions/v1/accountholders
        service-id: User-Transactions
   User-Transactions2:  
        path: /user/v1/accountholders/*/accounts/*/transactions
        url: http://desktop-uvkv1ed:5555/user-transactions/v1/accountholders
        service-id: User-Transactions
   User-Accounts: 
        path: /user/v1/accountholders/*/accounts/**
        url: http://desktop-uvkv1ed:7777/user-accounts/v1/accountholders
   User-Cardholders: 
        path: /user/v1/accountholders/**
        url: http://desktop-uvkv1ed:8888/user-cardholders/v1/accountholders
Run Code Online (Sandbox Code Playgroud)

spring-boot microservices spring-cloud netflix-eureka netflix-zuul

4
推荐指数
1
解决办法
5558
查看次数

命令行中的server.port无法使用spring cloud config server和eureka server

我正在研究春天可​​以.我现在拥有的是spring cloud配置服务器和eureka服务器.

配置服务器的代码

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

application.properties

spring.application.name=config-server
spring.cloud.config.server.git.uri=https://github.com/vincentwah/spring-cloud-config-repository/
server.port=7001
Run Code Online (Sandbox Code Playgroud)

Eureka服务器的代码

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

bootstrap.properties

spring.application.name=eureka-server
spring.cloud.config.uri=http://localhost:7001/
Run Code Online (Sandbox Code Playgroud)

eureka-server的配置是https://github.com/vincentwah/spring-cloud-config-repository/blob/master/eureka-server.properties

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
server.port=1111
Run Code Online (Sandbox Code Playgroud)

当我启动eureka服务器时,我想更改端口,所以我运行下面的命令

java -jar target/eureka-server-0.0.1-SNAPSHOT.jar --server.port=1234
Run Code Online (Sandbox Code Playgroud)

但是,服务器仍然使用端口1111启动

2017-01-03 14:04:11.324  INFO 6352 --- [      Thread-10] c.n.e.r.PeerAwareInstanceRegistryImpl    : Changing status to UP
2017-01-03 14:04:11.339  INFO 6352 --- [      Thread-10] e.s.EurekaServerInitializerConfiguration : Started Eureka Server …
Run Code Online (Sandbox Code Playgroud)

spring-boot spring-cloud netflix-eureka

4
推荐指数
1
解决办法
1551
查看次数

Spring Cloud:ZUUL + Eureka + NodeJS

我是Spring-Boot(Cloud)的新手,正在从事一个新项目。
我们的项目架构师已经设计了这个新应用程序,如下所示:

  1. 一个带有Angular-2的前端Spring Boot应用程序(也是微服务)。
  2. 一台Eureka服务器,其他微服务将连接到该服务器。
  3. ZUUL代理服务器,它将连接到前端和mircoservices。

在此处输入图片说明 现在,以下是我感到困惑的事情,我不能问他,因为他对我来说太老了:

  1. 我需要单独的ZUUL代理服务器吗?我的意思是,使用与ZUUL服务器相同的前端应用程序的利弊是什么?
  2. MicorService-1如何与Node的MicroService-1通信?一些博客建议使用Sidecar。但是又为什么呢?因为我可以直接从Microservice-1调用NodeJS-1的ReST api。
  3. (我知道,这很难猜测,但仍然会问)NodeJS服务(这不是传统服务)应该调用某些第三方api或从数据库检索数据。
    现在,我不明白的是为什么我们根本需要NodeJS代码?为什么我们不能在用Java编写的微服务中做同样的事情?

曾经在类似情况下工作过的人可以阐明我的疑问吗?

node.js spring-boot spring-cloud netflix-eureka spring-cloud-netflix

4
推荐指数
1
解决办法
4367
查看次数

尤里卡服务清单

我如何从尤里卡获取已经注册的服务?

以下代码提供了有关特定服务的详细信息。但是我想要注册服务的清单。

码:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }
}

@RestController
class ServiceInstanceRestController {

    @Autowired
    private DiscoveryClient discoveryClient;

    @RequestMapping("/service-instances/{applicationName}")
    public List<ServiceInstance> serviceInstancesByApplicationName(
            @PathVariable String applicationName) {
        return this.discoveryClient.getInstances(applicationName);
    }
}
Run Code Online (Sandbox Code Playgroud)

spring netflix-eureka

4
推荐指数
2
解决办法
4323
查看次数

com.mongodb.MongoSocketOpenException:异常打开套接字(MongoDB,Docker)

我尝试使用docker image启动我的应用程序(Spring Boot + Spring Cloud + Eureka + MongoDB),但我无法连接到MongoDB.

例外:

exception "com.mongodb.MongoSocketOpenException: Exception opening socket."
Run Code Online (Sandbox Code Playgroud)

我用execute命令启动我的应用程序:docker-compose up --build

Docker日志:

在此输入图像描述

application.yml:

# Spring properties
spring:
  application:
    name: car-service
  data:
    mongodb.host: localhost
    mongodb.port: 32769
    mongodb.uri: mongodb://localhost/test
    mongo.repositories.enabled: true


# Discovery Server Access
eureka:
    client:
      serviceUrl:
        defaultZone: http://localhost:8761/eureka/

# HTTP Server (Tomcat) Port
server: 
  port: 2220

error:
  whitelabel:
    enabled: false
Run Code Online (Sandbox Code Playgroud)

泊坞窗,compose.yml:

eureka:
  build: ./eureka-discovery-service
  ports:
    - "8761:8761"

mongodb:
  image: mongo:3.0.4
  ports:
    - "32769:32769"

postgresql:
  image: postgres:9.6.1
  ports:
    - "32770:32770"

gateway-service:
  build: …
Run Code Online (Sandbox Code Playgroud)

java mongodb spring-boot netflix-eureka docker-compose

4
推荐指数
2
解决办法
2万
查看次数

什么是春天尤里卡的instanceid?

我读到Eureka客户端的实例ID必须是唯一的,当我们希望运行同一个Eureka Client的多个实例时,我们添加了这个属性:

eureka.instance.instance-id==${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${random.value}}
Run Code Online (Sandbox Code Playgroud)

实例Id的意义是什么?上述行如何重要?

spring spring-cloud netflix-eureka

4
推荐指数
2
解决办法
5257
查看次数

com.sun.jersey.api.client.ClientHandlerException:java.net.ConnectException:拒绝连接:在Spring Boot中连接

我正在从http://www.javainuse.com/spring/spring-cloud-netflix-zuul-tutorial开发代码,尚未进行自定义。我不断收到下面提到的错误。因此,为避免此错误,我在application.properties文件中添加了以下内容。

eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
eureka.client.server.waitTimeInMsWhenSyncEmpty=0
Run Code Online (Sandbox Code Playgroud)

我添加以上属性的那一刻,我没有收到任何错误。

以下错误供参考-

com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
    at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar:1.19.1]
    at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.1.jar:1.19.1]
    at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.4.12.jar:1.4.12]
    at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.1.jar:1.19.1]
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.1.jar:1.19.1]
    at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) ~[jersey-client-1.19.1.jar:1.19.1]
    at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:509) ~[jersey-client-1.19.1.jar:1.19.1]
    at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplicationsInternal(AbstractJerseyEurekaHttpClient.java:194) ~[eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.getApplications(AbstractJerseyEurekaHttpClient.java:165) ~[eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73) ~[eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.executeOnNewServer(RedirectingEurekaHttpClient.java:118) ~[eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:79) ~[eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:119) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) …
Run Code Online (Sandbox Code Playgroud)

java spring-boot spring-cloud netflix-eureka

4
推荐指数
2
解决办法
1万
查看次数

Docker Swarm主机无法解析其他节点上的主机

我正在关注这个非常出色的教程:https//github.com/binblee/springcloud-swarm

当我将堆栈部署到包含单个节点(仅是管理器节点)的Docker群时,它可以完美运行。

docker stack deploy -c all-in-one.yml springcloud-demo
Run Code Online (Sandbox Code Playgroud)

我有四个Docker容器,其中一个是Eureka服务发现,其他三个容器都已成功注册。

问题是,当我将一个工作程序节点添加到群集时,然后将两个容器部署到工作程序,将两个容器部署到管理程序,并且部署到工作程序节点的服务找不到Eureka服务器。

java.net.UnknownHostException: eureka: Name does not resolve
Run Code Online (Sandbox Code Playgroud)

这是我的撰写文件:

version: '3'
services:
  eureka:
    image: demo-eurekaserver
    ports:
      - "8761:8761"

  web:
    image: demo-web
    environment:
      - EUREKA_SERVER_ADDRESS=http://eureka:8761/eureka

  zuul:
    image: demo-zuul
    environment:
      - EUREKA_SERVER_ADDRESS=http://eureka:8761/eureka
    ports:
      - "8762:8762"

  bookservice:
    image: demo-bookservice
    environment:
      - EUREKA_SERVER_ADDRESS=http://eureka:8761/eureka
Run Code Online (Sandbox Code Playgroud)

另外,我只能在其部署到的主机上访问Eureka Service Discovery服务器。

我认为使用“ docker stack deploy”会自动创建一个覆盖网络,在该网络中,所有公开的端口都将路由到运行相应服务的主机:

https://docs.docker.com/engine/swarm/ingress/

所有节点都参与入口路由网格。路由网格使群集中的每个节点都可以接受群集中运行的任何服务的已发布端口上的连接,即使节点上没有任何任务在运行。

这是docker service ls的输出:

manager:~/springcloud-swarm/compose$ docker service ls

ID                  NAME                           MODE                REPLICAS            IMAGE                                                  PORTS
rirdysi0j4vk        springcloud-demo_bookservice   replicated          1/1 …
Run Code Online (Sandbox Code Playgroud)

docker netflix-eureka docker-swarm

4
推荐指数
1
解决办法
2216
查看次数