Codis叢集搭建摘要

發表於2016-04-02

準備方案

Golang環境搭建

環境搭建很簡單,下載go1.4.2.linux-amd64.tar.gz安裝包,直接解壓並新增到環境變數就可以。 假設解壓到/usr/local/go下,這個目錄就是GOROOT,另外需要定義一個go開發目錄,假設為/workspace/golang。 go開發目錄未來會產生一些主要的子目錄:
1. src 存放原始碼
2. pkg 編譯後生成的檔案
3. bin 編譯後生產的可執行檔案(比如godep命令在安裝後就會放在這個目錄下)

環境變數新增:

生效後就可以執行go version檢視go的版本資訊。 將$GOPATH/bin加入PATH是為了讓一些開源的或者自己安裝的go擴充套件命令(如godep)可以全域性使用。

Codis下載和編譯

最新版的Codis位於[https://github.com/CodisLabs/codis] 通過下面命令獲得原始碼

進入原始碼路徑,執行make開始編譯。

Codis的編譯使用了godep,如果沒有安裝的話就會報godep command not found的錯誤。 godep是golang的一個包管理工具,通過
go get github.com/tools/godep

安裝,成功後執行godep就會有對應的命令資訊,如果沒有可以在$GOPATH/bin目錄下查詢這個命令,然後加入環境變數。

如果你是用golang 1.5 beta3以上的版本進行編譯,還有可能出現的一個問題是

這是因為golang 1.5 beta3之後go新增了GO15VENDOREXPERIMENT這個特性,並在1.6預設開啟,你可以參照Codis issue715 裡面的方案解決。 最簡單就是在編譯前

編譯後的檔案

編譯後會產生一個bin目錄,下面有三個可執行檔案和一個目錄

這就是我們最終叢集部署的時候需要用到的檔案,當然跨平臺的話主要要交叉編譯或者在特定平臺下編譯,不然可能無法執行。

叢集方案

這裡使用三臺機器做一個小的叢集。每臺機器部署一個zookeeper例項,兩個codis server例項(也就是redis server)。 其中兩臺機器部署codis proxy,另外一臺開啟codis dashboard。


host ip zookeeper port redis server master/slave port codis proxy codis dashboard
slave1 192.168.4.124 2181 6379/6380 Y
slave2 192.168.4.126 2181 6379/6380 Y
slave3 192.168.4.128 2181 6379/6380 Y

叢集搭建

zookeeper叢集

zookeeper的搭建這裡就不詳細介紹了,最終節點是

先把zookeeper起起來

codis服務叢集

建立codis服務目錄

對每臺機器執行以上操作

根據註釋修改config.ini檔案

啟動dashboard

在slave2上執行 bin/codis-config dashboard, 該命令會啟動 dashboard

初始化slots

在任一機器上執行 bin/codis-config slot init,該命令會在zookeeper上建立slot相關資訊

啟動Codis Redis

和官方redis的引數一下,三臺機器上分別執行

新增Redis Server Group

每一個 Server Group 作為一個 Redis 伺服器組存在, 只允許有一個 master, 可以有多個 slave, group id 僅支援大於等於1的整數

如: 新增三個 server group, 每個 group 有兩個 redis 例項,group的id分別為1、2和3, redis例項為一主一從。

新增一個group,group的id為1, 並新增一個redis master到該group

新增一個redis slave到該group

類似的,再新增group,group的id為2

類似的,再新增group,group的id為3

設定 server group 服務的 slot 範圍

Codis 採用 Pre-sharding 的技術來實現資料的分片, 預設分成 1024 個 slots (0-1023), 對於每個key來說, 通過以下公式確定所屬的 Slot Id : SlotId = crc32(key) % 1024 每一個 slot 都會有一個且必須有一個特定的 server group id 來表示這個 slot 的資料由哪個 server group 來提供.

如:

設定編號為[0, 334]的 slot 由 server group 1 提供服務, 編號 [335, 669] 的 slot 由 server group 2 提供服務, 編號 [670, 1023] 的 slot 由 server group 3 提供服務,

啟動 codis-proxy

剛啟動的 codis-proxy 預設是處於 offline狀態的, 然後設定 proxy 為 online 狀態, 只有處於 online 狀態的 proxy 才會對外提供服務

瀏覽器管理

訪問http://192.168.4.126:18087/admin ,現在可以在瀏覽器裡面完成各種操作了。

相關文章