codis 新版本 CodisLabs 編譯安裝

丶小炒肉發表於2016-05-31

codis 3.0 版本編譯安裝

 

# 首先安裝 go 語言

 

wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz

 

tar zxvf go1.4.2.linux-amd64.tar.gz

 

mv go /opt/local/

 

 

 

 

# 配置環境變數

 

vi /etc/profile

 

--------------------------------------

export GOROOT=/opt/local/go

export PATH=$PATH:$GOROOT/bin

export GOPATH=/opt/local/codis

--------------------------------------

 

 

source /etc/profile

 

# 執行

go version

 

 

# 安裝codis

 

yum install -y git

 

go get -u -d github.com/CodisLabs/codis

 

cd /opt/local/codis/src/github.com/CodisLabs/codis

 

 

# 安裝配置

make

 

 

提示如下錯誤:

-------------------------------------------------------

/bin/sh: godep: 未找到命令

/bin/sh: godep: 未找到命令

make: *** [godep] 錯誤 127

-------------------------------------------------------

 

 

cd /opt/local/codis/bin

 

複製 godep 到 go/bin 目錄

 

cp godep /opt/local/go/bin

 

 

然後再執行 make 命令

 

Hint: It's a good idea to run 'make test' ;)    表示安裝完成

 

 

執行 make test 測試

 

完成安裝會在 codis/src/github.com/CodisLabs/codis/bin 生成 

 

assets, codis-config, codis-proxy, codis-server    四個檔案

 

 

# 複製檔案 方便管理

 

mkdir -p /opt/local/codis/{logs,conf,data}/

 

cd /opt/local/codis/src/github.com/CodisLabs/codis/bin

 

cp -rf * /opt/local/codis/bin

 

cd /opt/local/codis/src/github.com/CodisLabs/codis/

 

cp config.ini /opt/local/codis/conf/

 

cd /opt/local/codis/src/github.com/CodisLabs/codis/extern/redis-2.8.21/src

 

cp redis-cli /opt/local/codis/bin/redis-cli-2.8.21

 

ln -s /opt/local/codis/bin/redis-cli-2.8.21 /opt/local/codis/redis-cli

 

 

 

# 修改配置檔案

 

cd /opt/local/codis/conf

 

vi config.ini

 

 

# 修改IP,配置WEB管理 預設 18087 埠  多proxy 配置VIP地址,但只能啟動一個dashboard ,程式掉線再啟動其他

 

dashboard_addr

 

( zk  配置 zookeeper 地址,單機配置一個,群集配置多個~以,號隔開 )

 

proxy_id=codis_proxy_1  配置為唯一

 

product=     # zookeeper 節點資訊

 

 

 

 

# redis-server 配置檔案

 

cd /opt/local/codis/src/github.com/CodisLabs/codis/extern/redis-test/conf

 

cp 6379.conf  6380.conf /opt/local/codis/conf/

 

 

 

 

# 修改裡面的配置埠與配置 需要修改的配置如下:

 

daemonize yes      #後臺模式執行

pidfile  var/run/redis_6379.pid   #pid 檔案

port 6379          #執行埠

timeout 50         #請求超時時間,預設0

logfile "/opt/local/codis/logs/codis_6379.log"   #日誌檔案

maxmemory 20gb                #最大記憶體設定

save 900 1                    #開啟儲存快照的條件( 第一個*表示多長時間 , 第三個*表示執行多少次寫操作 ) 

save 300 10

save 60 10000

dbfilename 6379.rdb                     #資料快照儲存的名字

dir /opt/local/codis/data        #資料快照的儲存目錄

appendfilename "6379_appendonly.aof"    #Redis更加高效的資料庫備份及災難恢復方式。

appendfsync everysec                    # ( always: always表示每次有寫操作都進行同步. everysec: 表示對寫操作進行累積,每秒同步一次 )

 

 

 

 

 

 

# 建立 dashboard 啟動指令碼

 

vi /opt/local/codis/start_dashboard.sh

 

 

#!/bin/sh

nohup /opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini -L /opt/local/codis/logs/dashboard.log dashboard --addr=:18087 --http-log=/opt/local/codis/logs/requests.log &>/dev/null &

 

 

 

 

# 啟動 dashboard 

 

/opt/local/codis/start_dashboard.sh

 

 

# 初始化 slot , 該命令會在zookeeper上建立slot相關資訊

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini slot init

 

 

 

 

# 啟動codis-server服務

 

/opt/local/codis/bin/codis-server /opt/local/codis/conf/6379.conf

 

/opt/local/codis/bin/codis-server /opt/local/codis/conf/6380.conf

 

 

 

 

# 新增 Redis Server Group

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

 

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini server add 1 localhost:6379 master

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini server add 1 localhost:6380 slave

 

 

 

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini server add 1 172.16.32.78:6379 master

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini server add 1 172.16.32.79:6380 slave

 

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini server add 2 172.16.32.79:6379 master

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini server add 2 172.16.32.78:6380 slave

 

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini server add 3 172.16.32.80:6379 master

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini server add 3 172.16.32.81:6380 slave

 

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini server add 4 172.16.32.81:6379 master

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini server add 4 172.16.32.80:6380 slave

 

 

 

 

 

 

# 設定 server group 服務的 slot 範圍

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini slot range-set 0 255 1 online

 

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini slot range-set 256 511 2 online

 

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini slot range-set 512 767 3 online

 

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini slot range-set 768 1023 4 online

 

 

 

# slot 資料遷移

 

Codis 支援動態的根據例項記憶體, 自動對slot進行遷移, 以均衡資料分佈.

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini slot rebalance

 

執行此命令需要滿足下列條件:

 

1. 所有的codis-server都必須設定了maxmemory引數

 

2. 所有的 slots 都應該處於 online 狀態, 即沒有遷移任務正在執行

 

3. 所有 server group 都必須有 Master



 

另外 codis 還支援比例遷移。

 

如: 將slot id 為 [0-511] 的slot的資料, 遷移到 server group 2 上, --delay 參數列示每遷移一個 key 後 sleep 的毫秒數, 預設是 0, 用於限速.

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini slot migrate 0 511 2 --delay=10

 

遷移的過程對於上層業務來說是安全且透明的, 資料不會丟失, 上層不會中止服務.

 

注意:遷移的過程中打斷是可以的, 但是如果中斷了一個正在遷移某個slot的任務, 下次需要先遷移掉正處於遷移狀態的 slot, 否則無法繼續 (即遷移程式會檢查同一時刻只能有一個 slot 處於遷移狀態).

 

 

 

 

 

 

# 建立 start_proxy.sh,啟動codis-proxy服務

 

 

vi /opt/local/codis/start_proxy.sh

 

 

#!/bin/sh

echo "shut down codis_proxy_1.."

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini proxy offline codis_proxy_1

echo "done"

 

echo "start new proxy..."

nohup /opt/local/codis/bin/codis-proxy --log-level info -c /opt/local/codis/conf/config.ini -L /opt/local/codis/logs/proxy.log  --cpu=4 --addr=0.0.0.0:19000 --http-addr=0.0.0.0:11000 &>/dev/null &

echo "done"

 

 

 

 

# 啟動 proxy

 

/opt/local/codis/start_proxy.sh

 

 

 

# 設定 proxy 為 online 狀態

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini proxy online codis_proxy_1

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini proxy online codis_proxy_2

 

/opt/local/codis/bin/codis-config -c /opt/local/codis/conf/config.ini proxy online codis_proxy_3

 

 

 

 

 

 

 

# 訪問dashboard

http://localhost:18087/admin/

 

 

 

 

 

 

 

 

 

 

# codis-server 主從切換配置

 

codis-ha 是一個通過 是一個通過 codis開放的 api 實現自動切換主從

 

 

配置如下:

 

go get github.com/ngaut/codis-ha

cd /opt/local/codis/src/github.com/ngaut/codis-ha

go build

 

啟動:

cd /opt/local/codis/bin

 

./codis-ha --codis-config="127.0.0.1:18087" --productName="mycodis"

 

------------------------------------------------------------------------------

 

 

 

https://github.com/wlibo666/codis-ha

 

 

這個 codis-ha 新增了很多新功能,包括郵件報警,等功能。

相關文章