該系列項目整體介紹及源代碼請參照前面寫的一篇文章【springcloud學習(dalston.sr1)】項目整體介紹(含源代碼)(一)
這篇文章主要介紹多個eureka服務端的集群環境是如何搭建的。
(一)eureka的簡要說明
Eureka是用來進行服務注冊與發現的。類似于一棟寫字樓,有很多公司入駐,但入駐前需要先在大樓的物業處進行注冊登記。Eureka也分為服務端和客戶端,服務端是提供服務注冊和服務發現,通過訪問服務端,能獲取到一個服務注冊列表。客戶端則需要訪問服務端,以將自己注冊到服務端。類似于寫字樓的物業公司,通常自己不用注冊,但其他入駐的公司,需要在物業處進行注冊,其他公司在物業處,能獲取到注冊登記的公司列表。
(二)eureka服務端集群搭建
(1)新建3個module
這里通過了3個模塊,來模擬eureka服務端集群的搭建。首先在IDEA的springcloud2025項目中新建了3個module,如下圖。
(2)在新建號的module中,比如microservicecloud-eureka-7001模塊中,在POM引入相關依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud2025</artifactId><groupId>com.company</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>microservicecloud-eureka-7001</artifactId><!-- Eureka-server服務端 --><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency></dependencies></project>
(3)主機域名地址映射修改,通過修改路徑C:\Windows\System32\drivers\etc\hosts文件,增加3個域名映射。這樣訪問http://eureka7001.com的效果等同于訪問http://localhost(當然訪問http://eureka7002.com的效果也同樣等同于訪問http://localhost),這里只是在一臺機器上模擬不同域名的主機,所以就這樣處理了下。實際項目場景中應該是不同的主機。
(4)編寫microservicecloud-eureka-7001項目的application.yml文件,如下圖,其中配置了當前項目的端口號為7001,并設置了eureka服務端主機名稱為eureka7001.com(這里另外2個eureka服務的主機名分別是eureka7002.com、eureka7003.com,這里涉及到主機域名地址映射修改,后面會提到)。需要注意的是服務端自己不注冊自己,也不需要檢索服務,所以配置項eureka.client.register-with-eureka和eureka.client.fetch-register的值都為false,由于是集群搭建,也需要提供另外兩個eureka服務端的地址,也即配置eureka.client.service-url.defaultZone=http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/。由于當前服務部署的主機對應域名為eureka7001.com,這里的defaultZone就需要配置成另外兩個http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/,這樣是為了起到集群的作用(如果不做eureka集群,則這里的地址直接填寫為本機地址即可,也即http://localhost:7001/eureka)。
server:port: 7001eureka:instance:hostname: eureka7001.com #eureka服務端的實例名稱client:register-with-eureka: false #false表示不向注冊中心注冊自己fetch-register: false #false表示自己端就是注冊中心,我的職責就是維護服務實力,并不需要去檢索服務service-url:defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ # http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與erueka server交互的地址查詢服務和注冊服務,都需要依賴于這個地址
(5)在啟動類上加@EnableEurekaServer注解,已啟用eureka服務,并表明當前服務是eureka的服務端。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class EurekaServer7001Application {public static void main(String[] args) {SpringApplication.run(EurekaServer7001Application.class, args);}
}
項目結構如下:
(6)經過以上步驟,項目microservicecloud-eureka-7001就配置好了。參照這個項目,同樣新建另外兩個microservicecloud-eureka-7002和microservicecloud-eureka-7003。需要注意的是配置文件信息稍有差別。比如microservicecloud-eureka-7002的配置文件為
server:port: 7002eureka:instance:hostname: eureka7002.com #eureka服務端的實例名稱,如果沒有做eureka集群,這里直接填localhost即可client:register-with-eureka: false #false表示不向注冊中心注冊自己fetch-register: false #false表示自己端就是注冊中心,我的職責就是維護服務實力,并不需要去檢索服務service-url:defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/ #設置與erueka server交互的地址查詢服務和注冊服務,都需要依賴于這個地址
microservicecloud-eureka-7003的yml配置文件為
server:port: 7003eureka:instance:hostname: eureka7003.com #eureka服務端的實例名稱client:register-with-eureka: false #false表示不向注冊中心注冊自己fetch-register: false #false表示自己端就是注冊中心,我的職責就是維護服務實力,并不需要去檢索服務service-url:defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/ #設置與erueka server交互的地址查詢服務和注冊服務,都需要依賴于這個地址
(7)然后可以啟動項目了,首先啟動microservicecloud-eureka-7001。需要注意的是由于構建的是集群項目,所以這個項目啟動時,另外2個項目還未啟動,所以控制臺可能報如下錯誤,可以暫時忽略。此時再依次啟動另外microservicecloud-eureka-7002項目和microservicecloud-eureka-7003項目(啟動microservicecloud-eureka-7002、microservicecloud-eureka-7003時,由于前面已經啟動了microservicecloud-eureka-7001項目,所以這兩個項目啟動過程中不會報以下錯誤)
3個項目啟動完成后,我們可以在瀏覽器中輸入http://eureka7001.com:7001訪問(這里依賴于前面第3部配置的主機名和地址映射,或者直接輸入http://localhost:7001也能訪問),看到如下頁面,即表示eureka服務啟動正常了。類似的在瀏覽器中輸入http://eureka7002.com:7002和http://eureka7003.com:7003也是類似的效果
(8)通過上述步驟,由3個項目搭建的eureka服務端集群就搭建好了。