Mac 環境下 Redis 叢集的搭建

airland發表於2021-09-09

安裝 Redis

Mac 環境下安裝 Redis 是非常簡單的,直接執行命令:brew install redis 就可以了(需要安裝 homebrew),這也是我比較推薦的方式。透過 homebrew 安裝 Redis 之後,Redis 的環境變數、解除安裝、更新都可以透過簡單的命令來完成,也就是說你不再需要考慮管理 Redis 的問題了。

安裝完成之後,就可以直接在終端執行命令:

  • redis-server:啟動 redis 伺服器,預設埠 6379
  • redis-cli:啟動 redis 客戶端

配置 Redis 叢集環境

說明:透過 homebrew 安裝完成之後,redis 的預設配置檔案(redis.conf)的路徑位於:/usr/local/etc,環境配置的操作也基本在這個路徑下完成。

建立虛擬節點目錄、修改配置檔案

說明:各個步驟的詳細說明可以參考文件:
這個操作包含了兩個步驟:建立 Redis 虛擬節點的目錄,並修改虛擬節點的配置檔案,下面詳細說明。

  • 建立 Redis 虛擬節點目錄

在 /usr/local/etc 下建立 cluster 目錄,並在 cluster 目錄下建立目錄:7000、7001、7002、7003、7004、7005。需要執行的命令:

# 需要在 /usr/local/etc 路徑下
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
  • 修改配置檔案

複製 Redis 預設的配置檔案(/usr/local/etc/redis.conf)到 7000、7001、7002、7003、7004、7005 這6個目錄中。修改每一個目錄下的配置檔案,這裡以 7000 為例:

# cp redis.conf redis/cluster/7000/7000.conf
port 7000                                     # Redis 節點的埠號
cluster-enabled yes                           # 例項以叢集模式執行
cluster-config-file nodes-7000.conf           # 節點配置檔案路徑
cluster-node-timeout 5000                     # 節點間通訊的超時時間
appendonly yes                                # 資料持久化

啟動 Redis,並驗證各個節點的狀態

在任意目錄執行下面的6個命令,即啟動6個 Redis 節點:

redis-server /usr/local/etc/redis/cluster/7000/7000.conf &
redis-server /usr/local/etc/redis/cluster/7001/7001.conf &
redis-server /usr/local/etc/redis/cluster/7002/7002.conf &
redis-server /usr/local/etc/redis/cluster/7003/7003.conf &
redis-server /usr/local/etc/redis/cluster/7004/7004.conf &
redis-server /usr/local/etc/redis/cluster/7005/7005.conf &

透過命令啟動之後,檢視當前系統是否存在對應的程式。如果能看到如下類似的結果,則說明啟動成功。

 ps -ef |grep redis
119804143 69725   643   0  6:55下午 ttys009    0:01.37 redis-server 127.0.0.1:7000 [cluster]
119804143 69771   643   0  6:56下午 ttys009    0:00.80 redis-server 127.0.0.1:7001 [cluster]
119804143 69809   643   0  6:57下午 ttys009    0:00.11 redis-server 127.0.0.1:7002 [cluster]
119804143 69816   643   0  6:57下午 ttys009    0:00.08 redis-server 127.0.0.1:7003 [cluster]
119804143 69831   643   0  6:57下午 ttys009    0:00.04 redis-server 127.0.0.1:7004 [cluster]
119804143 69851   643   0  6:57下午 ttys009    0:00.03 redis-server 127.0.0.1:7005 [cluster]

建立叢集

當前系統中已經有了6個正在執行的 Redis 例項,需要使用 Redis 叢集命令列工具 redis-trib 來完成叢集的建立工作。redis-trib 可以在 下載得到。它是一個 Ruby 程式,這個程式透過向例項傳送特殊命令來完成建立新叢集,檢查叢集,或者對叢集進行重新分片(reshared)等工作。需要安裝 Redis 的 Ruby 模組。執行以下命令:

brew update
brew install ruby
sudo gem install redis

在 redis-trib.rb 檔案所在目錄執行命令:

# 無需指定哪個節點為 master,哪個節點為 slave,因為 redis 內部演算法已經幫我們實現了
# 使用 –replicas 1 建立叢集,即每個 master 帶一個 slave
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

建立過程會列印類似如下的資訊,表示建立叢集成功。

>>> Creating cluster
Connecting to node 127.0.0.1:7000: OK
Connecting to node 127.0.0.1:7001: OK
Connecting to node 127.0.0.1:7002: OK
Connecting to node 127.0.0.1:7003: OK
Connecting to node 127.0.0.1:7004: OK
Connecting to node 127.0.0.1:7005: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
...

驗證叢集可用性

透過兩種方式驗證叢集的可用性:1. 透過 redis-trib 提供的命令;2. 登入客戶端,執行操作

  • 檢查叢集的狀態:redis-trib check
# 執行命令 ./redis-trib.rb check 127.0.0.1:7000 可以看到類似如下的列印資訊,ip 與 port 指定叢集中的任意一個
 ./redis-trib.rb check 127.0.0.1:7000
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 359d7471abd2f06c5463f8003f69f85c59498a9d 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 0fd9da2bda6c812a9879adf61d42c11eade17bfc 127.0.0.1:7003
   slots: (0 slots) slave
   replicates 359d7471abd2f06c5463f8003f69f85c59498a9d
S: e44850529685bc27b1d816bec37bd5e5ec2b588c 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 00795ac18a89d1e537cac3a112c96cb5cd30510e
M: 00795ac18a89d1e537cac3a112c96cb5cd30510e 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 576f37746690d4d951e1ea31706ead9a42386880 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 1484ab04a4bfa60ab01325643ac54056f006b91d 127.0.0.1:7004
   slots: (0 slots) slave
   replicates 576f37746690d4d951e1ea31706ead9a42386880
[OK] All nodes agree about slots configuration.
>>> Check slots coverage...
[OK] All 16384 slots covered.
  • 檢視叢集的資訊:redis-trib info
# 執行命令 ./redis-trib.rb info 127.0.0.1:7000 可以看到類似如下的列印資訊,ip 與 port 指定叢集中的任意一個
 ./redis-trib.rb info 127.0.0.1:7000
127.0.0.1:7000 (359d7471...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:7002 (00795ac1...) -> 1 keys | 5461 slots | 1 slaves.
127.0.0.1:7001 (576f3774...) -> 1 keys | 5462 slots | 1 slaves.
[OK] 2 keys in 3 masters.
0.00 keys per slot on average.
  • 登入任意一個節點,執行命令
# 登入任意一個節點,執行 set、get 等命令
 redis-cli -c -p 7000
127.0.0.1:7000> set name qinyi
-> Redirected to slot [5798] located at 127.0.0.1:7001
OK
127.0.0.1:7001> get name
"qinyi"

到此,Mac 環境下 Redis 叢集的搭建就完成了。

·······························
歡迎關注課程:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/964/viewspace-2822257/,如需轉載,請註明出處,否則將追究法律責任。

相關文章