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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

redis集群的搭建详细教程

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

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

? ? ? ? ? ?

redis-cluster投票:容錯(cuò)??(至少要三個(gè)才可以,才能超過(guò)半數(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是通過(guò)集群中超過(guò)半數(shù)的節(jié)點(diǎn)檢測(cè)失效時(shí)才生效.

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

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

?

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

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

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

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

?

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

?

2 Redis集群的搭建

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

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

搭建偽分布式。可以使用一臺(tái)虛擬機(jī)允許6個(gè)redis實(shí)例。需要修改redis得端口號(hào)7001-7006

?

3? 集群搭建過(guò)程

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

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

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

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

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

# 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í)例沒(méi)有啟動(dòng)AOF持久化的,所以就沒(méi)有appendonly.aof文件。

只用刪除dump.rdb文件。

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

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

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

第五步:修改配置文件中的端口號(hào)

[root@admin redis01]# vim redis.conf

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

輸入wq保存并退出

第六步:修改配置文件中的啟動(dòng)集群

[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í)例的端口號(hào)分別為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

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

這里也可以一個(gè)一個(gè)的啟動(dòng),只是麻煩一些。

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

[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)前用戶(hù)所有權(quán)限

?

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

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

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

4、查看一下是否真的啟動(dòng)起來(lái)了

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

?

到這里6個(gè)節(jié)點(diǎn)全部配置好,并且啟動(dòng)起來(lái)了

?

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

這里我們需要使用一個(gè)工具,這個(gè)工具就在我們的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/

下面簡(jiǎn)單了解一下Ruby是什么?

?

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

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

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

# yum install ruby

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

# yum install rubygems

?中間如果出現(xiàn)詢(xún)問(wè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

這樣這個(gè)庫(kù)就安裝好了。

現(xiàn)在redis-trib.rb這個(gè)腳本就可以執(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 表示每個(gè)節(jié)點(diǎn)有一個(gè)備份機(jī)

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

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

?

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

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

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

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

在詢(xún)問(wèn)是否可以的時(shí)候,輸入yes之后,會(huì)卡住Waiting

for the cluster to join......這里不動(dòng)

?

4 使用redis-cli連接集群

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

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

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

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

下面測(cè)試一下:

可以看到通過(guò)計(jì)算,username定位到了14315這個(gè)哈希槽,存入的是端口7003的這臺(tái)服務(wù)器。

可以看到通過(guò)計(jì)算,age定位到了741這個(gè)哈希槽,存入的是端口7001的這臺(tái)服務(wù)器。

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

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

?

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

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

總結(jié)

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

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