當前位置:
首頁 > 知識 > 基於Codis的Redis集群部署

基於Codis的Redis集群部署

Codis是基於代理的高性能Redis集群方案,使用Go語言進行開發,現在在在豌豆莢及其它公司內已經廣泛使用,當然也包括我們公司。

Codis與常見的Redis集群方案對比。

在搭建的時候,個人覺得Redis Cluster搭建起來非常容易,但是redis-cluster沒有GUI管理面板,另外查詢資料發現redis-cluster的客戶端實現redis-cluster的協議比較麻煩。

而codis在使用的時候,就像正常連接redis客戶端一樣,不過codis有些命令不支持。動手吧

多看幾眼這個官方架構圖,有助於我們理解codis的架構,方便後面操作

過程

如果編譯安裝codis,安裝codis依賴的庫,使用yum安裝的golang庫默認在/usr/lib/golang目錄下,編譯起來也沒有很麻煩了

yum install golang -y

yum install autoconf -y

下載源文件,並且編譯

cd /usr/lib/golang

mkdir -p src/github.com/CodisLabs

cd src/github.com/CodisLabs/

git clone https://github.com/CodisLabs/codis.git -b release3.2

cd codis

make

然後會得到編譯的文件,不出意外都可以編譯成功,記得安裝linux的開發工具包

在運行命令之前,先看一下運行命令包含的內容

在config目錄下,會有運行幾個組件的配置文件,這些文件都可以使用命令自動生成

codis-dashboard --default-config #生成codis-dashboard的默認配置文件

codis-proxy --default-config #生成codis-proxy的默認配置文件

如果你對zookeeper,etcd等分散式協調組件比較熟悉,這兩個命令生成的配置文件中都可以指定使用zookeeper,或者etcd, jodis是基於codis的redis客戶端。

相關的shell腳本,看一下admin目錄中的內容,都可以理解的,修改下配置文件什麼的

運行集群

./admin/codis-proxy-admin.sh start #dashboard提供REST API管理codis的集群

./admin/codis-proxy-admin.sh start #codis代理,使用的時候連接的是codis-proxy

./admin/codis-fe-admin.sh start #fe,用來提供GUI管理codis的

到這一步的時候,我們已經可以訪問codis的管理界面了,訪問http://127.0.0.1:9090,這個時候codis的管理面板基本上是空的。

運行redis伺服器,就像常規的運行redis伺服器,可以設置slave等相關

./redis-server /etc/redis/redis_6379.conf # 記得設置redis綁定地址或者認證相關

./redis-server /etc/redis/redis_6380.conf #這個設置為6379的slave

設置為redis的slave,指定slaveof 127.0.0.1:6379。

在codis-fe的管理面板中操作

首先添加codis-proxy

然後添加redis-group,可以添加不同的group,然後往group裡面添加伺服器,留意Data Center和Group,正常情況下在每一個組中添加的第一台伺服器都是master,往後都是slave,就算你添加的是另外的master節點,點擊綠色的修復按鈕,新加入的master也會變成slave的。

測試,留意上面的圖片,我添加了兩台codis-proxy,然後4台redis-server,我們可以做測試了。

連接到不同的codis-proxy上面取得的數據都是一樣的,這樣當我們配置多個proxy的時候,其中的proxy掛掉了,也是可以正常使用的,另外通過管理界面,我們可以動態的添加redis-server。

注意點

集群搭建起來,參考官方的文檔也不會很麻煩,完成一整套流程之後,提醒一些搭建的時候要注意的點。

管理面板上的,在管理codis-proxy那一部分,可以看到我們的命令執行情況,命令分配到那一台主機。

加入新的redis-server之後,不要忘記了遷移slot,如果再生產環境遷移slot要注意時機。

redis-proxy可以配置不同的data-center,我想這個在客戶端使用工具的時候可以指定。

配置多個proxy,連接不同的proxy獲取的數據都是一致的,proxy代理的是多個redis-master,數據在後端的redis-server上也是分片存儲的。

如果配置了多個redis-master,也可以說redis-group,每一個master存儲的是部分的數據。

最後

紙上得來終覺淺,在公司內部一般有專門的運維來負責這部分的維護,保證高可用相關內容。另外真正搭建過cods之後,覺得codis比redis-cluster好用一些,除了搭建複雜一點,概念多了一點點,後續使用很簡單了。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千鋒JAVA開發學院 的精彩文章:

Docker簡單部署Ceph測試集群
技術分析:資料庫範式那些事

TAG:千鋒JAVA開發學院 |