Redis集群搭建詳細(xì)指南

先有雞還是先有蛋?

最近有朋友問了一個(gè)問題,說畢業(yè)后去大城市還是小城市?去大公司還是小公司?我的回答都是大城市!大公司!
為什么這么說呢,你想一下,無論女孩男孩找朋友都喜歡找個(gè)子高胸大的。同樣的道理嘛,「大」總有大的好。
當(dāng)然,如果你要有能力找一個(gè)胸大個(gè)子高就更完美了。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),彝良企業(yè)網(wǎng)站建設(shè),彝良品牌網(wǎng)站建設(shè),網(wǎng)站定制,彝良網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,彝良網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

redis 集群簡介

Redis 是一個(gè)開源的 key-value 存儲(chǔ)系統(tǒng),由于出眾的性能,大部分互聯(lián)網(wǎng)企業(yè)都用來做服務(wù)器端緩存。Redis 在3.0版本前只支持單實(shí)例模式,雖然支持主從模式、哨兵模式部署來解決單點(diǎn)故障,但是現(xiàn)在互聯(lián)網(wǎng)企業(yè)動(dòng)輒大幾百G的數(shù)據(jù),可完全是沒法滿足業(yè)務(wù)的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。

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

隨隨便便搭建一個(gè)集群

安裝部署任何一個(gè)應(yīng)用其實(shí)都很簡單,只要安裝步驟一步一步來就行了。下面說一下 Redis 集群搭建規(guī)劃,由于集群至少需要6個(gè)節(jié)點(diǎn)(3主3從模式),所以,沒有這么多機(jī)器給我玩,我本地也起不了那么多虛擬機(jī)(電腦太爛),現(xiàn)在計(jì)劃是在一臺(tái)機(jī)器上模擬一個(gè)集群,當(dāng)然,這和生產(chǎn)環(huán)境的集群搭建沒本質(zhì)區(qū)別。

我現(xiàn)在就要在已經(jīng)有安裝了 Redis 的一個(gè) CentOS 下開始進(jìn)行集群搭建,如果你還不是很清楚 Linux 下如何安裝 Redis ,可以去看這一篇文章《了解一下 Redis 并在 CentOS 下進(jìn)行安裝配置》。請注意,下面所有集群搭建環(huán)境都基于已安裝好的 Redis 做的。

1.創(chuàng)建文件夾
我們計(jì)劃集群中 Redis 節(jié)點(diǎn)的端口號(hào)為 9001-9006 ,端口號(hào)即集群下各實(shí)例文件夾。數(shù)據(jù)存放在 端口號(hào)/data 文件夾中。

Redis 集群搭建詳細(xì)指南

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

2.復(fù)制執(zhí)行腳本
在 /usr/local/redis-cluster 下創(chuàng)建 bin 文件夾,用來存放集群運(yùn)行腳本,并把安裝好的 Redis 的 src 路徑下的運(yùn)行腳本拷貝過來??疵睿?/p>

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

3.復(fù)制一個(gè)新 Redis 實(shí)例
我們現(xiàn)在從已安裝好的 Redis 中復(fù)制一個(gè)新的實(shí)例到 9001 文件夾,并修改 redis.conf 配置。

Redis 集群搭建詳細(xì)指南

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

注意,修改 redis.conf 配置和單點(diǎn)唯一區(qū)別是下圖部分,其余還是常規(guī)的這幾項(xiàng):

port 9001(每個(gè)節(jié)點(diǎn)的端口號(hào))
daemonize yes
bind 192.168.119.131(綁定當(dāng)前機(jī)器 IP)
dir /usr/local/redis-cluster/9001/data/(數(shù)據(jù)文件存放位置)
pidfile /var/run/redis_9001.pid(pid 9001和port要對應(yīng))
cluster-enabled yes(啟動(dòng)集群模式)
cluster-config-file nodes9001.conf(9001和port要對應(yīng))
cluster-node-timeout 15000
appendonly yes

集群搭建配置重點(diǎn)就是取消下圖中的這三個(gè)配置:
Redis 集群搭建詳細(xì)指南

4.再復(fù)制出五個(gè)新 Redis 實(shí)例
我們已經(jīng)完成了一個(gè)節(jié)點(diǎn)了,其實(shí)接下來就是機(jī)械化的再完成另外五個(gè)節(jié)點(diǎn),其實(shí)可以這么做:把 9001 實(shí)例 復(fù)制到另外五個(gè)文件夾中,唯一要修改的就是 redis.conf 中的所有和端口的相關(guān)的信息即可,其實(shí)就那么四個(gè)位置。開始操作,看圖:

Redis 集群搭建詳細(xì)指南

\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 命令是不使用別名來復(fù)制,因?yàn)?nbsp;cp 其實(shí)是別名 cp -i,操作時(shí)會(huì)有交互式確認(rèn),比較煩人。

5.修改 9002-9006 的 redis.conf 文件
其實(shí)非常簡單了,你通過搜索會(huì)發(fā)現(xiàn)其實(shí)只有四個(gè)點(diǎn)需要修改,我們?nèi)痔鎿Q下吧,進(jìn)入相應(yīng)的節(jié)點(diǎn)文件夾,做替換就好了。命令非常簡單,看圖:

Redis 集群搭建詳細(xì)指南

vim redis.conf
:%s/9001/9002g

回車后,就會(huì)有替換幾個(gè)地方成功的提示,不放心可以手工檢查下:

Redis 集群搭建詳細(xì)指南

其實(shí)我們也就是替換了下面這四行:

port 9002
dir /usr/local/redis-cluster/9002/data/
cluster-config-file nodes-9002.conf
pidfile /var/run/redis_9002.pid

到這里,我們已經(jīng)把最基本的環(huán)境搞定了,接下來就是啟動(dòng)了。

其實(shí)我們已經(jīng)幾乎搭建好了

1.啟動(dòng) 9001-9006 六個(gè)節(jié)點(diǎn)
少廢話,直接看圖:
Redis 集群搭建詳細(xì)指南

/usr/local/bin/redis-server /usr/local/redis-cluster/9001/redis.conf 
/usr/local/bin/redis-server /usr/local/redis-cluster/9002/redis.conf 
/usr/local/bin/redis-server /usr/local/redis-cluster/9003/redis.conf 
/usr/local/bin/redis-server /usr/local/redis-cluster/9004/redis.conf 
/usr/local/bin/redis-server /usr/local/redis-cluster/9005/redis.conf 
/usr/local/bin/redis-server /usr/local/redis-cluster/9006/redis.conf

可以檢查一下是否啟動(dòng)成功:ps -el | grep redis
看的出來,六個(gè)節(jié)點(diǎn)已經(jīng)全部啟動(dòng)成功了。

2.隨便找一個(gè)節(jié)點(diǎn)測試試

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

set name mafly

Redis 集群搭建詳細(xì)指南

連接成功了,但好像報(bào)錯(cuò)了阿???
(error) CLUSTERDOWN Hash slot not served(不提供集群的散列槽),這是什么鬼?
這是因?yàn)殡m然我們配置并啟動(dòng)了 Redis 集群服務(wù),但是他們暫時(shí)還并不在一個(gè)集群中,互相直接發(fā)現(xiàn)不了,而且還沒有可存儲(chǔ)的位置,就是所謂的slot(槽)。

3.安裝集群所需軟件
由于 Redis 集群需要使用 ruby 命令,所以我們需要安裝 ruby 和相關(guān)接口。

yum install ruby
yum install rubygems
gem install redis

Redis 集群搭建詳細(xì)指南

這才是真正的創(chuàng)建集群

先不廢話,直接敲命令:

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

Redis 集群搭建詳細(xì)指南

簡單解釋一下這個(gè)命令:調(diào)用 ruby 命令來進(jìn)行創(chuàng)建集群,--replicas 1 表示主從復(fù)制比例為 1:1,即一個(gè)主節(jié)點(diǎn)對應(yīng)一個(gè)從節(jié)點(diǎn);然后,默認(rèn)給我們分配好了每個(gè)主節(jié)點(diǎn)和對應(yīng)從節(jié)點(diǎn)服務(wù),以及 solt 的大小,因?yàn)樵?Redis 集群中有且僅有 16383 個(gè) solt ,默認(rèn)情況會(huì)給我們平均分配,當(dāng)然你可以指定,后續(xù)的增減節(jié)點(diǎn)也可以重新分配。

M: 10222dee93f6a1700ede9f5424fccd6be0b2fb73 為主節(jié)點(diǎn)Id

S: 9ce697e49f47fec47b3dc290042f3cc141ce5aeb 192.168.119.131:9004 replicates 10222dee93f6a1700ede9f5424fccd6be0b2fb73 從節(jié)點(diǎn)下對應(yīng)主節(jié)點(diǎn)Id

目前來看,9001-9003 為主節(jié)點(diǎn),9004-9006 為從節(jié)點(diǎn),并向你確認(rèn)是否同意這么配置。輸入 yes 后,會(huì)開始集群創(chuàng)建。

Redis 集群搭建詳細(xì)指南

上圖則代表集群搭建成功啦!??!

驗(yàn)證一下:
依然是通過客戶端命令連接上,通過集群命令看一下狀態(tài)和節(jié)點(diǎn)信息等。

/usr/local/redis-cluster/bin/redis-cli -c -h 192.168.119.131 -p 9001
cluster info
cluster nodes

Redis 集群搭建詳細(xì)指南

通過命令,可以詳細(xì)的看出集群信息和各個(gè)節(jié)點(diǎn)狀態(tài),主從信息以及連接數(shù)、槽信息等。這么看到,我們已經(jīng)真的把 Redis 集群搭建部署成功啦!

設(shè)置一個(gè) mafly:
你會(huì)發(fā)現(xiàn),當(dāng)我們 set name mafly 時(shí),出現(xiàn)了 Redirected to slot 信息并自動(dòng)連接到了9002節(jié)點(diǎn)。這也是集群的一個(gè)數(shù)據(jù)分配特性,這里不詳細(xì)說了。

Redis 集群搭建詳細(xì)指南

總結(jié)一下

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

接下來可能就是動(dòng)態(tài)擴(kuò)容、增加節(jié)點(diǎn)和減少節(jié)點(diǎn),重新分配槽大小等,當(dāng)然,還有最重要的就是怎么和我們程序結(jié)合起來,以及如何更好的把 Redis 緩存集群發(fā)揮出應(yīng)有的效果,這些才是最重要的。

本文題目:Redis集群搭建詳細(xì)指南
分享網(wǎng)址:http://muchs.cn/article28/gdchcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、微信公眾號(hào)響應(yīng)式網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、軟件開發(fā)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營