哈嘍大家好,我是咸魚。
今天這篇文章介紹如何在一臺服務器(以 centos 7.9 為例)上通過 redis-trib.rb 工具搭建 Redis cluster (三主三從)。redis-trib.rb 是一個基于 Ruby 編寫的腳本,其功能涵蓋了創建、管理以及維護 Redis 集群的各個方面。
值得注意的是,隨著時間的推移,一些較新版本的 Redis 已經將 redis-trib.rb 標記為不推薦使用的工具。鑒于此,文章所采用的 Redis 版本為較老的 4.0.9 版本。
對于較新版本的 Redis,咸魚建議采用 redis-cli 工具來進行集群的操作與管理,以確保與 Redis 的最新特性保持一致。
我們先把架構畫出來,這樣后面部署的時候就很方便了。
# 三個 Master
192.168.149.131:6379
192.168.149.131:6380
192.168.149.131:6381
# 三個 Slave
192.168.149.131:26379
192.168.149.131:26380
192.168.149.131:26381
需要注意的是,Redis Cluster 中,節點之間通過建立 TCP 連接,使用 gossip 協議來傳播集群的信息,節點內部通信端口是服務端口 + 10000。
舉個例子,啟動 Redis 服務之后會有一個 6379 端口(對外端口)和一個 16379 端口(對內通信端口)。
開始部署
部署前準備
首先創建 Redis 存儲目錄,用來存放 rdb 文件等,接著創建 pid 文件和日志文件存放目錄:
安裝 Redis 以及相關依賴工具
我們先來安裝 redis 以及相關依賴(需要能夠訪問到互聯網):
# 安裝相關依賴
yum install -y wget gcc gcc-c++ make tar openssl openssl-devel cmake
# 安裝到 /usr/local 下
cd /usr/local/ && wget https://download.redis.io/releases/redis-4.0.9.tar.gz
# 解壓縮
tar -xvf redis-4.0.9.tar.gz
解壓縮完畢之后我們進入目錄開始編譯安裝:
配置并開啟 Redis 服務
首先我們先來配置六個 Redis 服務的配置文件:
配置文件中需要改動的配置項是下面幾個,其他的不變:
配置好之后,六個 Redis 服務依次啟動:
/usr/local/redis-4.0.9/src/redis-server redis-6379.conf && /usr/local/redis-4.0.9/src/redis-server redis-26379.conf
/usr/local/redis-4.0.9/src/redis-server redis-6380.conf && /usr/local/redis-4.0.9/src/redis-server redis-26380.conf
/usr/local/redis-4.0.9/src/redis-server redis-6381.conf && /usr/local/redis-4.0.9/src/redis-server redis-26381.conf
搭建 Ruby 環境
redis-trib.rb 是一個 Ruby 腳本,用于創建、管理和維護 Redis 集群,它提供了一種命令行界面來執行各種集群操作,如添加節點、刪除節點、平衡數據分布等,如果要使用 redis-trib.rb 這個 Ruby 腳本來管理 Redis Cluster,就需要安裝 Ruby 解釋器。
先下載 rvm 工具(網絡問題多試幾次):
#1.下載密鑰
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -
#2.下載安裝包(網絡問題多試幾次)
curl -L get.rvm.io | bash -s stable
# 驗證是否安裝成功
[root@localhost]# find / -name rvm
/usr/local/rvm
/usr/local/rvm/src/rvm
/usr/local/rvm/src/rvm/bin/rvm
/usr/local/rvm/src/rvm/lib/rvm
/usr/local/rvm/src/rvm/scripts/rvm
/usr/local/rvm/bin/rvm
/usr/local/rvm/lib/rvm
/usr/local/rvm/scripts/rvm
# 啟用 RVM 的環境變量
source /etc/profile.d/rvm.sh
#查看依賴
rvm requirements
#驗證 rvm 版本
rvm -v
PS:如果安裝 ruby 之后使用 redis-trib.rb 工具發現報錯:
根據提示可以知道 redis-trib.rb 腳本無法找到 redis 模塊,導致加載失敗,這通常是因為系統中缺少了所需的 Ruby Redis 模塊或模塊的版本問題。
運行以下命令安裝 Redis Gem 模塊:
# 安裝 redis 模塊,是 redis-trib.rb 腳本所需的依賴
gem install redis
創建 Redis 集群
創建集群(--replicas 1 表示指定每個 master 有一個 slave):
cd /usr/local/redis-4.0.9/ && ./src/redis-trib.rb create --replicas 1
192.168.149.131:6379 192.168.149.131:26379 192.168.149.131:6380 192.168.149.131:26380 192.168.149.131:6381 192.168.149.131:26381
由上圖可以看到:
# 查看集群信息
cd /usr/local/redis-4.0.9/ && ./src/redis-trib.rb info 192.168.149.131:6379
cd /usr/local/redis-4.0.9/ && ./src/redis-trib.rb check 127.0.0.1:6379
驗證
創建集群之后我們簡單驗證一下:寫入一個數據,可以看到數據重定向到了 master 3:
然后我們在 slave 3 上查看有沒有這個數據,是否同步完畢: