先聲明:使用僞集羣方式搭建 cluster集羣, 進行端口號進行區分redis服務器
1、虛擬機安裝 (略)
這裏就不演示了,我這裏安裝的是 contos7.4 我的虛擬機IP地址:192.168.37.112
2、關閉防火牆
關閉防火牆 systemctl stop firewalld
3、安裝redis
cd /usr/local/src
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
tar -zxvf redis-3.2.9.tar.gz -C /usr/local
cd /usr/local/redis-3.2.9/
make
cd src
make install PREFIX=/usr/local/redis
cd ..
mv redis.conf /usr/local/redis
配置redis爲後臺啓動
vi /usr/local/redis/redis.conf
將daemonize no 改成daemonize yes
5、創建集羣文件
計劃集羣中 Redis 節點的端口號爲 9001-9006 ,端口號即集羣下各實例文件夾。數據存放在 端口號/data 文件夾中
mkdir /usr/local/redis-cluster
cd /usr/local/redis-cluster/
6、複製文件
在 /usr/local/redis-cluster 下創建 bin 文件夾,用來存放集羣運行腳本,並把安裝好的 Redis 的 src 路徑下的運行腳本拷貝過來。
mkdir bin
cd /usr/local/redis-3.2.9/src
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin
7、複製一個新 Redis 實例
現在從已安裝好的 Redis 中複製一個新的實例到 9001 文件夾,並修改 redis.conf 配置。
cp -r /usr/local/redis /usr/local/redis-cluster/9001
cd /usr/local/redis-cluster/9001/redis
vi redis.conf
8、再複製出五個新 Redis 實例
已經完成了一個節點了,其實接下來就是機械化的再完成另外五個節點,其實可以這麼做:把 9001 實例 複製到另外五個文件夾中,唯一要修改的就是 redis.conf 中的所有和端口的相關的信息即可,其實就那麼五個位置。開始操作
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9002
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9003
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9004
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9005
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9006
\cp -rf 命令是不使用別名來複制,因爲 cp 其實是別名 cp -i,操作時會有交互式確認,比較煩人。
修改 9002-9006 的 redis.conf 文件 %S 是替換的意思
vi /usr/local/redis-cluster/9002/redis/redis.conf
:%s/9001/9002
:wq
vi /usr/local/redis-cluster/9003/redis/redis.conf
:%s/9001/9003
:wq
vi /usr/local/redis-cluster/9004/redis/redis.conf
:%s/9001/9004
:wq
vi /usr/local/redis-cluster/9005/redis/redis.conf
:%s/9001/9005
:wq
vi /usr/local/redis-cluster/9006/redis/redis.conf
:%s/9001/9006
:wq
實我們也就是替換了下面這四行:
port 9002
dir /usr/local/redis-cluster/9002/data/
cluster-config-file nodes-9002.conf
pidfile /var/run/redis_9002.pid
啓動redis
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/9001/redis/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/9002/redis/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/9003/redis/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/9004/redis/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/9005/redis/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/9006/redis/redis.conf
ps aux | grep 'redis' 使用命令查詢下redis是否啓動成功
然後隨便找一個節點測試試
/usr/local/redis-cluster/9001/redis/bin/redis-cli -h 192.168.37.112 -p 9001
set name 123456 會發現報錯。。。。
(error) CLUSTERDOWN Hash slot not served
這是因爲雖然我們配置並啓動了 Redis 集羣服務,但是他們暫時還並不在一個集羣中,互相直接發現不了,而且還沒有可存儲的位置,就是所謂的slot(槽)。我們需要安裝ruby
9、安裝集羣所需軟件ruby
由於 Redis 集羣需要使用 ruby 命令,所以我們需要安裝 ruby 和相關接口。
yum install ruby
yum install rubygems
gem install redis 如果卡住了,下載不了的話,就需要使用本地上傳方式 上傳文件到/usr/local下面
我把這個文件上傳搭配百度雲上面了,大家可以去上面下載
https://pan.baidu.com/s/1P2h4vrtdk6Y5b73bRG5oMA
cd /usr/local
gem install -l redis-3.2.1.gem
然後開啓集羣
/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.37.112:9001 192.168.37.112:9002 192.168.37.112:9003 192.168.37.112:9004 192.168.37.112:9005 192.168.37.112:9006
集羣開啓成功,9001-9003爲主節點, 9004-9006位從節點 3主3備
然後 輸入 yes 進行確認
10、驗證集羣環境
依然是通過客戶端命令連接上,通過集羣命令看一下狀態和節點信息等。
/usr/local/redis-cluster/9001/redis/bin/redis-cli -c -h 192.168.37.112 -p 9001
會發現,我們連接的是9001端口,然後執行命令後, 值是存在 9002端口對應的redis上面,然後自動跳轉到了9002節點
代表我們集羣環境安裝成功
我們可以使用 info 命令查看下 節點信息 發現9002標識是主節點,下面有個從節點是 9005
11、SpringBoot連接集羣版的redis 修改yml文件
spring:
redis:
database: 1
# host: 192.168.37.110
# port: 6379
# password: 123
jedis:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
timeout: 10000
#集羣連接 需要把 上面的 host port 註釋掉
cluster:
nodes:
- 192.168.37.112:9001
- 192.168.37.112:9002
- 192.168.37.112:9003
- 192.168.37.112:9004
- 192.168.37.112:9005
- 192.168.37.112:9006
連接測試我就不展示了 可以參考我博客中的 另外一篇,springboot2.0集成redis 展示yml裏面配置有點差別而已
https://blog.csdn.net/jxpxlinkui/article/details/101765931
總結一下
這一篇 Redis 集羣部署搭建的文章真的是一步一步的走下來的,只要你安裝我的步驟來,就保證你能成功搭建一個 Redis 集羣玩玩,也可以這麼說,除了步驟繁瑣外,幾乎不存在技術含量,估計能看完的人都感覺累(說真的,寫這種文章真的很累人)。
接下來可能就是動態擴容、增加節點和減少節點,重新分配槽大小等,當然,還有最重要的就是怎麼和我們程序結合起來,以及如何更好的把 Redis 緩存集羣發揮出應有的效果,這些纔是最重要的。