linux中搭建redis集羣並測試

簡介

在前面我們介紹過redis的單機部署,但是在實際的工程應用中,我們主要使用的redis的集羣,redis集羣可以自動將數據部署到多個redis節點中。

redis集羣數據分片:redis集羣中有16384個hash slots,爲了計算給定的key對應到哪個slot中,通常計算給定的key的CRC16的值來對16384取模,來確定key對應的slot。所以,理論上redis集羣中,最多可有16384個節點。由於redis採用分片處理數據的方式,如果某個master節點掛了,並且沒有slave節點的話,則redis集羣也就掛了,因爲部分數據將無法存儲。

redis集羣採用主從模式,爲了保持集羣的高可用性,redis集羣採用master-slave的方式,即1個master節點可以包含多個slave節點,slave節點主要對master節點的數據進行備份,也就master節點的備份,如果master節點掛了,可以啓動salve節點替換掉原先的master節點,作爲新的master節點。

redis集羣沒有統一的入口,客戶端連接集羣的時候,連接集羣中的任意節點即可。

redis集羣使用投票容錯機制,如果集羣中超過半數以上的節點投票認爲某節點掛了,那麼這個節點就會被認爲掛掉了,所以,在設置redis集羣是,最少的master節點爲3個,如果每一個master節點都添加一個slave節點的話,搭建一個redis集羣總共需要6個節點,即3個master節點,3個slave節點。

步驟

1、獲取源碼包

wget http://download.redis.io/releases/redis-3.0.0.tar.gz

2、解壓redis

tar xzf redis-3.0.0.tar.gz

3、切換目錄編譯源碼

cd redis-3.0.0
make

4、安裝(將redis安裝到usr/local/redis目錄下面)

make install PREFIX=/usr/local/redis

5、將配置文件redis.conf和src/redis-trib.rb拷貝到安裝目錄下,並將目錄切換到/usr/local/redis/bin/下(方便後續操作)

#拷貝配置文件
cp redis.conf /usr/local/redis/bin/
#拷貝redis-trib.rb文件
cp src/redis-trib.rb /usr/local/redis/bin/
#切換到/usr/local/redis/bin/目錄下
cd /usr/local/redis/bin/

6、在bin目錄下創建redis_cluster目錄,並在redis_cluster下分別創建7000,7001,7002,7003,7004,7005目錄,用於存放每個redis節點的配置文件,文件的名稱可以以其他的名字命名,這裏以端口號的方式命名,主要是爲了方便查看。

mkdir -p redis_cluster/7000
mkdir -p redis_cluster/7001
mkdir -p redis_cluster/7002
mkdir -p redis_cluster/7003
mkdir -p redis_cluster/7004
mkdir -p redis_cluster/7005

7、將redis.config拷貝到redis_cluster/7000目錄下,並進行修改配置文件

#將redis拷貝到redis_cluster/7000目錄下
cp redis.conf ./redis_cluster/7000
#編輯redis.conf
vi ./redis_cluster/7000/redis.conf

修改redis的配置文件中的一下內容

port  7000             
bind 本機ip  //默認ip爲127.0.0.1 需要改爲其他節點機器可訪問的ip 否則創建集羣時無法訪問對應的端口,無法創建集羣
daemonize    yes     //redis後臺運行
pidfile  /var/run/redis_7000.pid          //後臺啓動時,redis會寫一個pid file
cluster-enabled  yes              //開啓集羣  把註釋#去掉
cluster-config-file  nodes_7000.conf   //集羣的配置  配置文件首次啓動自動生成
cluster-node-timeout  15000            //請求超時  默認15秒,可自行設置
appendonly  yes           //aof日誌開啓  有需要就開啓,它會每次寫操作都記錄一條日誌

8、將redis_cluster/7000目錄下的配置文件redis.conf分別拷貝到redis_cluster/7001、redis_cluster/7002、redis_cluster/7003、redis_cluster/7004、redis_cluster/7005中,然後修改配置文件。

#拷貝redis配置文件
cp ./redis_cluster/7000/redis.conf ./redis_cluster/7001/
cp ./redis_cluster/7000/redis.conf ./redis_cluster/7002/
cp ./redis_cluster/7000/redis.conf ./redis_cluster/7003/
cp ./redis_cluster/7000/redis.conf ./redis_cluster/7004/
cp ./redis_cluster/7000/redis.conf ./redis_cluster/7005/

並使用‘%s/原string/替換內容/g’命令對拷貝的文件內容進行替換,其中/g表示進行全文替換。以redis_cluster/7001/redis.conf的配置文件修改爲例,首先使用vi命令,編輯redis_cluster/7000/redis.conf文件。

vi ./redis_cluster/7001/redis.conf

輸入":%s/7000/7001/g"後,

會提示更改了3行

然後,使用“:wp”對當前配置文件保存。同樣,對其他的配置文件進行相同的操作,完成配置文件的修改。

9、通過指定配置文件的方式,分別啓動6個redis節點。如果閒太麻煩,也可以建立start.sh,將節點的啓動改爲腳本文件的方式。

#啓動第一個redis節點
./redis-server ./redis_cluster/7000/redis.conf
#啓動第二個redis節點
./redis-server ./redis_cluster/7001/redis.conf
#啓動第三個redis節點
./redis-server ./redis_cluster/7002/redis.conf
#啓動第四個redis節點
./redis-server ./redis_cluster/7003/redis.conf
#啓動第五個redis節點
./redis-server ./redis_cluster/7004/redis.conf
#啓動第六個redis節點
./redis-server ./redis_cluster/7005/redis.conf

10、通過ps -ef | grep redis檢測6個節點的redis是否啓動成功,如下圖,表示啓動成功

11、至此,六個節點的redis啓動成功,在很大程度上,跟單機的redis的部署相同,只是配置文件的修改不一樣。接下來開始通過redis-trib.rb搭建集羣,因爲redis-trib.rb運行需要依賴ruby的運行環境,就像java需要運行在jvm上一樣,因此,需要首先安裝ruby

yum install ruby

12、然後安裝redis-3.0.0.gem包(這個包需要提前下載,並拷貝到linux機器上,下載地址,由於csdn上下載所需積分比較多,大家也可以直接在瀏覽器中搜索下載)

gem install redis-3.0.0.gem

13、安裝完成後,使用./redis-trib.rb腳本建立集羣,其中,ip換成自己的ip地址,--replicas參數表示每個master節點的slave節點的個數。這裏因爲每個master節點只有一個slave節點,所以設置爲1.

./redis-trib.rb create --replicas 1 ip:7000 ip:7001 ip:7002 ip:7003 ip:7004 ip:7005

14、然後輸入yes。輸入yes之前的信息爲創建集羣所產生的配置信息、比如節點、nodeid,slave/master等,輸入yes表示同意改配置,然後生效。

15、連接集羣,其中-h表示主機的ip,這裏需要改爲自己的ip地址,-c連接集羣,-p表示端口號。在最前面講過,redis集羣沒有同意的入口,連接其中一個節點,就可以看到整個集羣的信息。

 ./redis-cli -h 10.111.25.205 -c -p 7002

16、查看集羣信息

cluster info
cluster nodes

至此已經完成了redis集羣的搭建,在搭建過程中,其1-5個步驟是安裝redis,與redis單機的部署相同。另外,對於集羣設置key和獲取key的值,與單機redis的命令相同,可以參考單機中的命令。

參考資料

redis集羣搭建(非常詳細,適合新手)

Redis集羣搭建與簡單使用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章