redis搭建叢集並用TreeSoft管理
前言:redis作為一款高效的NOSQL資料庫已經深入貫徹和落實到我們的日常開發程式碼中,作為快取、時間控制、資料倉庫、佇列等使用方法層出不窮,簡直是開寫程式碼、居家旅行之必備良藥。曾經,我們的專案都是單體的,直到後來逐漸演變為微服務—— 一個將我們的工程解耦成多個工程的體系。然後隨著我們專案的訪問量越來越高,後臺的吞吐量也越來越大。如果我們還採用的單體redis,效能很容易形成瓶頸。如何突破單體redis帶來的功能受限?如何突破效能帶來的問題?這時我們就可以考慮橫向擴充套件,搭建redis叢集。正所謂:眾人拾柴火焰高,原來一顆小火柴不足以照亮整個房子,一旦人多了,火柴多了,那麼散發出來的火焰就會更亮、更熱,叢集其實就是這個道理,更多的伺服器參與工作就會擺脫單體應用帶來的效能上的侷限。本篇部落格就來從零開始搭建一個redis叢集。注:本篇部落格搭建的redis叢集採用的linux伺服器是centos6.5,redis版本是4.0.6,因為沒有多臺伺服器,所以採用的是一臺伺服器模擬安裝多個redis節點的方式搭建伺服器;
本篇部落格的目錄
一:準備
二:搭建redis叢集
三:使用Treesoft管理
四:總結
正文
一:準備
1.1:安裝單體redis
首先下載redis的安裝包,然後解壓、 編譯,依次執行以下指令:
[root@host /]# mkdir /usr/software/ [root@host software]# wget http://download.redis.io/releases/redis-4.0.6.tar.gz [root@host software]# tar -xzvf redis-4.0.6.tar.gz [root@host software]#cd redis-4.0.6/ [root@host redis-4.0.6]# make && install
簡單解釋一下以上命令,首先建立一個redis的目錄,然後下載redis4.0.6版本,再解壓,然後編譯安裝,安裝完之後的樣子大概如下:
redis預設是非守護模式,也就是無法在後臺執行,我們需要把其預設的屬性給修改了,依次執行以下命令:
[root@host redis-4.0.6]# vi /usr/software/redis-4.0.6/redis.confno-->yes
上面的命令是用vi修改redis的配置檔案中的守護模式,將其由關閉模式改為開啟,開啟以後我們就可以在後臺執行redis了
在後臺啟動執行redis
[root@host src]#./redis-server ../redis.conf
成功啟動redis的會出現以下畫面:
然後我們再以客戶端方式執行:redis-cli
可以看到redis已經在運行了,並且我們做了一個簡單的測試set一個name值,然後再get這個name值。可以看到程式正常執行。
二:搭建redis叢集
2.1:複製配置檔案到多個redis
之前有提到我們的伺服器資源有限,所以將採用的是一臺伺服器安裝多個redis節點的方式。再具體到安裝過程,那就是採用多配置檔案的方式,將每個配置檔案配置成不同的埠號和目錄等,然後依次啟動,使用redis-trib來管理這個叢集。
首先我們需要先建立一個redis叢集資料夾,起名redis-cluster,然後準備6個節點,複製配置檔案到這個資料夾裡面:
[root@host software]# mkdir redis-cluster [root@host redis-cluster]# mkdir 6001 [root@host redis-cluster]# mkdir 6002 [root@host redis-cluster]# mkdir 6003 [root@host redis-cluster]# mkdir 6004 [root@host redis-cluster]# mkdir 6005 [root@host redis-cluster]# mkdir 6006 [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6001/ [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6002/ [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6003/ [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6004/ [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6005/ [root@host redis-cluster]# cp /usr/software/redis-4.0.6/redis.conf /usr/software/redis-cluster/6006/
以上命令是建立了6個節點,然後將單體的redis節點的配置檔案複製到每個節點中,接下來我們就要用這些配置檔案來配置叢集了
2.2:修改配置檔案
以下是最小的Redis群集配置檔案,根據此我們需要修改每個配置檔案中的這些屬性:
port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
依次執行命令,修改每個配置檔案
[root@host 6001]# vi redis.conf
①修改埠號,這裡和我們配置的埠號保持一致:
②修改appendonly為yes
③開啟cluster-enabled 為yes,即為開啟叢集模式
④修改叢集節點為當前配置檔案的conf檔案
⑤:修改超時時間為5000ms,原來為15000.
(用vi修改完記得用切記vi命令儲存:wq!)
2.3:配置多個redis
按照2.2中給出的步驟,依次配置6個節點,注意節點、conf每個配置的不同
2.4:安裝ruby
因為redis的叢集管理工具需要用到ruby,接下來我們需要安裝ruby依賴庫:
這裡我們不採用yum安裝,因為yum安裝的ruby預設版本號是1.9。而redis的叢集管理工具trib的最小ruby版本號要求是2.2.2.(版本低於2.2.2會無法啟動)所以我們採用手動的方式安裝ruby
依次執行一下命令
[root@host software]# mkdir ruby [root@host ruby]# wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz [root@host ruby]# tar xf ruby-2.2.2.tar.gz [root@host ruby-2.2.2]# cd ruby-2.2.2 [root@host ruby-2.2.2]#./configure --prefix=/usr/local/ruby-2.2.2 [root@host ruby-2.2.2]# make && make install
然後檢視ruby版本號。如果出現的是2.2.2就表示成功了
2.5:安裝gem redis
[root@host ~]# yum install rubygems [root@host ruby]# gem install redis
2.6使用redis-trib啟動叢集
2.6.1 依次啟動redis節點
[root@host src]#cd /usr/software/redis-4.0.6/src [root@host src]#./redis-server/usr/software/redis-cluster/6001/redis.conf [root@host src]#./redis-server/usr/software/redis-cluster/6002/redis.conf [root@host src]#./redis-server/usr/software/redis-cluster/6003/redis.conf [root@host src]#./redis-server/usr/software/redis-cluster/6004/redis.conf [root@host src]#./redis-server/usr/software/redis-cluster/6005/redis.conf [root@host src]#./redis-server/usr/software/redis-cluster/6006/redis.conf
2.6.2:搭建redis叢集
[root@host src]#/usr/software/redis-4.0.6/src/redis-trib.rb create --replicas 1 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006
三:安裝TreeSoft介面化管理工具
3.1:測試redis叢集
首先我們用redis客戶端啟動一個節點,可以看出redis將值重定向到節點6002上面去了
[root@host src]# ./redis-cli -c -h 127.0.0.1 -p 6001
關於redis的叢集分片問題:
這段描述表示了redis的叢集是如何工作的,通過將節點進行劃分不同的hash槽來實現資料的儲存,每次當進行set值的時候,redis叢集會對鍵進行crc16的演算法校驗,然後再取模,這樣可以保證鍵可以落在16384範圍中的某一個點上。然後再取不同的範圍,定位到具體的節點上,這種結構的伸縮興比較好,會避免刪除或者增加節點的時候導致叢集不可用。
3.2:安裝treeSoft
3.2.1:簡介 treesoft是redis的一個介面化管理工具,可以通過它來檢視redis的key和vlaue的集合,進行簡單配置就可以,介面簡單操作方便,因此我們來安裝一下treeSoft:
首先必須得安裝tomcat(7.0+)、jdk(1.7+),然後下載treesoft,下載地址:http://www.treesoft.cn/dms.html。
下載之後解壓,然後將treenms放入到tomcat到webapps目錄下,再啟動tomcat,我的目錄是:/usr/software/tomcat/apache-tomcat-7.0.92/webapps/treenms
就可以運行了
注:因為篇幅原因,本篇部落格不介紹安裝tomcat、jdk的詳細教程,不會的同學可以自行google
3.2.2:treesoft管理
啟動tomcat,然後訪問treesoft
訪問地址:http://176.122.132.220:8070/treenms/treesoft/index,就可以看到下面的介面了,並且可以對鍵進行新增、刪除、修改工作、重新整理等操作,很方便。只需要在右上角進行簡單的配置就可以了
可以看到介面乾淨清爽,可以隨意切換叢集中的節點(6001、6002等)
四:總結
本篇部落格講述了redis如何搭建叢集,以及redis叢集的基本執行原理,還有後來的使用treesoft進行管理叢集,redis是我們在程式設計開發中不可或缺的一箇中間件,如何使用好它、管理好它、最大化它的效能都是我們需要探索的問題。而這些的第一步就是我們先親自手動去搭建這樣一個叢集,並瞭解它的基本執行機制,在以後的程式設計工作中,才能更高的發揮它的優點。