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.conf no-->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是我們在編程開發中不可或缺的一個中間件,如何使用好它、管理好它、最大化它的性能都是我們需要探索的問題。而這些的第一步就是我們先親自手動去搭建這樣一個集群,並了解它的基本運行機制,在以後的編程工作中,才能更高的發揮它的優點。
redis搭建集群並用TreeSoft管理