天天看點

使用阿裡雲配置管理ACM實作zookeeper依賴服務的透明Failover遷移使用阿裡雲配置管理ACM實作zookeeper依賴服務的透明Failover遷移場景介紹方案1 使用DNS或者VIP的服務發現方案方案2 使用ACM方案總結

摘要:在通路依賴的服務過程中,我們通常會通過在程式或者配置檔案中寫死ip清單的形式來發現下遊服務,但在下遊服務叢集出現ip遷移的時候,會導緻所有依賴該服務的上遊應用重新配置ip清單并重新釋出或者重新開機才能生效。本文介紹了如何使用阿裡雲配置管理産品ACM,并以zookeeper叢集服務為例,如何友善的在資料中心裡實作透明的替換zookeeper壞掉的機器節點。

在一個資料中心裡,一個zookeeper叢集常常會服務多條業務線或者業務系統,每個業務線或者業務系統有自己的開發團隊,而zookeeper這類公共服務則會有專門的運維或者團隊負責保障其服務可用性和連續性。

業務應用通過Apache Curator用戶端或者原生的zookeeper用戶端通路zookeeper服務,在這個過程中,必須在應用程式裡指定connectString,即zookeeper服務所在的機器的ip清單, 代碼示例如下:

但在zookeeper的生産運作過程中,zookeeper服務叢集可能會遇到機器故障,機器遷移等情況,這個過程則需要zookeeper運維人員替換節點,将服務遷移到新的ip節點,整個流程,如下圖所示,

使用阿裡雲配置管理ACM實作zookeeper依賴服務的透明Failover遷移使用阿裡雲配置管理ACM實作zookeeper依賴服務的透明Failover遷移場景介紹方案1 使用DNS或者VIP的服務發現方案方案2 使用ACM方案總結

該方案如圖所示:

使用阿裡雲配置管理ACM實作zookeeper依賴服務的透明Failover遷移使用阿裡雲配置管理ACM實作zookeeper依賴服務的透明Failover遷移場景介紹方案1 使用DNS或者VIP的服務發現方案方案2 使用ACM方案總結

在這個方案中,可以将zk服務ip挂在一個dns域名或者vip上.

這樣在zookeeper替換節點時,應用無感覺,這個方案即服務發現方案。

優點

缺點

我們将zookeeper叢集的服務ip清單,連接配接逾時,session逾時參數,chroot,目前的使用者名,密碼等放在一個ACM配置裡。

使用阿裡雲配置管理ACM實作zookeeper依賴服務的透明Failover遷移使用阿裡雲配置管理ACM實作zookeeper依賴服務的透明Failover遷移場景介紹方案1 使用DNS或者VIP的服務發現方案方案2 使用ACM方案總結

然後通過ACM SDK監聽這個配置的變更,這裡我們可以使用curator client提供的EnsembleProvider功能來結合ACM達到動态監聽配置服務ip清單變更的效果。

示例代碼如下

當zookeeper叢集的節點挂掉,需要更換ip清單或者修改逾時參數,應用的znode配額quota時,zookeeper運維人員隻需要在ACM上修改相關的配置項,ACM将自動分發變更到所有的應用系統。

使用阿裡雲配置管理ACM實作zookeeper依賴服務的透明Failover遷移使用阿裡雲配置管理ACM實作zookeeper依賴服務的透明Failover遷移場景介紹方案1 使用DNS或者VIP的服務發現方案方案2 使用ACM方案總結

在上例中,我們可以看到,應用系統開發人員(Dev)和運維人員(Ops)之間省去了溝通成本,應用系統也省去了因連接配接相關的配置變更導緻的應用重新啟動或者釋出應用的變更成本。

在本文中我們介紹了,如何利用ACM解決服務發現場景中的下遊依賴服務透明替換節點,調整服務連接配接逾時參數等問題。

通過該例,我們可以看到,在将應用的靜态配置檔案方式遷移到ACM之後,通過應用主動動态監聽配置變更,可以在應用和運維層面獲得諸多好處,這包括省去了應用配置變更時,應用往往需要重新釋出或者重新開機的成本,同時使Dev和Ops在配置變更場景下2者之間的溝通成本降到最低。