1. 程式人生 > >基於dns搭建eureka集群

基於dns搭建eureka集群

進行 bin ati 需求 不一致 restart 項目應用 同名 重新

eureka集群方案:

技術分享圖片

1.通常我們部署的eureka節點多於兩個,根據實際需求,只需要將相鄰節點進行相互註冊(eureka節點形成環狀),就達到了高可用性集群,任何一個eureka節點掛掉不會受到影響。

2.可能會有初學者和我一樣,一開始的時候沒有完全理解eureka集群的原理,直接把每個eureka節點的url寫進配置文件,期望所有的eureka節點進行相互註冊。實際上,節點間進行信息同步的時候,只會選取配置文件第一個eureka的url,除非發生url錯誤,才會依次選取有效url進行信息同步。

3.可能有的童鞋有這樣的疑問,eureka節點形成環狀以後,相隔的多個節點掛掉,eureka節點的數據就會出現不一致的情況。長話短說,要麽忍,要麽改變方案。

忍其實也是合理的,畢竟掛掉的eureka節點重新啟動後會自動同步數據。

改變方案可以把所有的eureka進行相互註冊,但把所有的eureka url都寫一遍,這個著實有點令人不爽,萬一新增節點,所有的節點都需要改一遍!!

所以我們很自然的想到了是否可以通過dns來解決上面的問題?eureka的開發者當然也想到了這種問題,並提供了基於dns的解方案。

一、搭建DNS服務器(unbutun環境)

1.ubuntu需安裝bind9軟件包來配置dns-server

apt-get install bind9

2.配置dns

2.1添加zone

vim /etc/bind/named.conf.local 加入以下配置,可參考/etc/bind/zones.frc1918中的格式

"eureka.com" { type master; file "/etc/bind/db.eureka.com"; };

2.2創建db.eureka.com文件(需要和2.1添加的file文件同名)

cp db.local db.eureka.com

2.3修改db.eureka.com

添加以下內容

txt.huabei.huabei IN TXT "huabei.eureka.com"

txt.huabei IN TXT "192.168.0.1" "192.168.0.2" "192.168.3"

2.4修改named.conf.options配置文件,這裏選用循環給出結果的方式

rrset-order { order cyclic; };

3.修改域名解析配置文件

vim /etc/resolv.conf

加入nameserver 192.168.0.1

註意nameserver頂格寫 ip可配置本機ip

4.重啟服務

/etc/init.d/bind9 restart

二、eureka集群配置

spring:
application:
name: eureka-server
server:
port: 8081
eureka:
environment: alpha
client:
region: huabei
availability-zones:
huabei: hb10
eureka-server-d-n-s-name: huabei.eureka.com
use-dns-for-fetching-service-urls: true
eureka-server-port: 8081

三、總結

筆者也是首次使用spring-cloud,網上有很多適合入門的使用文檔,但在實際項目應用中,我們需要進一步挖掘spring-cloud的特性。後續我繼續分享關於eureka的相關知識,比如如何使用region、zone等。

基於dns搭建eureka集群