1. 程式人生 > >Eureka的高可用(叢集)

Eureka的高可用(叢集)

eureka叢集

其實eureka的叢集是很簡單的一個事事情,就是Eureka服務之間的相互註冊就可以了。

首先我們看一下Eureka高可用的官方給出的架構圖,基於叢集配置的eureka

 在這就不解析圖的各種關係了,可以參考一下本人的微服務學習筆記(2)-- Eureka,裡面有詳細的解析。

那接下下我們看看怎麼搭建Eureka的高可用,首先Eureka的依賴必不可以少吧(具體的使用在這我也不多說了,同樣可以參考本人Eureka的筆記)

<!-- 加入spring cloud 的pom -->
<dependencyManagement>
    <dependencies>
	<dependency>
	    <groupId>org.springframework.cloud</groupId>
	    <artifactId>spring-cloud-dependencies</artifactId>
	    <version>Edgware.SR3</version>
	    <type>pom</type>
	    <scope>import</scope>
	</dependency>
    </dependencies>
</dependencyManagement>


<!-- 加入eureka的伺服器依賴包 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

application.yml配置如下(這是兩臺Eureka的叢集)

spring:
  application:
    name: microservice-eureka-server-ha
---
spring:
  profiles: peer1                                 # 指定profile=peer1
server:
  port: 8761
eureka:
  instance:
    hostname: peer1                               # 指定當profile=peer1時,主機名是peer1
  client:
    serviceUrl:
      defaultZone: http://peer2:8762/eureka/      # 將自己註冊到peer2這個Eureka上面去

---
spring:
  profiles: peer2
server:
  port: 8762
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka/
      
      

因為上面已經指定了域名,所以我們要在電腦上配置一下域名的對映。

在這個路徑下的,C:\Windows\System32\drivers\etc\hosts檔案修改

 本人是使用一個SwitchHosts的工具,其實原理就是修改上述的配置檔案的

到此,兩個Eureka的叢集服務已經搭建成功了。

多臺Eureka叢集的搭建

其實和兩臺Eureka叢集是一樣的,就是Eureka服務之間的相互註冊

application.yml配置如下(這是三臺Eureka的叢集)

spring:
  application:
    name: microservice-eureka-server
---
server:
  port: 8761   #指定埠
spring:
  profiles: peer1   #指定profile=peer1
#配置eureka的資訊
eureka:
  instance:
    hostname: peer1   #指定當profile=peer1時,主機的名字是peer1
  client:
    service-url:
      defaultZone: http://peer2:8762/eureka,http://peer3:8763/eureka  #將自己註冊到peer2這個Eureka服務上

---
server:
  port: 8762   #指定埠
spring:
  profiles: peer2   #指定profile=peer2
#配置eureka的資訊
eureka:
  instance:
    hostname: peer2   #指定當profile=peer2時,主機的名字是peer2
  client:
    service-url:
      defaultZone: http://peer1:8761/eureka,http://peer3:8763/eureka   #將自己註冊到peer1和peer2的Eureka服務上

---
server:
  port: 8763   #指定埠
spring:
  profiles: peer3   #指定profile=peer3
#配置eureka的資訊
eureka:
  instance:
    hostname: peer3   #指定當profile=peer3時,主機的名字是peer3
  client:
    service-url:
      defaultZone: http://peer2:8762/eureka,http://peer1:8761/eureka   #將自己註冊到peer2這個Eureka服務上

注意:多個註冊地址之間使用","隔開,一定是英語的逗號,而且不能有空格

 到這時候,三臺的叢集也搭建成功了,再多的也不用說了吧,就是以此類推的。

測試:

首先我們把這個專案package(我這是IDEA的,但eclipse也是一樣的,執行maven的package)

然後到你jar包的地方執行(需要開三個doc視窗)

java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1

java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3

如下:

注意:啟動前面兩個肯定會報錯的,因為Eureka他們之間相互註冊,而其他的服務還沒有啟動成功,所以肯定找不到要註冊的主機

三個都成功後我們訪問一下

http://peer1:8761/

http://peer2:8762/

訪問http://peer3:8763/

當我把Eureka3的服務關閉後,在Eureka服務1和2中,三就會變成不可用狀態

到此 Eureka的叢集搭建完畢