无法注册多个尤里卡实例 [英] Unable to register multiple instance of eureka

查看:75
本文介绍了无法注册多个尤里卡实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建两个Eureka服务器实例.但是当我运行它时,它们无法相互注册.我遇到的错误是:

I am trying to create two instance of Eureka server.But when i run it they are unable to register each other. Error i am getting is:

com.netflix.discovery.DiscoveryClient:从eureka服务器获取所有实例注册表信息2017-11-02 15:51:14.125错误34 --- [main] c.n.d.s.t.d.RedirectingEurekaHttpClient:请求执行错误

com.netflix.discovery.DiscoveryClient : Getting all instance registry info from the eureka server 2017-11-02 15:51:14.125 ERROR 34 --- [ main] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error

com.sun.jersey.api.client.ClientHandlerException:java.net.ConnectException:连接被拒绝(连接被拒绝)在com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187)〜[jersey-apache-client4-1.19.1.jar!/:1.19.1]

com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused (Connection refused) at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar!/:1.19.1]

主要应用文件是:

@SpringBootApplication
@EnableEurekaServer
public class RegistrationServer {
	public static void main(String[] args) {
		System.setProperty("spring.config.name", "registration-server");

		SpringApplication.run(RegistrationServer.class, args);
	}
}

registration-server.yml是:

registration-server.yml is:

---
spring.profiles: server-1
    
eureka:
  instance:
    hostname: localhost #eureka-server
  server:
    enableSelfPreservation: false
  client:
    register-with-eureka: true
    fetch-registry: true
    serviceUrl:
     defaultZone: http://server-2:2424/eureka/
     

server:
  port: 2323   # HTTP (Tomcat) port
  
  
  
spring:
 application:
  name: eureka-server1
---

spring.profiles: server-2
    
eureka:
  instance:
    hostname: localhost #eureka-server
  server:
    enableSelfPreservation: false
  client:
    register-with-eureka: true
    fetch-registry: true
    serviceUrl:
     defaultZone: http://server-1:2323/eureka/
     

server:
  port: 2424   # HTTP (Tomcat) port
  
  
  
spring:
 application:
  name: eureka-server2
---

docker-compose文件为:

docker-compose file is:

version: '2'
services:
  lb:
   image: dockercloud/haproxy
   volumes:
     - /var/run/docker.sock:/var/run/docker.sock
   ports:
     - "80:80"
     - "1936:1936"

  eureka-service-1:
    image: qaregistry.test.com/registration-server:0.0.2
    ports:
     - "2323:2323"
    environment:
     - APPBINARY=registration-server.jar
     - "SPRING_PROFILES_ACTIVE=server-1"
    extra_hosts:
     - "server-1:127.0.0.1"
     - "server-2:127.0.0.1"
    entrypoint:
     - /usr/bin/jarrun.sh
     - QA

  eureka-service-2:
    image: qaregistry.test.com/registration-server:0.0.2
    ports:
     - "2424:2424"
    environment:
     - APPBINARY=registration-server.jar
     - "SPRING_PROFILES_ACTIVE=server-2"
    extra_hosts:
     - "server-1:127.0.0.1"
     - "server-2:127.0.0.1"
    entrypoint:
     - /usr/bin/jarrun.sh
     - QA

pox.xml是:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
    <groupId>com.test</groupId>
   <artifactId>registration-server</artifactId>
    <version>0.0.2</version>

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.5.RELEASE</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.7</java.version>
    </properties>

    <dependencies>
		<dependency>
			<!-- Setup Spring Boot -->
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<!-- Setup Spring MVC & REST, use Embedded Tomcat -->
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		
		<dependency>
			<!-- Spring Cloud starter -->
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter</artifactId>
		</dependency>
		<dependency>
			<!-- Eureka service registration -->
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka-server</artifactId>
		</dependency>
		
	</dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Brixton.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            
        </dependencies>
    </dependencyManagement>

    <build>  
     <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

                     <!-- added by linux team for docker integration with maven -->
                        <plugin>
                                <groupId>com.spotify</groupId>
                                <artifactId>docker-maven-plugin</artifactId>
                                <version>0.4.13</version>
                                <configuration>
                                        <serverId>dockerhub</serverId>
                                        <imageName>qaregistry.test.com/${project.artifactId}:${project.version}</imageName>
                                         <pullOnBuild>true</pullOnBuild>
                                         <registryUrl>https://qaregistry.test.com</registryUrl>
                                        <baseImage>qaregistry.test.com/test-jdk:8u121</baseImage>
                                        <maintainer>USER user@test.com</maintainer>
                                        <labels>
                                                <label>ProductName=${project.build.finalName}</label>
                                        </labels>
                                        <user>test</user>
                                        <entryPoint>["/usr/bin/jarrun.sh"]</entryPoint>
                                        <resources>
                                           <resource>
                                                  <targetPath>/data/test/run/</targetPath>
                                                  <directory>${project.build.directory}</directory>
                                                  <include>${project.build.finalName}.jar</include>
                                          </resource>
                                        </resources>        
                                </configuration>
                        </plugin>

        </plugins>
    </build>
  
 
 
</project>

eureka的两个实例,即server-1和server-2都运行良好.但他们没有互相注册.

附加了屏幕截图以获取更多信息:服务器-1
服务器2

推荐答案

尝试按如下所示修改您的registration-server.yml,您在 defaultZone 之前错过了 ONE 空格这两个.yml文件.顺便说一句,这些文件中仍然存在许多语法错误.

Try to revise your registration-server.yml as follows, you missed ONE space before defaultZone for both .yml files. BTW, there are still many syntax errors in those files.

对于eureka-server-1:

For eureka-server-1:

eureka:
  ...
  client:
    ...
    serviceUrl:
      defaultZone: http://server-2:2424/eureka/

对于eureka-server-2:

For eureka-server-2:

eureka:
  ...
  client:
    ...
    serviceUrl:
      defaultZone: http://server-1:2323/eureka/

这是我的eureka服务器设置之一,两台服务器相互注册非常正常:

Here comes one of my eureka server settings, it works pretty fine for both servers to register to each other:

spring:
  application:
    name: registry

server:
  port: 2323

eureka:
  server:
    eviction-interval-timer-in-ms: 15000
  client:
    fetch-registry: true
    register-with-eureka: true
    serviceUrl:
      defaultZone: ${eureka_url:http://localhost:2424/eureka}
  instance:  
    instance-id: ${spring.application.name}:${random.value} 
    hostname: ${eureka_host:localhost} 
    secure-port: ${server.port}
    non-secure-port-enabled: true
    non-secure-port: ${server.port}

这篇关于无法注册多个尤里卡实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆