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他們之間相互註冊,而其他的服務還沒有啟動成功,所以肯定找不到要註冊的主機
三個都成功後我們訪問一下
當我把Eureka3的服務關閉後,在Eureka服務1和2中,三就會變成不可用狀態
到此 Eureka的叢集搭建完畢