1. 程式人生 > 資料庫 >Linux搭建Redis叢集(搭建叢集必看)

Linux搭建Redis叢集(搭建叢集必看)

Linux搭建Redis叢集

今天開始,我們著手搭建Redis叢集,並實現客戶端連線並操作Redis叢集

1.首先,在開始搭建叢集之前,需要注意的是,redis3.0之後才支援叢集,但redis3.0-redis5.0之間需要ruby環境的支撐,而redis6.x需要gcc版本在5.3以上,在搭建叢集前需要檢查自己的機器的gcc版本是否符合我所說的再進行搭建,可以通過該命令檢視gcc版本,我機器的版本是5.4,建議使用redis5或者redis6的版本,能更快速的搭建好叢集

gcc -v

在這裡插入圖片描述
2. 下載redis的壓縮包,我這裡推薦你們官網地址,裡面有redis的所有版本,可以選擇相應版本下載

http://download.redis.io/releases/

3.我這裡使用的是redis5.x的版本,
在這裡插入圖片描述
4.使用命令解壓: tar -zxvf redis-5.0.2.tar.gz,進入解壓後的資料夾使用命令:make編譯一下(注:如果make編譯失敗並且報 jemalloc/jemalloc.h:沒有那個檔案中目錄 錯誤,這個很正常,第一次使用make編譯會有這個問題,使用:make MALLOC=libc 該命令可以解決),編譯好後進入src目錄,使用make install PREFIX=/usr/local/redis(注:也可以指定其他目錄,主要作用是將編譯好後的可執行檔案放到/usr/local/redis目錄下),等待編譯完成。

在這裡插入圖片描述
5.編譯完成後,使用命令cd …/utils 進入主目錄的utils資料夾下,檢視該目錄
在這裡插入圖片描述
6,將資料夾create-cluster,移動到你需要的目錄下,建議移動到/usr/local/redis/bin目錄下,進入該目錄並檢視

移動命令:mv create-cluster /usr/local/redis/bin/
切換命令: cd /usr/local/redis/bin

在這裡插入圖片描述
7.進入create-cluster 目錄,開啟指令碼create-cluster,命令vim create-cluster(用vim開啟後,若想編輯文件內的內容,按 i 鍵可進行編輯,編輯後按ESC鍵,退出編輯,再按Shift+:,然後在:後加上wq,意思是儲存離開即可)

在這裡插入圖片描述
8.修改create-cluster指令碼

PORT 改為6378(因為後面程式會加1,就需要比你想要設定的埠值-1,也就是開始埠為6379,可以自定義埠)
TIMEOUT=2000 超時時間,可以設定也可以使用預設
NODES=6 節點數量,這裡需要注意,如果是一臺伺服器做三主三從的偽叢集,則這裡不需要修改,如果是兩臺伺服器則這裡值為3,如果三臺伺服器則值為2
REPLICAS=1 這裡不要動

新增引數
PUBLICNET=192.168.1.190 這裡改為向外丟擲的IP地址,也就是公網IP
COUNT=10000 這個用於匯流排整合的埠,我們不止要開叢集的埠,還需要開匯流排埠,一般匯流排埠為叢集埠+10000,也就是叢集埠為6379,那麼匯流排埠為16379,(要開啟防火牆,否則會出錯)
TOTALPORT=0 匯流排埠,先定義,後面需要

在這裡插入圖片描述
9.修改start下的內容,如果操作步驟是跟著文件來,則直接複製已經修改後的指令碼就好
修改後的指令碼:

/usr/local/redis/bin/redis-server --port $PORT --cluster-enabled yes --cluster-config-file nodes-${PORT}.conf  --cluster-node-timeout $TIMEOUT --protected-mode no --cluster-announce-ip $PUBLICNET --cluster-announce-port $PORT --cluster-announce-bus-port $TOTALPORT  --appendonly yes --appendfilename appendonly-${PORT}.aof --dbfilename dump-${PORT}.rdb --logfile ${PORT}.log --daemonize yes

解釋:

/usr/local/redis/bin/redis-server redis    redis服務地址
--port $PORT      埠地址
--cluster-enabled yes     開啟叢集
--cluster-config-file node-${PORT}.conf    叢集的配置檔案
--cluster-node-timeout $TIMEOUT    叢集節點超時時間
--protected-mode no    protect-mode:是為了禁止公網訪問redis cache 需要關掉
--cluster-announce-ip $PUBLICNET    配置叢集對映的公網IP
--cluster-announce-port $PORT    配置叢集對映的埠
--cluster-announce-bus-port $TOTALPORT    配置叢集對映的匯流排埠
--appendonly yes     開啟AOF持久化策略
--appendfilename appendonly-${PORT}.aof    aof檔案
--dbfilename dump-${PORT}.rdb    rdb檔案,和aof一樣是一種持久化策略
--logfile ${PORT}.log    redis cache的日誌檔案
--daemonize yes    指定redis要用守護程序的方式啟動

修改後如圖顯示
在這裡插入圖片描述
10.修改create下的內容(注:解釋語句不要寫進去)

HOSTS=”$HOSTS 192.168.1.190:$PORT”   這裡將127.0.0.1改為你的機子的ip(私網IP)
如果是單伺服器叢集部署,只需要將redis-cli 的地址改掉,程式碼如下:
/usr/local/redis/bin/redis-cli --cluster create $HOSTS --cluster-replicas $REPLICAS  
如果是多伺服器地址,比如三臺,這樣每臺伺服器上有兩個redis服務,需要在$HOSTS後加上另外幾臺伺服器的ip+port,ip是私網ip ,下面展示三臺伺服器的操作
/usr/local/redis/bin/redis-cli --cluster create $HOSTS ip1:port1 ip1:port2 ip2:port1 ip2:port2   --cluster-replicas $REPLICAS 

在這裡插入圖片描述
11.修改stop下的內容

/usr/local/redis/bin/redis-cli -p $PORT shutdown nosave

在這裡插入圖片描述
12.修改watch下的內容

/usr/local/redis/bin/redis-cli -p $PORT cluster nodes | head -30

在這裡插入圖片描述
13.修改call下的內容

/usr/local/redis/bin/redis-cli  -p $PORT $2 $3 $4 $5 $6 $7 $8 $9

在這裡插入圖片描述
14.修改完後,按ESC鍵,退出編輯,再按shift+:,之後按wq,儲存退出,注:不能出現中文
在這裡插入圖片描述
15.使用命令開啟服務./create-cluster start,這裡是單伺服器部署,因此一次性開啟了六個節點,
如果是三臺伺服器,則只會開啟兩個節點

./create-cluster start

在這裡插入圖片描述
16.檢視redis服務是否啟動了,使用命令 ps aux | grep redis 檢視
在這裡插入圖片描述

17.使用命令./create-cluster create,它會詢問你這樣配置節點是否可以,輸入yes就好(注:多伺服器下,需要其他伺服器都執行./create-cluster start後才能使用create,否則會報錯)

./create-cluster create

在這裡插入圖片描述

18.顯示OK,就說明叢集已經佈置好了
在這裡插入圖片描述
19.操作一下看看是否沒有問題,使用命令 /usr/local/redis/bin/redis-cli -c -h 192.168.1.190 -p 6379 -c 命令是指可以自由切換節點

/usr/local/redis/bin/redis-cli -c -h 192.168.1.190 -p 6379

在這裡插入圖片描述
20.可以看到已經進來了,接下來進行設值
在這裡插入圖片描述
21.它的過程是這樣的 對key進行CRC16運算再%16384取餘之後的值去對應相應的slot(槽),圖中,redis會分配三個主節點的卡槽位置為0-5460,5461-10922,10923 - 16383,取餘之後的值落在那個區間,就會放在哪個節點裡,可以從上圖中看到,當設定不同的key是會進行上述操作,然後重定向到相對應的主節點中進行設值
最後使用客戶端工具連線伺服器上的叢集看是否成功,只需要填一個埠就好,會自動跳轉節點的(如果是阿里雲等雲伺服器需要對這些埠開放防火牆)
在這裡插入圖片描述
在這裡插入圖片描述
關於create-cluster指令碼的一些命令
./create-cluster start 開啟叢集節點服務
./create-cluster create 開始建立叢集
./create-cluster stop 關閉叢集
./create-cluster clean 清除叢集配置,日誌,aof檔案,重新佈置集群后需要清除
至此,叢集搭建完成,需要的小夥伴可以試一下哦