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,寫的還是挺具體的.

 

版權聲明:本文為博主原創文章,如需轉發請注明來源


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM