基於Codis的Redis叢集部署

來源:互聯網
上載者:User

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

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


image.png

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

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

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


image.png

過程

  1. 如果編譯安裝codis,安裝codis依賴的庫,使用yum安裝的golang庫預設在/usr/lib/golang目錄下,編譯起來也沒有很麻煩了
yum install golang -yyum install autoconf -y
  1. 下載源檔案,並且編譯
cd /usr/lib/golangmkdir -p src/github.com/CodisLabscd src/github.com/CodisLabs/git clone https://github.com/CodisLabs/codis.git -b release3.2cd codismake

然後會得到編譯的檔案,不出意外都可以編譯成功,記得安裝linux的開發套件

image.png
  1. 在運行命令之前,先看一下運行命令包含的內容
    在config目錄下,會有運行幾個組件的設定檔,這些檔案都可以使用命令自動產生
codis-dashboard  --default-config #產生codis-dashboard的預設設定檔codis-proxy --default-config  #產生codis-proxy的預設設定檔

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


image.pngimage.png

相關的shell指令碼,看一下admin目錄中的內容,都可以理解的,修改下設定檔什麼的

  1. 運行叢集
./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的管理面板基本上是空的。

  1. 運行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。

  1. 在codis-fe的管理面板中操作
    首先添加codis-proxy


    image.png

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

image.png

  1. 測試,留意上面的圖片,我添加了兩台codis-proxy,然後4台redis-server,我們可以做測試了。
image.png
  1. 串連到不同的codis-proxy上面取得的資料都是一樣的,這樣當我們配置多個proxy的時候,其中的proxy掛掉了,也是可以正常使用的,另外通過管理介面,我們可以動態添加redis-server。

注意點

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

  1. 管理面板上的,在管理codis-proxy那一部分,可以看到我們的命令執行情況,命令分配到那一台主機。
  2. 加入新的redis-server之後,不要忘記了遷移slot,如果再生產環境遷移slot要注意時機。
  3. redis-proxy可以配置不同的data-center,我想這個在用戶端使用工具的時候可以指定。

配置多個proxy,串連不同的proxy擷取的資料都是一致的,proxy代理的是多個redis-master,資料在後端的redis-server上也是分區儲存的。

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

最後

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

參考

  • 唯品會 Redis cluster 大規模生產實踐
  • Codis教程
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.