您好,登錄后才能下訂單哦!
這篇文章主要講解了“Spring Cloud Eureka集群使用DNS方式進行服務分區的方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Spring Cloud Eureka集群使用DNS方式進行服務分區的方法”吧!
Eureka注冊中心的配置方式有幾種
網上常見的配置方式分為
一、使用defaultZone,這種沒有分區的概念,就一個區,所有的服務都會使用defaultZone配置的serverUrl進行服務注冊發現。網上有很多文章這里不再贅述
二、集群的配置方式有兩種一種是配置文件的方式,一種是DNS的方式
這里面還要提到一個分區的概念 Region和Zone,這里 芋道源碼 http://www.iocoder.cn/Eureka/eureka-client-init-second/?sf&2017-11-01和周立http://www.itmuch.com/spring-cloud-1/的文章里都有描述,
二、1.第一種配置文件的方式,這種也是網上文件介紹比較全面的一種
SpringCloudEureka進行服務分區:https://www.jianshu.com/p/2ca32773b3e5 和
eureka集群的兩種配置方式:配置文件方式和Dns方式http://www.cnblogs.com/relinson/p/eureka_ha_config_properties_and_dns.html
這兩篇文章也介紹的比較清楚
重點是配置region, 配置availability-zones,這個要注意節點的順序前后,還有就是配置service-url,基本上也可以實現了,但是這種方式都是需要提前寫死的,對于動態增加注冊中心進行分區調整都要調整每個eurekaclient的配置,說白了就是每個服務都要修改相應的配置項,所以就引申出DNS的配置方式
二、2.Dns方式配置Eureka集群
這種方式網上介紹的也有,比如這篇文章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進行注冊中心服務的部署
這些也是文章中說的比較清楚的配置方式,但是踩坑的過程中發現這些只是講解了前半部分,后面還有若干細節從網上如何都找不到。下面就來說一說
1、首先EurekaServer和EurekaClient都要設置DNS地址,也就是說注冊中心,和其他注冊到注冊中心的服務,都要現在運行的服務機器上配置私有的DNS服務地址,使得機器能夠采用相同的DNS服務地址,本地windows調試就去網絡適配器里改IPv4里的DNS即可
2、要配置DNS服務器,以windows的DNS服務器為例,首先建一個域 XXX.com,也就是對應著
eureka-server-d-n-s-name
其次要建一個region例如beijing,然后里面要建一個txt類型的文本,填入3azone.XXX.com 3bzone.XXX.com,相當于一個region下有2個分區
然后還要在region的同級目錄建2個域一個3azone,一個3bzone,區域的劃分可根據自己的情況命名和劃分
3b內也建類似的配置,這樣就完成了dns的配置,通過查看Eureka的源碼,他的實現是通過尋找
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,的數據,也就是IP地址。
這樣服務間就可以獲取到固定端口下的不同IP的機子的注冊中心服務并相互注冊
3.注冊中心相互注冊后可能會出現 unavailable-replicas的情況,出現這個主要是2個屬性造成的
要么就使用IP注冊eureka.instance.prefer-ip-address=true,如果不使用IP注冊而使用host方式,那么就要配置eureka.instance.hostname: 3azone.XXX.com #非常非常重要,使用host又沒配置,就會顯示unavailable-replicas,
4.服務中心配置好后,其他client服務也只要配置對應的連接方式即可
eureka:
instance:
prefer-ip-address: true
metadata-map:
zone: 3azone #這個是服務注冊優先歸屬于哪個區
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服務根目錄
eureka-server-u-r-l-context: eureka
#連接注冊中心端口
eureka-server-port: 9999 #這里一定注冊中心的端口,如果不想寫死就要配置環境變量來實現了
以上這些步驟只要稍加注意,即可完美的完成eureka基于DNS的方式配置分區集群,且可以動態的添加分區和注冊中心數量和位置
感謝各位的閱讀,以上就是“Spring Cloud Eureka集群使用DNS方式進行服務分區的方法”的內容了,經過本文的學習后,相信大家對Spring Cloud Eureka集群使用DNS方式進行服務分區的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。