Linux 下redis集羣搭建

一、簡介

Redis 是一個開源的 key-value 存儲系統,由於出衆的性能,大部分互聯網企業都用來做服務器端緩存。Redis 在3.0版本前只支持單實例模式,雖然支持主從模式、哨兵模式部署來解決單點故障,但是現在互聯網企業動輒大幾百G的數據,可完全是沒法滿足業務的需求,所以,Redis 在 3.0 版本以後就推出了集羣模式。

Redis 集羣採用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 個 slot,每個 Redis 實例負責其中一部分 slot 。集羣中的所有信息(節點、端口、slot等),都通過節點之間定期的數據交換而更新。
Redis 客戶端可以在任意一個 Redis 實例發出請求,如果所需數據不在該實例中,通過重定向命令引導客戶端訪問所需的實例。

單機版搭建:https://blog.csdn.net/qq_15901351/article/details/84191912

二、搭建步驟

由於集羣至少需要6個節點(3主3從模式),目前沒有那麼多服務器用來搭建,準備在一臺服務器上搭建6個節點,不同的端口區分,實現僞集羣,與生產上正式的原理是一樣的,只是在不通的服務器上配置。

參考:

https://www.cnblogs.com/mafly/p/redis_cluster.html#!comments

1、安裝單機版redis服務

之前單機版redis的redis被我安裝在了/home/redis/ redis-3.2.0下

方便操作redis,準備把 redis-3.2.0轉移到/usr/local/下

mv redis-3.2.0 /usr/local/

2、創建redis-cluster文件夾

準備搭建集羣中 Redis 節點的端口號爲 9001-9006 ,端口號即集羣下各實例文件夾。數據存放在 端口號/data 文件夾中。

mkdir /usr/local/redis-cluster
cd redis-cluster/
mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data

3、複製執行腳本

在 /usr/local/redis-cluster 下創建 bin 文件夾,用來存放集羣運行腳本,並把安裝好的 redis-3.2.0 的 src 路徑下的運行腳本拷貝過來。

cd /usr/local/redis-cluster
mkdir bin
cd /usr/local/redis-3.2.0/src
cp mkreleasehdr.sh redis-benchmark redis-check-aof  redis-check-rdb redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin

4、複製Redis 新實例

從已安裝好的 Redis 中複製一個新的實例到 9001 文件夾,並修改 redis.conf 配置。

cp  /usr/local/redis-3.2.0/* /usr/local/redis-cluster/9001

 修改 redis.conf 配置

port 9001(每個節點的端口號)
daemonize yes (後臺自啓)
bind 196.168.119.121(綁定當前機器 IP)
dir /usr/local/redis-cluster/9001/data/(數據文件存放位置)
pidfile /var/run/redis_9001.pid(pid 9001和port要對應)
cluster-enabled yes(啓動集羣模式)
cluster-config-file nodes-9001.conf(9001和port要對應)
cluster-node-timeout 15000
appendonly yes

5、同步9001實例到其他節點下,修改對應配置
\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

修改9002-9006 的 redis.conf 文件配置,同上。

使用全局替換命令::%s/原字符串/新字符串/g

:%s/9001/9002/g

至此,6個節點已經基本搭建成功。

6、分別啓動6個節點服務,測試是否啓動成功

cd /usr/local/redis-cluster/bin

./redis-server  ../9001/redis.conf 

./redis-server  ../9002/redis.conf 

./redis-server  ../9003/redis.conf 

./redis-server  ../9004/redis.conf 

./redis-server  ../9005/redis.conf 

./redis-server  ../9006/redis.conf 

全部啓動成功。。。。

7、安裝集羣所需軟件

由於 Redis集羣 官方需要使用 ruby 命令,所以我們需要安裝 ruby的相關軟件,使用以下命令安裝:

yum install ruby

yum install rubygems

gem install redis

如果出現如下錯誤,需要升級Ruby

( 解決redis requires ruby version 2.3.0

參考:http://www.javashuo.com/article/p-wdbfpavd-gv.html

8、創建集羣

注意點:

開放端口:iptables -A INPUT -ptcp --dport  9001-j ACCEPT

# requirepass 123456 redis.conf文件中的密碼註釋掉

/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 127.0.0.1:9005 127.0.0.1:9006
  
###調用 ruby 命令來進行創建集羣,--replicas 1   表示主從複製比例爲 1:1,即一個主節點對應一個從節點。

啓動成功。。。。

9、測試連接

10、redis集羣操作

集羣方式登陸: redis-cli -h 127.0.0.1-c -p 9001//-c說明以集羣的方式登錄 任意一個節點都可以創建key,或者查看key(演示) redis-trib.rb check 192.168.133.130:7000//檢測集羣狀態 cluster nodes//列出節點 cluster info//查看集羣信息 cluster meet ip port //添加節點 cluster forget node_id //移除某個節點 cluster replicate node_id//將當前節點設置爲指定節點的從 cluster saveconfig//保存配置文件