Linux下Redis的叢集部署
阿新 • • 發佈:2018-12-20
一、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"
此時,可以正常獲取其他節點上的內容了,哈哈