codis服務部署前的操作及初始化

Federico發表於2017-10-11

1.檢查伺服器ipv6模組是否開啟,如果開啟需要禁用ipv6,防止codis-dashbord連線zookeeper失敗。

因為不確定codis-dashbord服務連線zookeeper使用ipv4模組還是ipv6模組,所以需要將部署zookeeper服務的伺服器與部署codis-dashbord服務的伺服器的ipv6模組全部禁用。

#方法一:
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6
#方法二:
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

如果zookeeper服務在ipv6禁用前就已經啟用,那麼需要在禁用ipv6模組後重新啟動zookeeper服務。

2.啟動codis-server服務。

&nbspcodis-server是 codis 專案維護的一個 Redis 分支, 基於 2.8.13 開發, 增加了 slot 的支援和原子的資料遷移指令. codis 上層的 codis-proxy 和 codis-config 僅僅能和這個版本號的 Redis 互動才幹正常執行.

#修改codis-server配置檔案,codis-server配置檔案與redis類似。
vim /data/apps/config/codis/6379.ini
#啟動codis-server程式
/data/apps/opt/codis/bin/codis-server /data/apps/config/codis/6379.ini
#檢查codis程式是否正常啟動
ps aux|grep codis

3.啟動codis-dashbord服務。

&nbspcodis 的管理工具,支援新增/刪除 Redis 節點、新增/刪除 Proxy 節點,發起資料遷移等操作。codis-config 本身還自帶了一個 http server,會啟動一個 dashboard,使用者可以直接在瀏覽器上觀察 Codis 叢集的執行狀態。

#修改codis-dashbord配置檔案
vim /data/apps/config/codis/config.ini
##### dashboard and proxies
product=loadtest  #叢集名
dashboard_addr=codis1:18087  #dashbord地址
password=  #連線zookeeper密碼
coordinator=zookeeper
zk=zk1:2181  #zookeeperip及埠
##### Properties below are only for proxies
backend_ping_period=5
session_max_timeout=1800
session_max_bufsize=131072
session_max_pipeline=1024
zk_session_timeout=30000
##### must be different for each proxy
proxy_id=codis1  #同一叢集proxy_id不能衝突


#啟動codis-dashbord
/data/apps/opt/codis/start-dashboard.sh start


#start-dashboard.sh
#!/bin/bash
exec /data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini \
 -L /data/apps/log/codis/dashboard.log \
 dashboard \
 --addr=codis1:18087 \  #需要配置與config.ini配置檔案相同且正確
 --http-log=/data/apps/log/codis/requests.log &>/dev/null &
echo $! > /data/apps/var/codis/dashboard.pid

#檢查codis-dashbord服務是否啟動正常
ps aux|grep codis

4.將codis-server加入codis叢集並確立角色

&nbsp通過codis-dashbord向zookeeper叢集中新增群組資訊,每個group作為一個redis組存在,只允許有一個master允許有多個slave,group id僅支援大於1的整數。

/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini server add 1 codis1:6379 master
{
  "msg": "OK",
  "ret": 0
}

/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini server add 1 codis2:6379 slave
{
  "msg": "OK",
  "ret": 0
}

叢集建立成功後可以通過/data/apps/opt/codis/bin/codis-cli -h codis1 -p 6379 info命令來檢視叢集資訊。

5.slot初始化

只用將slot初始化後才能進行solt分割槽。

/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini slot init -f

6.slot分割槽

設定server group服務的slot範圍,如slot[0-511]由server group1提供服務,slot[512-1023]由server group2提供服務。

/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini slot range-set 0 511 1 online

/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini slot range-set 512 1023 2 online

7.啟動codis-proxy服務

&nbsp注意:codis服務啟動有嚴格的順序要求,如果順序錯亂可能需要清除zookeeper資料重新初始化服務。
&nbspcodis-proxy是client連線的codis-server的代理服務,事實上我們使用codis時連線的為codis—proxy埠,codis-proxy通過內部機制將資料寫入各個codis-server group。

/data/apps/opt/codis/start-proxy.sh start
{
  "msg": "OK",
  "ret": 0
}

8.修改codis-proxy狀態

&nbspcodis-proxy服務預設啟動後,處於offline狀態,只有處於online狀態的codis-proxy才能對外提供服務。

/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini proxy online codis1

9.測試codis-proxy寫入與讀取資料是否正常

#寫入資料
/data/apps/opt/codis/bin/codis-cli -h 127.0.0.1 -p 19000 set abc 123
OK

#讀取資料
/data/apps/opt/codis/bin/codis-cli -h 127.0.0.1 -p 19000 get abc
"123"

如果以上都沒有問題的話,表示codis初始化完成。

如果出現失敗的情況,需要檢視日誌確定是不是zookeeper寫入錯誤產生髒資料,如果出現這種情況的話,執行以下操作可以解決。

/data/apps/opt/zookeeper/bin/zkCli.sh -server zk1
[zk: zk1:2181(CONNECTED) 0] rmr /zk/codis

slot分割槽

#三組
/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini slot range-set 0 340 1 online
/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini slot range-set 341 681 2 online
/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini slot range-set 682 1023 3 online

#四組
/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini slot range-set 0 255 1 online
/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini slot range-set 256 511 2 online
/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini slot range-set 512 767 3 online
/data/apps/opt/codis/bin/codis-config -c /data/apps/config/codis/config.ini slot range-set 768 1023 4 online

相關文章