日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

redis集群的搭建详细教程

發(fā)布時間:2024/7/5 编程问答 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis集群的搭建详细教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 Redis-cluster架構(gòu)圖

? ? ? ? ? ?

redis-cluster投票:容錯??(至少要三個才可以,才能超過半數(shù)

?

架構(gòu)細(xì)節(jié):

(1)所有的redis節(jié)點(diǎn)彼此互聯(lián)(PING-PONG機(jī)制),內(nèi)部使用二進(jìn)制協(xié)議優(yōu)化傳輸速度和帶寬.

(2)節(jié)點(diǎn)的fail是通過集群中超過半數(shù)的節(jié)點(diǎn)檢測失效時才生效.

(3)客戶端與redis節(jié)點(diǎn)直連,不需要中間proxy層.客戶端不需要連接集群所有節(jié)點(diǎn),連接集群中任何一個可用節(jié)點(diǎn)即可。

(4)redis-cluster把所有的物理節(jié)點(diǎn)映射到[0-16383]slot上,cluster?負(fù)責(zé)維護(hù)node<->slot<->value

?

Redis?集群中內(nèi)置了?16384?個哈希槽,當(dāng)需要在?Redis?集群中放置一個?key-value?時,

redis?先對?key?使用?crc16?算法算出一個結(jié)果,然后把結(jié)果對?16384?求余數(shù),

這樣每個?key?都會對應(yīng)一個編號在?0-16383?之間的哈希槽,redis?會根據(jù)節(jié)點(diǎn)數(shù)量大致

均等的將哈希槽映射到不同的節(jié)點(diǎn)

?

搭建集群,極限情況也就最多16384個節(jié)點(diǎn)。

?

2 Redis集群的搭建

Redis集群中至少應(yīng)該有3個節(jié)點(diǎn)。要保證集群得高可用,需要每個節(jié)點(diǎn)有1個備份機(jī)。

Redis集群需要6臺服務(wù)器。

搭建偽分布式??梢允褂靡慌_虛擬機(jī)允許6個redis實(shí)例。需要修改redis得端口號7001-7006

?

3? 集群搭建過程

1 實(shí)例準(zhǔn)備

?第一步:準(zhǔn)備好1臺redis服務(wù)器

【這里我使用的之前搭建好的一臺服務(wù)器】

虛擬機(jī)上面安裝Redis的方法,參照的是redis在Linux上的安裝教程:

?第二步:在/usr/local下面創(chuàng)建一個集群目錄

# mkdir /usr/local/redis-cluster

第三步:拷貝已經(jīng)安裝好的redis實(shí)例到redis-cluster目錄下

?

[root@admin local]# cp -r redis/bin redis-cluster/redis01

第四步:刪除拷貝的實(shí)例里面的dump.rdb 和 appendonly.aof文件。

因?yàn)楸緦?shí)例沒有啟動AOF持久化的,所以就沒有appendonly.aof文件。

只用刪除dump.rdb文件。

我們搭建集群的時候,每個節(jié)點(diǎn)應(yīng)該是一個空節(jié)點(diǎn),這里面不應(yīng)該有數(shù)據(jù),這個實(shí)例之前使用過,里面有數(shù)據(jù)。

搭建集群的時候防止出現(xiàn)問題,所以先給刪除掉,保證是一個干凈的節(jié)點(diǎn)。

[root@admin redis01]# rm -rf dump.rdb

第五步:修改配置文件中的端口號

[root@admin redis01]# vim redis.conf

將默認(rèn)的6379端口修改為7001

輸入wq保存并退出

第六步:修改配置文件中的啟動集群

[root@admin redis01]# vim redis.conf

修改前:

修改后:

輸入wq保存并退出

?

第七步:復(fù)制第六步修改完成配置文件的redis實(shí)例5份

[root@admin redis-cluster]# cp -r redis01/ redis02 [root@admin redis-cluster]# cp -r redis01/ redis03 [root@admin redis-cluster]# cp -r redis01/ redis04 [root@admin redis-cluster]# cp -r redis01/ redis05 [root@admin redis-cluster]# cp -r redis01/ redis06

?

第八步:修改redis02~redis06實(shí)例的端口號分別為7002~7006

[root@admin redis-cluster]# vim redis02/redis.conf [root@admin redis-cluster]# vim redis03/redis.conf [root@admin redis-cluster]# vim redis04/redis.conf [root@admin redis-cluster]# vim redis05/redis.conf [root@admin redis-cluster]# vim redis06/redis.conf

第九步:使用批處理啟動上面的6個實(shí)例

這里也可以一個一個的啟動,只是麻煩一些。

1、首先執(zhí)行命令vim start-all.sh創(chuàng)建一個批處理文件,并編輯

[root@admin redis-cluster]# vim start-all.sh

文件的內(nèi)如如下:

cd redis01 ./redis-server redis.conf cd .. cd redis02 ./redis-server redis.conf cd .. cd redis03 ./redis-server redis.conf cd .. cd redis04 ./redis-server redis.conf cd .. cd redis05 ./redis-server redis.conf cd .. cd redis06 ./redis-server redis.conf cd ..

2、修改start-all.sh文件的權(quán)限,給當(dāng)前用戶所有權(quán)限

?

[root@admin redis-cluster]# chmod u+x start-all.sh

3、執(zhí)行start-all.sh啟動所有的6個redis實(shí)例

[root@admin redis-cluster]# ./start-all.sh

4、查看一下是否真的啟動起來了

[root@admin redis-cluster]# ps -aux | grep -i redis --color

?

到這里6個節(jié)點(diǎn)全部配置好,并且啟動起來了。

?

下面就需要把集群搭建起來,也就是把這六個節(jié)點(diǎn)連到一起來。

這里我們需要使用一個工具,這個工具就在我們的redis源代碼的src目錄下面。

執(zhí)行命令切換到src目錄下:

[root@admin redis-cluster]# cd /usr/local/redis-3.0.0/src

查看里面的rb文件

[root@admin src]# ll *.rb

復(fù)制Ruby腳本文件redis-trib.rb到redis-cluster目錄下去

[root@admin src]# cp -r redis-trib.rb /usr/local/redis-cluster/

下面簡單了解一下Ruby是什么?

?

2 集群環(huán)境的搭建

第一步:我們使用ruby腳本搭建集群,所以需要安裝ruby的運(yùn)行環(huán)境。

依次執(zhí)行下面兩條命令

# yum install ruby

中間如果出現(xiàn)詢問輸入y確認(rèn)即可。

# yum install rubygems

?中間如果出現(xiàn)詢問輸入y確認(rèn)即可。

第二步:安裝ruby腳本運(yùn)行使用的包

1.上傳包到Linux服務(wù)器上

?2、將其復(fù)制到/usr/local目錄下

[root@admin soft]# cp redis-3.0.0.gem /usr/local

3、安裝redis-3.0.0.gem

[root@admin local]# gem install redis-3.0.0.gem

這樣這個庫就安裝好了。

現(xiàn)在redis-trib.rb這個腳本就可以執(zhí)行了。

?

3 使用ruby腳本搭建集群

[root@admin redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.128:7001 192.168.25.128:7002 192.168.25.128:7003 192.168.25.128:7004 192.168.25.128:7005 192.168.25.128:7006

1 表示每個節(jié)點(diǎn)有一個備份機(jī)。

?因?yàn)槲覀兪窃谝慌_服務(wù)器上面演示,ip一樣只是端口不一樣。執(zhí)行的過程中有一個計算過程,算出來是6個節(jié)點(diǎn),所以集群里面有三個節(jié)點(diǎn)。

如果里面只有5個ip地址列表的話,就不是整數(shù)了,會報錯。所以這里一定要是偶數(shù)個節(jié)點(diǎn)。

?

再補(bǔ)充一下:如果我們真的是在六臺服務(wù)器上搭建集群的話,不中和這個也是一樣的。

只需要在任意一臺服務(wù)器上面執(zhí)行上面的搭建環(huán)境過程,

使用Ruby腳本搭建集群,但是特別需要注意的是:每臺

服務(wù)器上的防火墻一定要關(guān)閉。如果沒有關(guān)閉防火墻的話

在詢問是否可以的時候,輸入yes之后,會卡住Waiting

for the cluster to join......這里不動。

?

4 使用redis-cli連接集群

?連接集群我們使用redis提供的客戶端redis-cli,連接集群中的任意節(jié)點(diǎn)就可以了。

[root@admin redis-cluster]# redis01/redis-cli -p 7006 -c

-c 代表連接的是redis集群。

連接從節(jié)點(diǎn)也是一樣的。

下面測試一下:

可以看到通過計算,username定位到了14315這個哈希槽,存入的是端口7003的這臺服務(wù)器。

可以看到通過計算,age定位到了741這個哈希槽,存入的是端口7001的這臺服務(wù)器。

可以看到,這樣數(shù)據(jù)就可以均勻的分布到每一臺服務(wù)器,可以實(shí)現(xiàn)每個節(jié)點(diǎn)都有一定數(shù)量的數(shù)據(jù)。

如果主節(jié)點(diǎn)掛了,從節(jié)點(diǎn)就可以頂替工作,這也就實(shí)現(xiàn)了高可用。

?

特別需要注意的是:連接集群的時候需要加上?-c?參數(shù)

轉(zhuǎn)載于:https://www.cnblogs.com/lywJ/p/10710878.html

總結(jié)

以上是生活随笔為你收集整理的redis集群的搭建详细教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。