eureka 高可用集群配置搭建--配置问题导致运行不成功

近来本地搭建eureka的集群环境遇到诸多问题,为了巩固学的东西,在此记录下这些解决方案,话不多说,上代码。

1.首先是pom.xml文件,主要是 spring-boot-starter-web ,spring-cloud-starter-netflix-eureka-server

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.gongdafang</groupId>
    <artifactId>serverdemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>serverdemo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!--<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
View Code

2.我使用了yaml文件,因为它结构清晰易懂,配置内容字符量比properties文件少,主要还是因为可以一个文件多个环境配置

#集群配置
spring:
  profiles:
    active: peer3
---
server:
  port: 8081

spring:
  profiles: peer1
  application:
    name: z1-eureka
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer2:8082/eureka/,http://peer3:8081/eureka/
  instance:
    hostname: peer1

---
server:
  port: 8082

spring:
  profiles: peer2
  application:
    name: z2-eureka

eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:8081/eureka/,http://peer3:8083/eureka/
  instance:
    hostname: peer2

---
server:
  port: 8083

spring:
  profiles: peer3
  application:
    name: z3-eureka

eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:8081/eureka/,http://peer2:8082/eureka/
  instance:
    hostname: peer3
View Code

3.运行main 

4.上面的三步骤已经将本地集群设置基本完成了,但是光写完代码,运行有问题那也是很头疼的一件事啦,嘿嘿,现在就总结下我遇到过的问题和解决方案吧

1. WARN 2364 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_Z2-EUREKA/windows10.microdone.cn:z2-eureka:8082 - registration failed Cannot execute request on any known server

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

2. There was a problem with the instance info replicator

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

  

① 因为本地设置了多个server端(如peer1,peer2),而instance.hostname是唯一标识 ,此时需要配一下本地的host文件。Windows的host在/etc/host,mac的在/private/etc

我是用windows为例。cmd里敲notepad "%systemroot%/system32/drivers/etc/hosts" 回车

 ②在idea中多次启动同一个项目,启动设置修改

③对于idea运行时需要设定指定参数,如图,当运行不同节点时,需要指定对应节点   --spring.profiles.active=peer1

 

 5.以上是我用idea出现的问题,注意如果运行非最后一个server端时,服务会启动成功但是还是报错(如下出错),是因为他注册的某个服务还未启动导致,可以不用管,等所有服务都注册成功后,服务会自动注册成功的,贴上运行成功的页面吧

ERROR 5796 --- [tbeatExecutor-0] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://peer2:8082/eureka/}

com.sun.jersey.api.client.ClientHandlerException: org.apache.http.NoHttpResponseException: peer2:8082 failed to respond

6.除了使用编程工具运行项目外,还可采用控制台命令的形式

① 切换目录到你的项目根目录然后运行 mvn install生产jar包

也可以用 idea打包

控制台切换到你的jar 包 位置 java -jar 你的jar包 .jar    针对集群环境命令  java -jar 你的jar包 .jar --spring.profiles.active=xxx

 ②第二种方法,可以直接 切换目录到你的项目根目录,然后运行 mvn spring-boot:run

以上是我搭建环境时遇到的问题,百度搭建环境的相关步骤,没有一个完整的步骤,有丢丢费脑子,哈哈哈。不过还是有学习收获的。除了使用idea,使用eclipse的同学在运行时,是需要配置运行服务端设置的,可以借鉴文档https://www.cnblogs.com/syuf/p/9561798.html,写的还是挺具体的.

版权声明:本文为博主原创文章,如需转发请注明来源

猜你喜欢

转载自www.cnblogs.com/gyf178/p/11484073.html
今日推荐