1. 程式人生 > >Linux下Redis的叢集部署

Linux下Redis的叢集部署

一、Redis的單機安裝

    由於本人是線上安裝,此處只簡單介紹線上安裝的簡要步驟。

(1) 安裝Redis需要依託GCC環境,先檢查Linux是否已經安裝了GCC,如果沒有安裝,則需要進行安裝。

// 檢視是否已安裝gcc
gcc -v
// 安裝gcc命令
yum install gcc-c++

(2)安裝Ruby和Rubygems

// 安裝Ruby
yum install ruby

在安裝Rubygems的時候,提示以下資訊。所以沒有再另外安裝Rubygems

Package rubygems-2.0.14.1-34.el7_6.noarch already installed and latest version

(3)安裝Redis

// 獲取安裝包
$ wget http://download.redis.io/releases/redis-5.0.3.tar.gz
// 解壓縮
$ tar xzf redis-5.0.3.tar.gz
$ cd redis-5.0.3
// 安裝Redis
$ make

(4)驗證Redis的安裝

// 進入Redis的安裝目錄
cd /usr/local/bin
// 檢視檔案
dir
// 結果如下:
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server

(5) 啟動Redis

// 進入redis的解壓縮目錄
cd /usr/redis/redis-5.0.3
// 啟動Redis
redis-server redis.conf

二、Redis的叢集部署

(1) 本人設定的是6個節點的Redis作為叢集,因此需要建立6個資料夾,埠號分別設定為:6001~6006

// 進入redis-5.0.3的父節點
cd /usr/redis
// 新建6個資料夾
mkdir redis600{1,2,3,4,5,6}

(2) 進入Redis的安裝目錄,將redis-cli、redis-server分別複製到上述建立的資料夾中

// 進入Redis的安裝目錄
cd /usr/local/bin
// 複製檔案到建立的6個資料夾
cp redis-cli redis-server /usr/redis/redis6001
cp redis-cli redis-server /usr/redis/redis6002
cp redis-cli redis-server /usr/redis/redis6003
cp redis-cli redis-server /usr/redis/redis6004
cp redis-cli redis-server /usr/redis/redis6005
cp redis-cli redis-server /usr/redis/redis6006

(3)在每個資料夾下新建一個redis.conf檔案,檔案內容為:

port 6001 // 埠號
appendonly yes  
cluster-enabled yes 允許叢集
cluster-config-file "node.conf" // 叢集配置檔案
cluster-node-timeout 5000  // 節點超時時間
daemonize yes // 後臺執行
masterauth  *********  // 主節點許可權
requirepass *********  // 密碼,節點密碼保持一致
bind *****   訪問ip

(4) 配置Redis的批量啟動檔案

cd redis6001
./redis-server redis.conf
cd ..
cd redis6002
./redis-server redis.conf
cd ..
cd redis6003
./redis-server redis.conf
cd ..
cd redis6004
./redis-server redis.conf
cd ..
cd redis6005
./redis-server redis.conf
cd ..
cd redis6006
./redis-server redis.conf

(5) 檢視Redis執行狀態

netstat -tnulp | grep redis
// 或者
ps  aux | grep redis

(6) 進入redis6001執行叢集命令

./redis-cli --cluster create IP:6001 IP:6002 IP:6003 IP:6004 IP:6005 IP:6006 --cluster-replicas 1

可能很多文章裡面是使用以下命令進行叢集配置

./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

但是執行該命令時,會提示該命令已不適用:

WARNING: redis-trib.rb is not longer available!
You should use redis-cli instead.
All commands and features belonging to redis-trib.rb have been moved
to redis-cli.
In order to use them you should call redis-cli with the --cluster
option followed by the subcommand name, arguments and options.
Use the following syntax:
redis-cli --cluster SUBCOMMAND [ARGUMENTS] [OPTIONS]
Example:
redis-cli --cluster create 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 --cluster-replicas 1
To get help about all subcommands, type:
redis-cli --cluster help

(7) 批量啟動叢集Redis服務

sh -x startall.sh

(8)連線redis服務

  連線叢集不能使用 redis-cli -h 127.0.0.1 -p 6001 -a ******命令,此時獲取其他節點的資料時會出現問題。例如:

// 連線叢集不能使用 
redis-cli -h 127.0.0.1 -p 6001 -a ******

-127.0.0.1:6001> keys *
1) "mylist"
2) "birthday"
3) "sex"
-127.0.0.1:6001> get name
(error) MOVED 5798 127.0.0.1:6002
-127.0.0.1:6001> get sex
"male"

此時只能獲取本節點下儲存的內容,其他節點儲存的內容將無法獲取。

(9) 叢集連線方式

redis-cli -c -h 127.0.0.1 -p 6001 -a *****

127.0.0.1:6001> keys *
1) "mylist"
2) "birthday"
3) "sex"
127.0.0.1:6001> get name
-> Redirected to slot [5798] located at 127.0.0.1:6002
"nsk"

此時,可以正常獲取其他節點上的內容了,哈哈