Couchbase進階-集羣與版本升級

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

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

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

什麼是vBuckets,一個vBucket定義爲couchbase集羣裏key空間的一個子集的擁有者。經過使用vBuckets,信息在集羣裏分發更有效。vBucket系統被用於分佈式數據,以及支持多節點間的數據複製。windows

在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版本:spa

@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。點擊這裏!

相關文章
相關標籤/搜索