NoSQL之redis(分布式集群)

1.集群架構(gòu):

成都創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比甘南網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式甘南網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋甘南地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴(lài)。

NoSQL之redis(分布式集群)

解釋?zhuān)?/p>

  • 所有的redis節(jié)點(diǎn)彼此互聯(lián)(PING-PONG機(jī)制),內(nèi)部使用二進(jìn)制協(xié)議優(yōu)化傳輸速度和帶寬。
  • 節(jié)點(diǎn)的fail是通過(guò)集群中超過(guò)半數(shù)的節(jié)點(diǎn)檢測(cè)失效時(shí)才生效.
  • 客戶(hù)端與redis節(jié)點(diǎn)直連,不需要中間proxy層.客戶(hù)端不需要連接集群所有節(jié)點(diǎn),連接集群中任何一個(gè)可用節(jié)點(diǎn)即可
  • redis-cluster把所有的物理節(jié)點(diǎn)映射到[0-16383]slot上,cluster 負(fù)責(zé)維護(hù)

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)

NoSQL之redis(分布式集群)

?

誤區(qū)解釋:這里的集群和主從復(fù)制不同,這里的集群中所有的都是mater,都有單節(jié)點(diǎn)顧長(zhǎng)官問(wèn)題,而主從復(fù)制只是解決單點(diǎn)故障問(wèn)題,

如果想讓集群模式下午單點(diǎn)故障問(wèn)題,需要給每一個(gè)master進(jìn)行主從復(fù)制。

?

2.redis-cluster 投票容錯(cuò)

NoSQL之redis(分布式集群)

  • 集群中所有master參與投票,如果半數(shù)以上master節(jié)點(diǎn)與其中一個(gè)master節(jié)點(diǎn)通信超過(guò)(cluster-node-timeout),認(rèn)為該master節(jié)點(diǎn)掛掉。

集群不可用狀態(tài)的判斷:

  • 如果集群任意master掛掉,且當(dāng)前master沒(méi)有slave,則集群進(jìn)入fail狀態(tài)。也可以理解成集群的[0-16383]slot映射不完全時(shí)進(jìn)入fail狀態(tài)。
  • 如果集群超過(guò)半數(shù)以上master掛掉,無(wú)論是否有slave,集群進(jìn)入fail狀態(tài)。

?

3.redis集群的搭建

??? ①ruby的安裝

???????? 由于集群管理工具(redis-trib.rb)是使用ruby腳本語(yǔ)言編寫(xiě)的,所以需要ruby的環(huán)境

第一步:安裝ruby

[root@hdp01 bin2]# yum install ruby

[root@hdp01 bin2]# yum install rubygems

第二步:將redis-3.0.0.gem文件上傳到linux系統(tǒng)

第三步:安裝ruby和redis接口

[root@hdp01 ~]# gem install redis-3.0.0.gem

第四步:將redis-3.0.0包下src目錄中的以下文件拷貝到redis19/redis-cluster/

NoSQL之redis(分布式集群)

第五步:查看是否拷貝成功

NoSQL之redis(分布式集群)

?

②搭建集群:

這里使用3臺(tái)服務(wù)器模擬redis集群。
第一步:復(fù)制出redis到一個(gè)機(jī)器中
[root@hdp01 redis]# scp? /xxx/redis-3.0.0 -r? hostname01:~/apps

第二步:如果存在持久化文件,則刪除

[root@hdp01 app]# rm -rf appendonly.aof dump.rdb

第三步:設(shè)置集群參數(shù)

開(kāi)啟集群模式:

NoSQL之redis(分布式集群)

?

第五步:復(fù)制redis服務(wù)到其他機(jī)器中

[root@hdp01 redis]# scp? /xxx/redis-3.0.0 -r? hostname02:~/apps
[root@hdp01 redis]# scp? /xxx/redis-3.0.0 -r? hostname03:~/apps

第七步:?jiǎn)?dòng)三臺(tái)機(jī)器
[root@hdp01 redis]#redis-server redis.conf(三臺(tái)機(jī)器中都開(kāi)啟)

第九步:創(chuàng)建集群
[root@hdp01 redis-cluster]# ./redis-trib.rb create --replicas 1\
192.168.130.128:6379 \
192.168.130.129:6379 \
192.168.130.130:6379 \

>>> Creating cluster

Connecting to node 192.168.242.137:7001: OK

Connecting to node 192.168.242.137:7002: OK

Connecting to node 192.168.242.137:7003: OK

Connecting to node 192.168.242.137:7004: OK

Connecting to node 192.168.242.137:7005: OK

Connecting to node 192.168.242.137:7006: OK

>>> Performing hash slots allocation on 6 nodes...

Using 3 masters:

192.168.242.137:7001

192.168.242.137:7002

192.168.242.137:7003

Adding replica 192.168.242.137:7004 to 192.168.242.137:7001

Adding replica 192.168.242.137:7005 to 192.168.242.137:7002

Adding replica 192.168.242.137:7006 to 192.168.242.137:7003

M: 8240cd0fe6d6f842faa42b0174fe7c5ddcf7ae24 192.168.242.137:7001

slots:0-5460 (5461 slots) master

M: 4f52a974f64343fd9f1ee0388490b3c0647a4db7 192.168.242.137:7002

slots:5461-10922 (5462 slots) master

M: cb7c5def8f61df2016b38972396a8d1f349208c2 192.168.242.137:7003

slots:10923-16383 (5461 slots) master

S: 66adf006fed43b3b5e499ce2ff1949a756504a16 192.168.242.137:7004

replicates 8240cd0fe6d6f842faa42b0174fe7c5ddcf7ae24

S: cbb0c9bc4b27dd85511a7ef2d01bec90e692793b 192.168.242.137:7005

replicates 4f52a974f64343fd9f1ee0388490b3c0647a4db7

S: a908736eadd1cd06e86fdff8b2749a6f46b38c00 192.168.242.137:7006

replicates cb7c5def8f61df2016b38972396a8d1f349208c2

Can I set the above configuration? (type 'yes' to accept): yes

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join..

>>> Performing Cluster Check (using node 192.168.242.137:7001)

M: 8240cd0fe6d6f842faa42b0174fe7c5ddcf7ae24 192.168.242.137:7001

slots:0-5460 (5461 slots) master

M: 4f52a974f64343fd9f1ee0388490b3c0647a4db7 192.168.242.137:7002

slots:5461-10922 (5462 slots) master

M: cb7c5def8f61df2016b38972396a8d1f349208c2 192.168.242.137:7003

slots:10923-16383 (5461 slots) master

M: 66adf006fed43b3b5e499ce2ff1949a756504a16 192.168.242.137:7004

slots: (0 slots) master

replicates 8240cd0fe6d6f842faa42b0174fe7c5ddcf7ae24

M: cbb0c9bc4b27dd85511a7ef2d01bec90e692793b 192.168.242.137:7005

slots: (0 slots) master

replicates 4f52a974f64343fd9f1ee0388490b3c0647a4db7

M: a908736eadd1cd06e86fdff8b2749a6f46b38c00 192.168.242.137:7006

slots: (0 slots) master

replicates cb7c5def8f61df2016b38972396a8d1f349208c2

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

??? ③測(cè)試集群是否搭建成功

????? [root@hdp01 7001]# ./redis-cli -h 192.168.130.130-p 6379 –c #連接集群

????? 相關(guān)命令介紹:

192.168.130.130:6379> cluster info? #查看集群信息
192.168.130.130:6379> cluster nodes? #查看集群節(jié)點(diǎn)

網(wǎng)站標(biāo)題:NoSQL之redis(分布式集群)
文章地址:http://bm7419.com/article14/pcgjge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、軟件開(kāi)發(fā)、建站公司、小程序開(kāi)發(fā)、ChatGPT全網(wǎng)營(yíng)銷(xiāo)推廣

廣告

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

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)