Couchbase進階-集群與版本升級


最近在負責公司Couchbase版本升級工作,之前只有一台Cache服務器,使用Couchbase Enterprise Edition 1.8,為避免單點故障現在需要新增加一台Cache服務器做負載,並對老版本couchbase進行升級。(以下均在windows系統下操作)

在進行主題之前先提一下Couchbase一些基本概念:在Couchbase的集群架構中,沒有中心節點和Router的概念,這些工作是由Smartclient完成的,在客戶端與couchbase server交互時,Couchbase集群是作為一個黑匣子存在的。客戶端負責客戶程序與群集里獨立節點的通信,首次連接的那個節點並不會充當代理或者風發的角色。Smartclient或Moxi(couchbase server端的proxy組件)會加載vBucket映射表,並決定連接到集群里的哪個節點去獲取和存儲數據。如果集群的拓撲圖改變了(比如執行rebalance或者failover操作),客戶端庫會自動處理任何會話錯誤。可以這樣理解,集群的配置和結構,對應用程序是透明的,你無需去關注。

什么是Buckets,Buckets是獨立的虛擬的數據容器,一個bucket就是couchbase服務器集群中的一個邏輯組,可以被集群中的多個客戶端應用使用。它提供安全的機制來組織、管理、分析數據存儲資源。

什么是vBuckets,一個vBucket定義為couchbase集群里key空間的一個子集的擁有者。通過使用vBuckets,信息在集群里分發更有效。vBucket系統被用於分布式數據,以及支持多節點間的數據復制。

在Couchbase中bucket有兩種類型,一種是couchbase類型,另一種是memcache類型,Couchbase類型bucket支持數據的持久化,因為它的數據是存儲在磁盤上,把活躍的數據讀取到內存中供客戶端使用(后續的備份和Failover也僅是針對着用類型的bucket),而memcache類型的bucket是內存級別的,所有的數據均保存在內存中。現在我們開始切入主題,我們老的couchbase服務器,使用了這兩種類型的bucket,我們使用couchbase類型的bucket存儲的是持久化的數據,供我們的客戶端調用,這部分數據相當重要且不能丟失。

基本思路:

  • 備份老的couchbase服務數據
  • 將新couchbase服務器加入到老服務器集群中,並通過rebalance同步兩台服務器cache數據
  • 修改客戶端Couchbase配置節點
  • Failover老服務器進行升級

第一步備份:

根據Couchbase官方說明(http://docs.couchbase.com/couchbase-manual-2.5/cb-install/#getting-started)couchbase由1.8升級到2.0+必須要經過1.8.1版本,這個過程是要對數據類型的升級。

而且couchbase1.8和2.5版本的備份方式不一致,這里提供兩個版本的備份腳本(注意只能備份Couchbase類型的bucket

#1.8版本:

@echo off

echo 開始執行Couchbase buckets備份

cd "C:\Program Files\Couchbase\Server\bin"

echo 當前路徑:%cd%

cbbackup "C:\Program Files\Couchbase\Server\var\lib\couchbase\data\default-data\default" c:/cbbackup/

pause...

 

#2.5版本

@echo off

echo 開始執行Couchbase buckets備份

cd "C:\Program Files\Couchbase\Server\bin"

echo 當前路徑:%cd%

cbbackup http://localhost:8091 c:/cbbackup/ -u Administrator -p 123456 --single-node

pause...

 

第二步 將新couchbase服務器加入集群,操作如下:(10.4.18.26老Server,10.4.18.101新Server)

  1. 打開10.4.18.26 Couchbase 控制台"MANAGE->ServerNodes"節點,單擊"Add Server",如圖:

  1. 點擊當前頁面的"Pending Rebalance",單擊"Rebalcnce"進行兩台server的數據同步,如圖:

  1. 系統自動實現數據同步,該過程 可能會持續很長時間,如圖:

說明:Couchbase有兩種類型的Bucket:Couchbase和Memcache,Couchbase類型可實現每台server node擁有完整的副本,支持故障轉移Failover;Memcache不支持Failover,多server node共同實現完整數據。

 

 

  1. 開啟Auto-Failover,保證一台機器down掉,另一台機器能正常工作,操作如圖:

說明:Couchbase默認是關閉Auto-Failover,需要手動開啟,Timeout默認最低為30秒。

第三步 修改客戶端配置節點:

<servers bucket="default" bucketPassword="">

<add uri="http://10.4.18.101:8091/pools" />

<add uri="http://10.4.18.26:8091/pools" />

</servers>

 

 

 

說明:在原有uri后添加一個uri

第四步 升級Couchbase版本

升級老版本couchbase直線需要將老的服務從集群中掛起,操作如下:

  1. 登錄 10.4.18.26 Couchbase 控制台,使用Failover 掛起10.4.18.26服務,如圖:

 

1.8版本Couchbase升級到2.5版本,要經過1.8.1版本,先停掉Couchbase服務(windows服務),直接運行1.8.1版本couchbase客戶端文件,這個版本會重復安裝兩次,第一次是upgrade 注冊表數據,第二次才是完整的安裝升級,升級完1.8.1,再次進入windows服務關閉couchbase服務,進行2.5版本的升級,該過程只執行一次。

升級完成后,我們需要將服務器重新加入集群,操作如下:

  1. Add Back讓10.4.18.26重新加入集群,使用Rebalace同步數據。

整個操作過程看起來簡單,其中做了很多次的實驗和測試,生產環境的更新只能確保萬無一失。測試代碼已分享至github。點擊這里!

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM