1. 程式人生 > >RedisCluster叢集搭建

RedisCluster叢集搭建

搭建叢集方案

安裝部署任何一個應用其實都很簡單,只要安裝步驟一步一步來就行了。下面說一下 Redis 叢集搭建規劃,由於叢集至少需要6個節點(3主3從模式),所以,沒有這麼多機器給我玩,我本地也起不了那麼多虛擬機器(電腦太爛),現在計劃是在一臺機器上模擬一個叢集,當然,這和生產環境的叢集搭  建沒本質區別。

 

本部落格計劃叢集,Redis 節點的埠號為 9001-9006 ,埠號即叢集下各例項資料夾。資料存放在 埠號/data 資料夾中。

多主多備一共6臺

 

 

  1. 先關閉防火牆  
  2. 安裝純淨版本的redis伺服器 (不要設定密碼)

 參考:https://www.cnblogs.com/toov5/p/9884260.html

但是 第五步時候 要把bind 改為本地ip 並且不要設定密碼!!!!!!requiredpass  lz在寫教程時候就搞了密碼!!

當前伺服器的ip地址

 

然後: 我們計劃叢集中 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

 

 

然後,複製指令碼。在 /usr/local/redis-cluster 下建立 bin 資料夾,用來存放叢集執行指令碼,並把安裝好的 Redis 的 src 路徑下的執行指令碼拷貝過來。看命令:

cd /usr/local/redis-cluster
mkdir bin

cd  /home/redis/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

 

然後,複製一個新 Redis 例項。我們現在從已安裝好的 Redis 中複製一個新的例項到 9001 資料夾,並修改 redis.conf 配置。

cp -r /usr/local/redis /usr/local/redis-cluster/9001

cd  /usr/local/redis-cluster/9001/redis/etc

注意,修改 redis.conf 配置和單點唯一區別是下圖部分,其餘還是常規的這幾項:

port 9001(每個節點的埠號)
daemonize yes
bind 192.168.119.131(綁定當前機器 IP)
dir /usr/local/redis-cluster/9001/data/(資料檔案存放位置,,自己加到最後一行 快捷鍵 shift+g)
pidfile /var/run/redis_9001.pid(pid 9001和port要對應)
cluster-enabled yes(啟動叢集模式)
cluster-config-file nodes9001.conf(9001和port要對應)
cluster-node-timeout 15000
appendonly yes  //開啟aof

 

然後,再複製出五個新 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

 

然後,修改 9002-9006 的 redis.conf 檔案。其實非常簡單了,你通過搜尋會發現其實只有四個點需要修改,我們全域性替換下吧,進入相應的節點資料夾,做替換就好了。命令非常簡單

vi /usr/local/redis-cluster/9002/redis/etc/redis.conf

%s/9001/9002
vi /usr/local/redis-cluster/9003/redis/etc/redis.conf

%s/9001/9003
vi /usr/local/redis-cluster/9004/redis/etc/redis.conf

%s/9001/9004
vi /usr/local/redis-cluster/9005/redis/etc/redis.conf

%s/9001/9005
vi /usr/local/redis-cluster/9006/redis/etc/redis.conf

%s/9001/9006 

 

其實,我們是替換了這幾個:

port 9002

dir /usr/local/redis-cluster/9002/data/

cluster-config-file nodes-9002.conf

pidfile /var/run/redis_9002.pid

 

下面我們來啟動:

/usr/local/redis/bin/redis-server  /usr/local/redis-cluster/9001/redis/etc/redis.conf

/usr/local/redis/bin/redis-server  /usr/local/redis-cluster/9002/redis/etc/redis.conf

/usr/local/redis/bin/redis-server  /usr/local/redis-cluster/9003/redis/etc/redis.conf

/usr/local/redis/bin/redis-server  /usr/local/redis-cluster/9004/redis/etc/redis.conf

/usr/local/redis/bin/redis-server  /usr/local/redis-cluster/9005/redis/etc/redis.conf

/usr/local/redis/bin/redis-server  /usr/local/redis-cluster/9006/redis/etc/redis.conf

通過 ps aux|grep “redis” 看到 已經啟動了

 全部都啟動後:

叢集啟動成功!

連線試試: 

/usr/local/redis-cluster/9001/redis/bin/redis-cli -h 192.168.91.5 -p 9001

 

然後,安裝叢集所需軟體

 由於 Redis 叢集需要使用 ruby 命令,所以我們需要安裝 ruby 和相關介面。

yum install ruby

yum install rubygems

gem install redis  (使用本地上傳方式,推薦filezilla,上傳後gem install -l redis-3.2.1.gem)

 

然後,叢集環境測試輸入:

/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.91.5:9001 192.168.91.5:9002 192.168.91.5:9003 192.168.91.5:9004 192.168.91.5:9005 192.168.91.5:9006

 

Slave 和 Master 一目瞭然啊!對應卡槽也是一目瞭然   主 備 也是一目瞭然

簡單解釋一下這個命令:呼叫 ruby 命令來進行建立叢集,--replicas 1 表示主從複製比例為 1:1,即一個主節點對應一個從節點;然後,預設給我們分配好了每個主節點和對應從節點服務,以及 solt 的大小,因為在 Redis 叢集中有且僅有 16383 個 solt ,預設情況會給我們平均分配,當然你可以指定,後續的增減節點也可以重新分配。

目前狀態是這樣,並向你確認是否同意這麼配置。輸入 yes 後,會開始叢集建立。

然後輸入yes,正在開啟redis 叢集:

 

 叢集OK了!

連線: 需要 -c表示叢集!!!

/usr/local/redis-cluster/9001/redis/bin/redis-cli  -c -h 192.168.91.5 -p 9001 

 

看到了根據演算法重定向 輸入值 和 取值

 

這一篇 Redis 叢集部署搭建的文章真的是一步一步的走下來的,只要你安裝我的步驟來,就保證你能成功搭建一個 Redis 叢集玩玩,也可以這麼說,除了步驟繁瑣外,幾乎不存在技術含量,估計能看完的人都感覺累(說真的,寫這種文章真的很累人)。

接下來可能就是動態擴容、增加節點和減少節點,重新分配槽大小等,當然,還有最重要的就是怎麼和我們程式結合起來,以及如何更好的把 Redis 快取叢集發揮出應有的效果,這些才是最重要的。