高可用集羣部署 Eureka
服務註冊中心。java
使用 idea
開發工具建立一個 SpringBoot
項目,添加 Eureka Server
依賴便可, pom.xml
配置文件以下所示:node
...... <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR1</spring-cloud.version> </properties> <dependencies> <!--Eureka Server--> <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-test</artifactId> <scope>test</scope> </dependency> </dependencies> ......
咱們本章主要是完成 Eureka Server
的集羣配置,因此只須要添加 spring-cloud-starter-netflix-eureka-server
依賴便可。spring
在入口類 XxxApplication
上添加 @EnableEurekaServer
註解來啓用 Eureka Server
服務以及實例化一些依賴,修改以下所示:sql
@SpringBootApplication @EnableEurekaServer public class SpringCloudEurekaHighApplication { //.... }
依賴已經添加完成,接下來咱們就須要在 application.yml
內編寫相關配置信息,由於測試環境都在咱們本機,有兩種方式能夠模擬測試同時運行:windows
spring.profiles.active
爲了方便演示,咱們使用的第二種方式,主要是感受再去建立一個項目沒有必要,那咱們的 profiles
環境該怎麼配置呢?請繼續往下看。架構
咱們在 src/main/resources
目錄下建立名爲 application-node1.yml
的配置文件,在該配置文件內添加以下配置:併發
# Eureka 客戶端配置 eureka: client: service-url: defaultZone: http://node2:10002/eureka/ instance: # 配置經過主機名方式註冊 hostname: node1 # 配置實例編號 instance-id: ${eureka.instance.hostname}:${server.port}:@project.version@ # 集羣節點之間讀取超時時間。單位:毫秒 server: peer-node-read-timeout-ms: 1000 # 服務端口號 server: port: 10001
繼續在 src/main/resources
下建立一個名爲 application-node2.yml
的配置文件,內容以下所示:app
# Eureka 客戶端配置 eureka: client: service-url: defaultZone: http://node1:10001/eureka/ instance: # 配置經過主機名方式註冊 hostname: node2 # 配置實例編號 instance-id: ${eureka.instance.hostname}:${server.port}:@project.version@ # 集羣節點之間讀取超時時間。單位:毫秒 server: peer-node-read-timeout-ms: 1000 server: port: 10002
下面咱們先來講下 node1
、 node2
主機名的配置方式,而後再說下爲何實現了集羣的效果?maven
Mac
或者 Linux
配置方式分佈式
若是你使用的是 osx
系統。能夠找到 /etc/hosts
文件並添加以下內容:
127.0.0.1 node1 127.0.0.1 node2
通常狀況下配置完成後就會生效,若是你的配置並無生效,你能夠嘗試重啓。
Windows
配置方式
若是你使用的是 windows
系統,你能夠修改 C:\Windows\System32\drivers\etc\hosts
文件,添加內容與 Mac
方式一致。
application-node1.yml
eureka.client.service-url.defaultZone
這個配置參數的值,配置的是 http://node2:10002/eureka/
,那這裏的 node2
是什麼呢?其實一看應該能夠明白,這是們在 hosts
文件內配置的 hostname
,而 端口號
咱們配置的則是 10002
,根據 hostname
以及 port
咱們能夠看出,環境 node1
註冊到了 node2
上。
application-node2.yml
在 node2
環境內配置 eureka.client.service-url.defaultZone
是指向的 http://node1:10001/eureka/
,一樣 node2
註冊到了 node1
上。
經過這種相互註冊的方式牢靠的把兩個 服務註冊中心
綁定在了一塊。
咱們先來運行測試下 Eureka Server
的集羣是否可行?下一章節咱們再來說解 把服務提供者註冊到Eureka集羣
,測試步驟以下:
Maven Projects -> Lifecycle
)cd
項目 target
目錄node1
環境:java -jar hengboy-spring-cloud-eureka-high-0.0.1-SNAPSHOT.jar --spring.profiles.active=node1
cd
項目的 target
目錄下,經過以下命令啓動 node2
環境:java -jar hengboy-spring-cloud-eureka-high-0.0.1-SNAPSHOT.jar --spring.profiles.active=node2
http://node1:10001
查看 node1
環境的 Eureka
管理中心http://node2:10002
查看 node2
環境的 Eureka
管理中心效果以下圖所示:
集羣相互註冊效果
歡迎工做一到五年的Java工程師朋友們加入Java架構開發: 855835163 羣內提供免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代!