欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Redis群集部署及原理-創(chuàng)新互聯(lián)

一、Redis群集架構(gòu)細(xì)節(jié):

創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、石林網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為石林等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

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

2、節(jié)點(diǎn)的失效(fail)在群集中超過半數(shù)的主(master)節(jié)點(diǎn)檢測(cè)失效時(shí)才會(huì)生效。

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

4、redis-cluster把所有的物理節(jié)點(diǎn)映射到 [ 0-1638 ] slot 上,cluster負(fù)責(zé)維護(hù)node< - >slot< - > key。
二、redis-cluster選舉:
選舉過程是群集中所有master參與,如果半數(shù)以上master節(jié)點(diǎn)與當(dāng)前master節(jié)點(diǎn)通信超時(shí)(cluster-node-timeout),認(rèn)為當(dāng)前master節(jié)點(diǎn)掛掉。以下兩種情況為整個(gè)群集不可用(cluster_state:fail),當(dāng)群集不可用時(shí),所有對(duì)群集的操作都不可用,收到((error)CLUSTERDOWN Thecluster is down)錯(cuò)誤:

  • 如果群集中任意master掛掉,且當(dāng)前master沒有slave,則群集進(jìn)入fail狀態(tài),也可以理解成群集的slot映射 [ 0-16383 ]不完整時(shí)進(jìn)入fail狀態(tài)。

  • 如果群集中超過半數(shù)的master掛掉,無論是否有slave,群集都進(jìn)入fail狀態(tài)。

默認(rèn)情況下,每個(gè)群集的節(jié)點(diǎn)都是用兩個(gè)TCP端口,一個(gè)是6379,一個(gè)是16379;6379服務(wù)于客戶端的連接,16379用于群集總線,就是使用二進(jìn)制協(xié)議的節(jié)點(diǎn)到節(jié)點(diǎn)通信通道。節(jié)點(diǎn)使用群集總線進(jìn)行故障檢測(cè)、配置更新、故障轉(zhuǎn)移授權(quán)等。
Redis群集原理:

1、Redis集群架構(gòu):

Redis Cluster采用虛擬槽分區(qū),將所有的數(shù)據(jù)根據(jù)算法映射到0~16384整數(shù)槽內(nèi)
Redis Cluster是一個(gè)無中心的結(jié)構(gòu)
每個(gè)節(jié)點(diǎn)都保存數(shù)據(jù)和整個(gè)集群的狀態(tài)
2、集群角色:
Master:Master之間分配slots
Slave:Slave向它指定的Master同步數(shù)據(jù)
3、集群節(jié)點(diǎn)使用的TCP端口
6379端口用于客戶端的連接
16379端口用于群集總線

Redis3.0版本以上開始支持群集,采用的是hash slot(哈希槽),可以將多個(gè)Redis實(shí)例整合在一起,形成一個(gè)群集,也就是將數(shù)據(jù)分散到群集的多臺(tái)服務(wù)器上。
.
Redis cluster(Redis 群集)是一個(gè)無中心的結(jié)構(gòu),如下圖所示,每個(gè)節(jié)點(diǎn)都會(huì)保存數(shù)據(jù)和整個(gè)群集的狀態(tài)。每個(gè)節(jié)點(diǎn)都會(huì)保存其他節(jié)點(diǎn)的信息,知道其他節(jié)點(diǎn)所負(fù)責(zé)的槽,并且會(huì)與其他節(jié)點(diǎn)定時(shí)發(fā)送心跳信息,能夠及時(shí)感知群集中異常的節(jié)點(diǎn)。
Redis 群集部署及原理
當(dāng)客戶端向群集中任一節(jié)點(diǎn)發(fā)送與數(shù)據(jù)庫鍵有關(guān)的命令時(shí),接受命令的節(jié)點(diǎn)會(huì)計(jì)算出命令要處理的數(shù)據(jù)屬于哪個(gè)槽,并檢查這個(gè)槽是否指派給了自己,如果鍵所在的槽正好指派給了當(dāng)前節(jié)點(diǎn),那么節(jié)點(diǎn)直接執(zhí)這個(gè)命令;如果鍵值所在的槽并沒有指派給當(dāng)前節(jié)點(diǎn),那么節(jié)點(diǎn)會(huì)向客戶端返回一個(gè)MOVED錯(cuò)誤,指引客戶端轉(zhuǎn)向(redirect)正確的節(jié)點(diǎn),并再次發(fā)送之前想要執(zhí)行的命令。
.
群集角色有master和slave。master之間分配slots,一共16384個(gè)slot。slave向它指定的master同步數(shù)據(jù),實(shí)現(xiàn)備份。當(dāng)其中一個(gè)master無法提供服務(wù)時(shí),該master的slave將提升為master,以保證群集間slot的完整性。當(dāng)其中的某一個(gè)master和它的slave都失效,導(dǎo)致了slot不完整,群集失效,這時(shí)就需要運(yùn)維人員去處理了。
.
群集搭建好后,群集中的每個(gè)節(jié)點(diǎn)都會(huì)定期地向其他節(jié)點(diǎn)發(fā)送PING消息,如果接收PING消息的節(jié)點(diǎn)沒有在規(guī)定的時(shí)間內(nèi)返回PONG消息,那么發(fā)送PING消息的節(jié)點(diǎn)就會(huì)將其標(biāo)記為疑似下線(PFAIL)。各個(gè)節(jié)點(diǎn)會(huì)通過互相發(fā)送消息的方式來交換群集中各個(gè)節(jié)點(diǎn)的狀態(tài)信息。如果已經(jīng)在一個(gè)群集里面,半數(shù)以上的主節(jié)點(diǎn)都將某個(gè)主節(jié)點(diǎn)x報(bào)告為疑似下線,那么這個(gè)主節(jié)點(diǎn)x將被標(biāo)記為已下線(FAIL),同時(shí)會(huì)向群集廣播一條關(guān)于主節(jié)點(diǎn)x的FAIL消息,所有收到這條FAIL消息的節(jié)點(diǎn)都會(huì)立即將主節(jié)點(diǎn)x標(biāo)記為已下線。
.
當(dāng)需要減少或者增加群集中的服務(wù)器時(shí),我們需要將已經(jīng)指派給某個(gè)節(jié)點(diǎn)(源節(jié)點(diǎn))的槽改為指派給另一個(gè)節(jié)點(diǎn)(目標(biāo)節(jié)點(diǎn)),并且將相關(guān)槽所包含的鍵值對(duì)從源節(jié)點(diǎn)移動(dòng)到目標(biāo)節(jié)點(diǎn)。
.
Redis群集的重新分片操作時(shí)由Redis的群集管理軟件redis-trib負(fù)責(zé)執(zhí)行的,不支持自動(dòng)分片,而且需要自己計(jì)算從哪些節(jié)點(diǎn)遷移多少Slot。在重新分片的過程中,群集無需下線,并且源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)都可以繼續(xù)處理命令請(qǐng)求。
準(zhǔn)備工作:
1、六臺(tái)服務(wù)器,三臺(tái)為master、三臺(tái)為slave,這里均為centos 7,IP地址依次為192.168.1.10--60(參與群集的服務(wù)器數(shù)量最好為偶數(shù),每個(gè)master會(huì)自動(dòng)對(duì)應(yīng)一個(gè)slave,若為奇數(shù),群集無法實(shí)現(xiàn)冗余,因?yàn)楸囟ㄓ幸粋€(gè)master沒有對(duì)應(yīng)的slave,一旦這個(gè)master宕機(jī),整個(gè)群集就會(huì)丟失一部分?jǐn)?shù)據(jù));
2、所需源碼包: https://pan.baidu.com/s/12L6jNOBrXeLH4I445_uUtQ 提取碼: smn6
3、所有redis服務(wù)器必須保證無任何數(shù)據(jù),最好是全新安裝的,因?yàn)槿绻袛?shù)據(jù)存在,在后面進(jìn)行群集時(shí)會(huì)報(bào)錯(cuò)。
4、配置防火墻放行流量,本人較懶,這里直接關(guān)閉了
開始部署:
192.168.1.10 上的配置:

[root@localhost media]# ls
redis-3.2.0.gem  redis-3.2.9.tar.gz
[root@localhost media]# cp * /usr/src/                   # 將軟件包復(fù)制
[root@localhost media]# cd /usr/src/
[root@localhost src]# ls                          # 確認(rèn)都在呢
debug  kernels  redis-3.2.0.gem  redis-3.2.9.tar.gz
[root@localhost src]# tar zxf redis-3.2.9.tar.gz 
[root@localhost src]# cd redis-3.2.9/
[root@localhost redis-3.2.9]# make && make install      # 編譯并安裝 
[root@localhost redis-3.2.9]# cd utils/                  # 再進(jìn)一個(gè)子目錄
[root@localhost utils]# ./install_server.sh            # 一路回車即可 
# 因?yàn)閙ake install  只是安裝了二進(jìn)制文件到系統(tǒng)中,并沒有啟動(dòng)腳本和配置文件,所以需要通過install_server.sh來設(shè)置 redis 服務(wù)所需要的相關(guān)配置文件。
[root@localhost utils]# cd /etc/init.d/      #優(yōu)化redis控制啟停方式
[root@localhost init.d]# mv redis_6379 redis     
[root@localhost init.d]# chkconfig --add redis          #將redis添加為系統(tǒng)服務(wù)
[root@localhost init.d]# systemctl restart redis          #重啟服務(wù),以測(cè)試是否生效
[root@localhost /]# vim /etc/redis/6379.conf            # 修改配置文件,修改以下幾條
.......................
bind 192.168.1.10                   // 設(shè)置監(jiān)聽 IP 地址
daemonize yes               
logfile /var/log/redis_6379.log           // 指定日志文件
cluster-enabled yes                            // 啟動(dòng)群集
cluster-config-file nodes-6379.conf       // 群集配置文件
cluster-node-timeout 15000               // 節(jié)點(diǎn)超時(shí)時(shí)間,默認(rèn)為毫秒
cluster-require-full-coverage no          // 將yes改為no
port   6379                         // 監(jiān)聽端口
# 保存退出

主配置文件修改完畢后先別著急啟服務(wù),因?yàn)槲覀冃枰诿恳慌_(tái)服務(wù)器上都要安裝 redis ,按照之前的方法安裝即可,然后修改配置文件。其中每臺(tái)服務(wù)器都要修改,只是監(jiān)聽IP地址不同而已,其他的配置都一樣。所以,嘿嘿嘿~
192.168.1.20 的配置:

# 安裝完畢redis后
[root@localhost utils]# scp root@192.168.1.10:/etc/redis/6379.conf /etc/redis/
# 我們直接將第一臺(tái)的主配文件復(fù)制過來使用,修改一下監(jiān)聽IP就可以了
[root@localhost utils]# vim /etc/redis/6379.conf 
........................
bind 192.168.1.20

然后將剩下的幾臺(tái)服務(wù)器依次配置完畢。
回到 192.168.1.1配置:
使用腳本創(chuàng)建群集:

[root@localhost /]# yum -y install ruby rubygems        
# 創(chuàng)建群集會(huì)用到ruby的一個(gè)腳本,在創(chuàng)建群集前,需要先安裝ruby的運(yùn)行環(huán)境和客戶端,在任何一臺(tái)服務(wù)器安裝都可以
[root@localhost src]# gem install redis --version 3.2.0           # 執(zhí)行這條命令需要此文件redis-3.2.0.gem,所以執(zhí)行前切換到擁有此文件的目錄
Successfully installed redis-3.2.0
Parsing documentation for redis-3.2.0
Installing ri documentation for redis-3.2.0
1 gem installed
[root@localhost src]# ./redis-trib.rb create --replicas 1 \
> 192.168.1.10:6379 \
> 192.168.1.20:6379 \
> 192.168.1.30:6379 \
> 192.168.1.40:6379 \
> 192.168.1.50:6379 \
> 192.168.1.60:6379 
.20:6379  192.168.1.30:6379  192.168.1.40:6379  192.168.1.50:6379  192.168.1.60:6379 >>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.10:6379
192.168.1.20:6379
192.168.1.30:6379
Adding replica 192.168.1.40:6379 to 192.168.1.10:6379
Adding replica 192.168.1.50:6379 to 192.168.1.20:6379
Adding replica 192.168.1.60:6379 to 192.168.1.30:6379
M: 4234dad1a041a91401d6e635c800581172e850dc 192.168.1.10:6379
   slots:0-5460 (5461 slots) master
M: b386e4089c6f45a59d371549cda306669dd6938f 192.168.1.20:6379
   slots:5461-10922 (5462 slots) master
M: c1d6d14364e8c5db2ae1ea3ee07360a8b17127d8 192.168.1.30:6379
   slots:10923-16383 (5461 slots) master
S: e772a17543efb1e11cd05d792c11319b0fbfee5f 192.168.1.40:6379
   replicates 4234dad1a041a91401d6e635c800581172e850dc
S: f0a387bf5f366de0e25c575588349bd424a0ff90 192.168.1.50:6379
   replicates b386e4089c6f45a59d371549cda306669dd6938f
S: abc2fef19988e6626243feff831bced36b83b642 192.168.1.60:6379
   replicates c1d6d14364e8c5db2ae1ea3ee07360a8b17127d8
Can I set the above configuration? (type 'yes' to accept): yes             # 此處記得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.1.10:6379)
M: 4234dad1a041a91401d6e635c800581172e850dc 192.168.1.10:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: c1d6d14364e8c5db2ae1ea3ee07360a8b17127d8 192.168.1.30:6379
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: b386e4089c6f45a59d371549cda306669dd6938f 192.168.1.20:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: f0a387bf5f366de0e25c575588349bd424a0ff90 192.168.1.50:6379
   slots: (0 slots) slave
   replicates b386e4089c6f45a59d371549cda306669dd6938f
S: e772a17543efb1e11cd05d792c11319b0fbfee5f 192.168.1.40:6379
   slots: (0 slots) slave
   replicates 4234dad1a041a91401d6e635c800581172e850dc
S: abc2fef19988e6626243feff831bced36b83b642 192.168.1.60:6379
   slots: (0 slots) slave
   replicates c1d6d14364e8c5db2ae1ea3ee07360a8b17127d8
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

測(cè)試一下群集:
[root@localhost /]# redis-cli -h 192.168.1.20 -p 6379 -c
192.168.1.20:6379> set zhangsan 123123 # 創(chuàng)建一個(gè)值
-> Redirected to slot [12767] located at 192.168.1.30:6379 # 發(fā)現(xiàn)他跑另一個(gè)服務(wù)器上了
OK
192.168.1.30:6379> get zhangsan # 也是可以查到
"123123"

[root@localhost src]# ./redis-trib.rb check 192.168.1.10:6379             # 查看群集狀態(tài)
>>> Performing Cluster Check (using node 192.168.1.10:6379)
M: 4234dad1a041a91401d6e635c800581172e850dc 192.168.1.10:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: c1d6d14364e8c5db2ae1ea3ee07360a8b17127d8 192.168.1.30:6379
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: b386e4089c6f45a59d371549cda306669dd6938f 192.168.1.20:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: f0a387bf5f366de0e25c575588349bd424a0ff90 192.168.1.50:6379
   slots: (0 slots) slave
   replicates b386e4089c6f45a59d371549cda306669dd6938f
S: e772a17543efb1e11cd05d792c11319b0fbfee5f 192.168.1.40:6379
   slots: (0 slots) slave
   replicates 4234dad1a041a91401d6e635c800581172e850dc
S: abc2fef19988e6626243feff831bced36b83b642 192.168.1.60:6379
   slots: (0 slots) slave
   replicates c1d6d14364e8c5db2ae1ea3ee07360a8b17127d8
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

redis-3.x.x和redis-5.x.x創(chuàng)建群集的區(qū)別:

使用命令不一樣,redis-3.x.x使用redis-trib.rb命令,語法如下:

[root@localhost ~]#redis-trib.rb create --replicas 1 192.168.1.1:6379 ..192.168.1.6:6379
#redis-3.x.x創(chuàng)建群集。
[root@localhost src]# redis-trib.rb check 192.168.1.1:6379
#查看群集狀態(tài)
# redis-trib.rb不可以直接使用,需要執(zhí)行以下操作才可直接使用
[root@localhost src]# cd /usr/src/redis-5.0.5/src/           
[root@localhost src]# cp redis-trib.rb /usr/local/bin/  
#將該腳本復(fù)制到本地../bin下,以便直接使用。若不然,需要在目錄下使用“./”執(zhí)行該文件

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章標(biāo)題:Redis群集部署及原理-創(chuàng)新互聯(lián)
URL鏈接:http://www.chinadenli.net/article26/dodjcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)商城網(wǎng)站靜態(tài)網(wǎng)站Google網(wǎng)站策劃軟件開發(fā)

廣告

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

外貿(mào)網(wǎng)站建設(shè)