這篇文章主要講解了“Spring Cloud Eureka集群使用DNS方式進行服務(wù)分區(qū)的方法”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Spring Cloud Eureka集群使用DNS方式進行服務(wù)分區(qū)的方法”吧!
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、網(wǎng)站設(shè)計、軹城網(wǎng)絡(luò)推廣、小程序開發(fā)、軹城網(wǎng)絡(luò)營銷、軹城企業(yè)策劃、軹城品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供軹城建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
Eureka注冊中心的配置方式有幾種
網(wǎng)上常見的配置方式分為
一、使用defaultZone,這種沒有分區(qū)的概念,就一個區(qū),所有的服務(wù)都會使用defaultZone配置的serverUrl進行服務(wù)注冊發(fā)現(xiàn)。網(wǎng)上有很多文章這里不再贅述
二、集群的配置方式有兩種一種是配置文件的方式,一種是DNS的方式
這里面還要提到一個分區(qū)的概念 Region和Zone,這里 芋道源碼 http://www.iocoder.cn/Eureka/eureka-client-init-second/?sf&2017-11-01和周立http://www.itmuch.com/spring-cloud-1/的文章里都有描述,
二、1.第一種配置文件的方式,這種也是網(wǎng)上文件介紹比較全面的一種
SpringCloudEureka進行服務(wù)分區(qū):https://www.jianshu.com/p/2ca32773b3e5 和
eureka集群的兩種配置方式:配置文件方式和Dns方式http://www.cnblogs.com/relinson/p/eureka_ha_config_properties_and_dns.html
這兩篇文章也介紹的比較清楚
重點是配置region, 配置availability-zones,這個要注意節(jié)點的順序前后,還有就是配置service-url,基本上也可以實現(xiàn)了,但是這種方式都是需要提前寫死的,對于動態(tài)增加注冊中心進行分區(qū)調(diào)整都要調(diào)整每個eurekaclient的配置,說白了就是每個服務(wù)都要修改相應的配置項,所以就引申出DNS的配置方式
二、2.Dns方式配置Eureka集群
這種方式網(wǎng)上介紹的也有,比如這篇文章https://www.cnblogs.com/relinson/p/eureka_ha_use_dns.html
前半部分介紹的也很清晰,也有那么幾個重點的配置項,
use-dns-for-fetching-service-urls: true使用dns方式配置
eureka-server-d-n-s-name: XXX.com DNS根域名
region: beijing
eureka-server-u-r-l-context: eureka 配置中心的eureka目錄
eureka-server-port: 9999 映射其他eurekaServer的端口,這里注意采用這種方式 server.port和這個端口最好一致
因為dns是控制地址的變化,端口不變,所以不像前面的哪些配置方式可以自己定義url和port。所以每個IP都是用的相同的port進行注冊中心服務(wù)的部署
這些也是文章中說的比較清楚的配置方式,但是踩坑的過程中發(fā)現(xiàn)這些只是講解了前半部分,后面還有若干細節(jié)從網(wǎng)上如何都找不到。下面就來說一說
1、首先EurekaServer和EurekaClient都要設(shè)置DNS地址,也就是說注冊中心,和其他注冊到注冊中心的服務(wù),都要現(xiàn)在運行的服務(wù)機器上配置私有的DNS服務(wù)地址,使得機器能夠采用相同的DNS服務(wù)地址,本地windows調(diào)試就去網(wǎng)絡(luò)適配器里改IPv4里的DNS即可
2、要配置DNS服務(wù)器,以windows的DNS服務(wù)器為例,首先建一個域 XXX.com,也就是對應著
eureka-server-d-n-s-name
其次要建一個region例如beijing,然后里面要建一個txt類型的文本,填入3azone.XXX.com 3bzone.XXX.com,相當于一個region下有2個分區(qū)
然后還要在region的同級目錄建2個域一個3azone,一個3bzone,區(qū)域的劃分可根據(jù)自己的情況命名和劃分
3b內(nèi)也建類似的配置,這樣就完成了dns的配置,通過查看Eureka的源碼,他的實現(xiàn)是通過尋找
txt.beijing.XXX.com(txt.region.eureka-server-d-n-s-name)這樣的方式獲取到的
3azone.XXX.com和3bzone.XXX.com中的zone,3azone和3bzone,
然后再去獲取 txt.3azone.XXX.com和txt.3bzone.XXX.com中對應的ServiceUrls,的數(shù)據(jù),也就是IP地址。
這樣服務(wù)間就可以獲取到固定端口下的不同IP的機子的注冊中心服務(wù)并相互注冊
3.注冊中心相互注冊后可能會出現(xiàn) unavailable-replicas的情況,出現(xiàn)這個主要是2個屬性造成的
要么就使用IP注冊eureka.instance.prefer-ip-address=true,如果不使用IP注冊而使用host方式,那么就要配置eureka.instance.hostname: 3azone.XXX.com #非常非常重要,使用host又沒配置,就會顯示unavailable-replicas,
4.服務(wù)中心配置好后,其他client服務(wù)也只要配置對應的連接方式即可
eureka:
instance:
prefer-ip-address: true
metadata-map:
zone: 3azone #這個是服務(wù)注冊優(yōu)先歸屬于哪個區(qū)
client:
register-with-eureka: true
fetch-registry: true
region: beijing
#開啟DNS方式獲取serviceUrl,默認為false
use-dns-for-fetching-service-urls: true
#DNS域名,獲取其他信息將以該域名為根域名
eureka-server-d-n-s-name: XXX.com
#eureka服務(wù)根目錄
eureka-server-u-r-l-context: eureka
#連接注冊中心端口
eureka-server-port: 9999 #這里一定注冊中心的端口,如果不想寫死就要配置環(huán)境變量來實現(xiàn)了
以上這些步驟只要稍加注意,即可完美的完成eureka基于DNS的方式配置分區(qū)集群,且可以動態(tài)的添加分區(qū)和注冊中心數(shù)量和位置
感謝各位的閱讀,以上就是“Spring Cloud Eureka集群使用DNS方式進行服務(wù)分區(qū)的方法”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Spring Cloud Eureka集群使用DNS方式進行服務(wù)分區(qū)的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!