@https://my.oschina.net/luoyaqi/blog/1605810
目標:搭建出三個節點的服務注冊中心集群,並實現一個服務的注冊。
目錄:
1、注冊中心集群配置(代碼里都有關鍵注釋,可自行查看);
2、運行集群;
3、hello-server服務注冊;
一、注冊中心集群配置
跟上一篇文章的單個服務注冊中心一樣,首先創建一個springboot項目eureka-server-cluster,然后在pom.xml文件中添加spring cloud的版本依賴和Eureka的服務端依賴(請查看上一篇文章的pom.xml配置,事實是兩個項目pom內容一樣),然后進行下面配置:
1、首先在項目的resource下創建三個節點的配置文件-目的為了后面啟動集群不同節點加載不同配置文件,服務注冊中心節點1的主機名為: eurekaserverone、服務注冊中心節點2的主機名為: eurekaservertwo、服務注冊中心節點3的主機名為: eurekaserverthree(因為這里我是在本機器環境下搭建的集群,所以三個節點的IP都是127.0.0.1,只是端口不同-具體端口見下面的配置文件,為了主機名能映射到IP地址,所以我們需要在系統的host文件中配置對應的映射如下圖示)。三個配置文件分別為:application-serverone.yml,application-servertow.yml,applicatioin-serverthree.yml 具體配置分別如下:
1) application-serverone.yml配置,這里服務注冊中心節點eurekaserverone注冊到服務注冊中心節點eurekaservertwo和服務注冊中心節點eurekaserverthree
# 配置服務名稱(因為這里作為服務中心集群,所以將自己作為服務向其它服務中心注冊自己,形成互相注冊的服務注冊中心) spring: application: name: eureka-server-cluster # 配置端口 server: port: 1111 eureka: # 配置本注冊中心的hostname instance: hostname: eurekaserverone # 本Eureka服務端將自己作為服務將要注冊的注冊中心的地址 client: serviceUrl: defaultZone: http://eurekaservertwo:1112/eureka/,http://eurekaserverthree:1113/eureka/
2) application-servertwo.yml配置,這里服務注冊中心節點eurekaservertwo注冊到服務注冊中心節點eurekaserverone和服務注冊中心節點eurekaserverthree
# 配置服務名稱(因為這里作為服務中心集群,所以將自己作為服務向其它服務中心注冊自己,形成互相注冊的服務注冊中心) spring: application: name: eureka-server-cluster # 配置端口 server: port: 1112 eureka: # 配置本注冊中心的hostname instance: hostname: eurekaservertwo # 本Eureka服務端將自己作為服務將要注冊的注冊中心的地址 client: serviceUrl: defaultZone: http://eurekaserverone:1111/eureka/,http://eurekaserverthree:1113/eureka/
3) application-serverthree.yml配置,這里服務注冊中心節點eurekaserverthree注冊到服務注冊中心節點eurekaserverone和服務注冊中心節點eurekaservertwo
# 配置服務名稱(因為這里作為服務中心集群,所以將自己作為服務向其它服務中心注冊自己,形成互相注冊的服務注冊中心)
spring:
application:
name: eureka-server-cluster
# 配置端口
server:
port: 1113 eureka: # 配置本注冊中心的hostname instance: hostname: eurekaserverthree # 本Eureka服務端將自己作為服務將要注冊的注冊中心的地址 client: serviceUrl: defaultZone: http://eurekaserverone:1111/eureka/,http://eurekaservertwo:1112/eureka/
2、在EurekaServerClusterApplication.java中即項目的啟動類中添加開啟此段為服務注冊中心注解@EnableEurekaServer,代碼如下:
package com.lyq.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; /** * @description : @EnableEurekaServer開啟此端為服務注冊中心 * @author : lyq * @date : 2018/01/10 */ @EnableEurekaServer @SpringBootApplication public class EurekaServerClusterApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerClusterApplication.class, args); } }
二、運行集群
1、將上面項目進行編譯打包后,現在到命令行環境去針對不同節點加載不同配置文件運行,具體命令如下
1)啟動服務中心節點eurekaserverone,命令如下:
java -jar eureka-server-cluster-0.0.1-SNAPSHOT.jar --spring.profiles.active=serverone
2)啟動服務中心節點eurekaservertwo,命令如下:
java -jar eureka-server-cluster-0.0.1-SNAPSHOT.jar --spring.profiles.active=servertwo
3)啟動服務中心節點eurekaserverthree,命令如下:
java -jar eureka-server-cluster-0.0.1-SNAPSHOT.jar --spring.profiles.active=serverthree
我這啟動成功后界面,這里也可以看注冊的信息(自己去看吧,這里我就不再敘述了)
2、三個命令窗口啟動成功后,可以在瀏覽器中輸入如下地址即可看到集群各節點的注冊信息:
http://eurekaserverone:1111/
http://eurekaservertwo:1112/
http://eurekaserverthree:1113/
其中一個界面的信息為(這里可以看到節點2和節點3都注冊到節點1上了,其他節點類似):
三、hello-server服務注冊
1、這里我直接使用的上一篇文章里面的eureka-clientone項目作為服務注冊到服務注冊中心集群中;
2、對項目eureka-clientone只對application.yml文件進行了如下修改:
# 配置注冊到注冊中心的服務名稱
spring:
application:
name: hello-service
## 配置服務注冊中心的地址(實踐單節點服務注冊中心案例時,放開此注釋,並且注釋下面的代碼)
#eureka:
# client:
# serviceUrl:
# defaultZone: http://eurekaserverone:1111/eureka/ # 配置服務注冊中心的地址(實踐服務注冊中心集群案例時,放開此注釋,並且注釋上面的代碼) eureka: client: serviceUrl: defaultZone: http://eurekaserverone:1111/eureka/
3、運行此項目后,再在瀏覽器輸入上述地址中的一個,例如我這輸入的是:
http://eurekaserverone:1111/
可以在注冊中心界面看到,此服務hello-service已經注冊進去了(注意:其它服務注冊中心節點eurekaservertwo、eurekaserverthree也都注冊了此服務),如下圖所示:
到這里集群服務注冊中心代碼已經完成,如有建議或疑問敬請在博客留言。接下來文章會對服務注冊中心集群的詳細配置一一進行分解。
服務注冊中心服務端代碼地址:https://github.com/camel-luo/eureka-server-cluster
服務注冊中心被注冊服務代碼:https://github.com/camel-luo/eureka-clientone