Spring Cloud Eureka 集羣搭建 - 以及發現一個 「直覺BUG」

首先解釋一下標題所說的「直覺BUG」,這個是我本身的定義。就是咱們直覺上認爲這是一個BUG,是一個錯誤,而實際並無出錯。java

好比下圖:spring

雖然出現報錯信息,可是,整個程序並無出錯。至於緣由,圖片上的文字已經很好的解釋了。windows

在此,再簡單的說一下。服務器

出現這種狀況的緣由是,咱們的程序已經啓動(已經出現紅框中此條日誌,表明程序已經啓動,因此程序自己沒有問題。),爲何會出現錯誤呢?app

是由於在此係統中,咱們要搭建的是集羣環境, 每一臺服務器在本身啓動以後,都要去鏈接集羣中的其餘服務器,以便於相互之間通信傳遞信息。maven

可是,咱們確定是按照次序啓動服務器,咱們無論先啓動哪一臺服務器,其餘的服務器都尚未準備就緒,因此確定會出現找不到要鏈接的服務器,因此會報錯。工具

這個錯誤根本不須要解決, 把全部的服務器所有啓動,整個集羣就能夠正常運行(由於出現的是鏈接錯誤,如今全部的服務器已經準備就緒,因此不會再一次出現鏈接錯誤,除非某臺服務器down掉。)。fetch

 

下面咱們看一下SpringCloudEureka集羣的搭建過程:spa

一、首先建立項目結構:(使用SpringBoot 1.5.10).net

 

二、在啓動程序類頭部加入注

package com.thunisoft.thunisoftregister;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class ThunisoftRegisterApplication {

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

 

三、編寫配置文件

spring:
  application:
    name: spring-cloud-eureka
  profiles: peer1
server:
  port: 8000
eureka:
  instance:
    hostname: peer1
  client:
    serviceUrl:
      defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
 fetch-registry: true register-with-eureka: true
---
spring:
  application:
    name: spring-cloud-eureka
  profiles: peer2
server:
  port: 8001
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/
 fetch-registry: true register-with-eureka: true
---
spring:
  application:
    name: spring-cloud-eureka
  profiles: peer3
server:
  port: 8002
eureka:
  instance:
    hostname: peer3
  client:
    serviceUrl:
      defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/
 fetch-registry: true register-with-eureka: true 

  以上配置中標紅的代碼段很重要,在此進行說明:

  一、fetch-registry:表示是否從eureka server獲取註冊信息,若是是單一節點,不須要同步其餘eureka server節點,則能夠設置爲false,但此處爲集羣,應該設置爲true,默認爲true,可不設置。

  二、register-with-eureka:表示是否將本身註冊到eureka server,由於要構建集羣環境,須要將本身註冊到及羣衆,因此應該開啓。默認爲true,可不顯式設置。

    

四、由於實在一臺機器上實驗,因此修改host文件(windows系統下、C:\Windows\System32\drivers\etc)

127.0.0.1       peer1
127.0.0.1       peer2
127.0.0.1       peer3

  增長如上三段

 

五、啓動註冊中心服務

5.一、可使用IDEA進行啓動

按照這個步驟添加三個啓動節點,注意: program arguments 參數依次更改成 peer2 、peer3,與配置文件中的 spring.application.files 參數值對應。

以後所有啓動。

 

5.二、打包成jar以後,使用 java -jar命令啓動

使用maven插件或gradl插件等等構件工具,將程序打包爲jar。而後執行如下命令

java -jar 生成的jar包名稱.jar --spring.profiles.active=peer1
java -jar 生成的jar包名稱.jar --spring.profiles.active=peer2
java -jar 生成的jar包名稱.jar --spring.profiles.active=peer3

 

注意: 以上兩種啓動方式都可以將集羣啓動,可是有一個問題要注意,就是上面提到「直覺BUG」問題。詳細參考上面。

 

六、查看集羣效果

相關文章
相關標籤/搜索