Spring Cloud— 五、註冊中心Eureka
5.1、為Eureka新增使用者認證
在前面的例項中,我們可以看到我們需要登陸即可訪問到Eureka服務,這樣其實是不安全的。
接下來,我們為Eureka新增使用者認證。
第一步,為springcloud-demo-eureka新增安全認證依賴:
<!--安全認證-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
第二步,增加application.properties配置檔案:
第三步,重新啟動Eureka服務進行測試:
輸入正確的使用者名稱密碼即可登陸。
這是,服務提供者註冊到Eureka時會報錯,所以需要在服務註冊時也需要設定使用者名稱和密碼。
5.2服務註冊時設定賬戶資訊
服務註冊到有認證需求的註冊中心時,需要設定如下資訊:
http://User:Password@127.0.0.1:8888/eureka/
重新啟動測試,可以看到已經註冊到了Eureka服務註冊中心。
5.3、Eureka的自我保護模式
如圖,當前Eureka進入了自我保護模式。
預設情況下,如果Eureka Server在一定時間內沒有接受到某個微服務例項的心跳,Eureka Server將會登出該例項(預設90秒)。但是當網路分割槽故障發生時,微服務與Eureka Server之間無法正常通訊,以上行為可能變得非常危險了——因為微服務本身其實是健康得,此時本不應該登出這個微服務。
Eureka通過“自我保護模式”來解決這個問題——當Eureka Server節點在短時間內丟失過多客戶端時(可能發生了網路分割槽故障),那麼這個節點就會進入自我保護模式。一旦進入該模式,Eureka Server就會保護服務登錄檔的資訊,不再刪除服務登錄檔中的資料(也就是不會登出任務微服務)。當網路故障恢復後,該Eureka Server節點會自動退出自我保護模式。
綜上,自我保護模式是一種應對網路異常的安全保護措施。它的架構哲學是寧可同時保留所有的微服務(健康的微服務和不健康的微服務都會保留),也不盲目登出任何健康的微服務。使用自我保護模式,可以讓Eureka叢集更加的健壯、穩定。
所以,一般進入自我保護模式,無需處理。如果,需要禁用自我保護模式,只需要在application配置檔案中新增配置即可重新啟動服務檢視效果:
提示,如果禁用自我保護模式,在網路通訊故障下會出現問題。
5.4、Eureka的高可用
前面得測試,我們會發現,Eureka服務是一個單點服務,在生產環境就會出現單點故障,為了確保Eureka服務得高可用,我需要搭建Eureka服務的叢集。
搭建Eureka叢集非常簡單,只要啟動多個Eureka服務並且讓這些服務之間彼此進行註冊即可實現。
第一步,修改springcloud-demo-eureka的application.properties檔案:第二步:修改配置檔案,再啟用一個Eureka服務,進行啟動測試:
測試結果:
可以看到,2個Eureka服務進行了彼此註冊。
說明:啟動兩個spring boot專案第一個可以用ieda啟動,第二個可以用命令mvn spring-boot:run,當然還有其他的很多方式。
5.5、將服務註冊到Eureka叢集
服務註冊到Eureka叢集時,可以指定多個,也可以指定一個Eureka服務(因為Eureka服務叢集間彼此互聯)。
修改springcloud-demo-item的application配置檔案:
#Eureka服務端與Eureka客戶端互動地址
eureka.client.serviceUrl.defaultZone=http://zuo:123456@127.0.0.1:8888/eureka/,http://zuo:123456@127.0.0.1:9999/eureka/
重啟,測試:可以通過停止Eureka服務進行測試,結果會發現叢集是高可用。
5.6、指定例項的IP地址與例項ID
在服務的提供者配置檔案中可以指定ip地址,如下:
#指定此例項ip
eureka.instance.ip-address=127.0.0.1
#指定此例項ID
eureka.instance.instance-id=${spring.application.name}:${server.port}
Spring Cloud—一、微服務架構
Spring Cloud—二、Spring Cloud簡介
Spring Cloud—三、使用Spring Cloud實現微服務
Spring Cloud—四、Spring Cloud快速入門
Spring Cloud—五、註冊中心Eureka
Spring Cloud—六、使用Ribbon實現負載均衡
Spring Cloud—七、容錯保護:Hystrix
Spring Cloud—八、使用Feign實現宣告式的Rest呼叫
Spring Cloud—九、服務閘道器Spring Cloud Zuul
Spring Cloud—十、使用Spring Cloud Config統一管理微服務
Spring Cloud—十一、使用Spring Cloud Bus(訊息匯流排)實現自動更新
相關文章
- Spring Cloud 系列(二)Eureka 高可用註冊中心SpringCloud
- 普通springcloud eureka 和 spring cloud Alibaba nacos 註冊中心SpringGCCloud
- Spring Cloud Eureka 註冊中心叢集搭建,Greenwich 最新版!SpringCloud
- Spring Cloud:使用Eureka叢集搭建高可用服務註冊中心SpringCloud
- Spring Cloud Eureka 實現高可用服務發現註冊中心SpringCloud
- Eureka註冊中心
- Spring Cloud Alibaba(4)---Nacos(註冊中心)SpringCloud
- Spring Cloud 升級之路 - 2020.0.x - 4. 使用 Eureka 作為註冊中心SpringCloud
- springcloud(二):註冊中心EurekaSpringGCCloud
- Spring Cloud 系列(一)Eureka 服務註冊與發現SpringCloud
- Spring Cloud Eureka 實現服務註冊與發現SpringCloud
- 整合spring cloud雲架構 --註冊中心搭建SpringCloud架構
- Spring Cloud 實戰一:服務註冊中心SpringCloud
- Spring Cloud 入門教程 – Eureka服務註冊與發現SpringCloud
- Spring Cloud Eureka原理分析(一):註冊過程-服務端SpringCloud服務端
- Spring Cloud 入門教程 - Eureka服務註冊與發現SpringCloud
- Spring Cloud Alibaba:Nacos 作為註冊中心和配置中心使用SpringCloud
- 註冊中心 Eureka 原始碼解析 —— 應用例項註冊發現(五)之過期原始碼
- SpringCloud入門(三)Eureka 註冊中心SpringGCCloud
- 服務註冊中心之Eureka使用
- Spring Cloud原始碼分析之Eureka篇第二章:註冊中心啟動類上的註解EnableEurekaServerSpringCloud原始碼Server
- 微服務實戰系列(五)-註冊中心Eureka與nacos區別微服務
- Spring Cloud實戰系列(一) - 服務註冊與發現EurekaSpringCloud
- 服務治理->搭建服務註冊中心: Spring Cloud EurSpringCloud
- Spring Cloud Alibaba 使用Nacos作為服務註冊中心SpringCloud
- SpringCloud——Eureka-微服務的註冊中心SpringGCCloud微服務
- Spring Cloud Eureka原理分析(三):註冊資訊讀取(服務端)SpringCloud服務端
- Spring Cloud 部署時如何使用 Kubernetes 作為註冊中心和配置中心SpringCloud
- 註冊中心 Eureka 原始碼解析 —— 應用例項註冊發現(一)之註冊原始碼
- 小白的學習筆記——eureka註冊中心筆記
- Fescar 釋出 0.3.0 版本, 支援 Eureka 註冊中心
- 微服務架構 | 3.1 Netflix Eureka 註冊中心微服務架構
- Spring Cloud Alibaba---服務註冊、發現、管理中心NacosSpringCloud
- Spring Cloud Alibaba Nacos搭建服務註冊發現和配置中心SpringCloud
- Spring-cloud學習筆記--- Eureka原始碼剖析之服務註冊介面SpringCloud筆記原始碼
- Spring Cloud原始碼分析之Eureka篇第六章:服務註冊SpringCloud原始碼
- SpringCloud實踐(三) 高可用的Eureka註冊中心SpringGCCloud
- 跟我學SpringCloud | 第二篇:註冊中心EurekaSpringGCCloud