Eureka高可用集羣配置java
當註冊中心扛不住高併發的時候,這時候 要用集羣來扛;mysql
咱們再新建兩個module microservice-eureka-server-2002 microservice-eureka-server-2003spring
第一步:sql
pom.xml 把依賴加下:瀏覽器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<
dependencies
>
<
dependency
>
<
groupId
>org.springframework.cloud</
groupId
>
<
artifactId
>spring-cloud-starter-eureka-server</
artifactId
>
</
dependency
>
<!-- 修改後當即生效,熱部署 -->
<
dependency
>
<
groupId
>org.springframework</
groupId
>
<
artifactId
>springloaded</
artifactId
>
</
dependency
>
<
dependency
>
<
groupId
>org.springframework.boot</
groupId
>
<
artifactId
>spring-boot-devtools</
artifactId
>
</
dependency
>
</
dependencies
>
|
第二步:併發
2002 2003的主啓動類EurekaServerApplication_2002,EurekaServerApplication_2003複製修改下;app
第三步:spring-boot
前面單機的時候 eureka註冊中心實例名稱 是localhost,如今是集羣,不能三個實例都是localhost,這裏複雜的辦法是搞三個虛擬機,麻煩,這裏有簡單辦法,直接配置本機hosts,來實現本機域名映射;高併發
找到 C:\Windows\System32\drivers\etc 打開hosts,加配置 測試
127.0.0.1 eureka2001.java1234.com
127.0.0.1 eureka2002.java1234.com
127.0.0.1 eureka2003.java1234.com
第四步:
修改三個項目的application.yml文件,主要是修改 hostname和defaultZone,
2001修改:
server:
port: 2001
context-path: /
eureka:
instance:
# 單機 hostname: localhost #eureka註冊中心實例名稱
hostname: eureka2001.java1234.com # 集羣
client:
register-with-eureka: false #false 因爲該應用爲註冊中心,因此設置爲false,表明不向註冊中心註冊本身。
fetch-registry: false #false 因爲註冊中心的職責就是維護服務實例,它並不須要去檢索服務,因此也設置爲false
service-url:
defaultZone: http://eureka2002.java1234.com:2002/eureka/,http://eureka2003.java1234.com:2003/eureka/ # 集羣
#單機defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與Eureka註冊中心交互的地址,查詢服務和註冊服務用到
2002修改:
server:
port: 2002
context-path: /
eureka:
instance:
# 單機 hostname: localhost #eureka註冊中心實例名稱
hostname: eureka2002.java1234.com # 集羣
client:
register-with-eureka: false #false 因爲該應用爲註冊中心,因此設置爲false,表明不向註冊中心註冊本身。
fetch-registry: false #false 因爲註冊中心的職責就是維護服務實例,它並不須要去檢索服務,因此也設置爲false
service-url:
defaultZone: http://eureka2001.java1234.com:2001/eureka/,http://eureka2003.java1234.com:2003/eureka/ # 集羣
#單機defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與Eureka註冊中心交互的地址,查詢服務和註冊服務用到
2003修改:
server:
port: 2003
context-path: /
eureka:
instance:
# 單機 hostname: localhost #eureka註冊中心實例名稱
hostname: eureka2003.java1234.com # 集羣
client:
register-with-eureka: false #false 因爲該應用爲註冊中心,因此設置爲false,表明不向註冊中心註冊本身。
fetch-registry: false #false 因爲註冊中心的職責就是維護服務實例,它並不須要去檢索服務,因此也設置爲false
service-url:
defaultZone: http://eureka2001.java1234.com:2001/eureka/,http://eureka2002.java1234.com:2002/eureka/ # 集羣
#單機defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與Eureka註冊中心交互的地址,查詢服務和註冊服務用到
第五步:修改服務提供者項目的application.yml,主要修改eureka.client.service-url.defaultZone
server:
port: 1001
context-path: /
# 數據源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_springcloud2
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true
eureka:
instance:
hostname: localhost #eureka客戶端主機實例名稱
appname: microservice-student #客戶端服務名
instance-id: microservice-student:1001 #客戶端實例名稱
prefer-ip-address: true #顯示IP
client:
service-url:
# 單機 defaultZone: http://localhost:2001/eureka #把服務註冊到eureka註冊中心
defaultZone: http://eureka2001.java1234.com:2001/eureka/,http://eureka2002.java1234.com:2002/eureka/,http://eureka2003.java1234.com:2003/eureka/ # 集羣
info:
groupId: $project.groupId$
artifactId: $project.artifactId$
version: $project.version$
負責人: 張三
聯繫電話: 110
最後咱們測試下:
啓動三個註冊中心,以及服務提供者項目;
而後瀏覽器地址欄輸入:http://eureka2001.java1234.com:2001/
這裏說明,集羣建立OK; 紅色的那塊 ,後面會講到,是eureka的自我保護。
假如訪問 http://eureka2002.java1234.com:2002/ http://eureka2003.java1234.com:2003/
都是一個效果;
這裏本質是三個服務註冊中心都有咱們服務提供者的信息,等後面講到服務發現和服務調用,咱們經過一些策略(默認輪詢),會去找對應的服務註冊中心;經過集羣,能減輕每一個服務註冊中心的壓力;