真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

redis集群的原理以及搭建配置-創(chuàng)新互聯(lián)

理解并從頭搭建redis集群

創(chuàng)新互聯(lián)是一家專業(yè)提供南明企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、網(wǎng)站設(shè)計(jì)、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為南明眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

部分開發(fā)人員工作當(dāng)中只是在應(yīng)用中使用redis,比如用來做數(shù)據(jù)結(jié)果的緩存。而且現(xiàn)在有很多不錯(cuò)的redis客戶端工具(redisson),基本上可以不用關(guān)注redis命令就可以完成相當(dāng)部分的功能。所以可能會(huì)對(duì)如下這些問題關(guān)注點(diǎn)不夠:

如何容災(zāi)?即某個(gè)redis節(jié)點(diǎn)出了問題如何保證服務(wù)的高可用性

如何橫向擴(kuò)容?當(dāng)數(shù)據(jù)量特別大時(shí),如何解決單個(gè)redis的性能問題

集群至少需要幾臺(tái)機(jī)器?或者幾個(gè)redis節(jié)點(diǎn)

集群搭建都利用什么技術(shù),哪些工具?

如何容災(zāi)?

redis提供了主從熱備機(jī)制,主服務(wù)器的數(shù)據(jù)同步到從服務(wù)器,通過哨兵實(shí)時(shí)監(jiān)控主服務(wù)器狀態(tài)并負(fù)責(zé)選舉主服務(wù)器。當(dāng)發(fā)現(xiàn)主服務(wù)器異常時(shí)根據(jù)一定的算法重新選舉主服務(wù)器并將問題服務(wù)器從可用列表中去除,最后通知客戶端。主從是一對(duì)多的樹型結(jié)構(gòu),如下圖:

redis集群的原理以及搭建配置

哨兵

哨兵是sentinel的中文名稱,是redis出的一個(gè)高可用架構(gòu)的工具,自身是一個(gè)獨(dú)立的進(jìn)程,可以同時(shí)監(jiān)控一個(gè)以上的redis集群。

哨兵集群

基于高可用的考慮,哨兵自身也是需要支持集群的,如果只有一個(gè)哨兵就會(huì)存在單點(diǎn)問題。

哨兵決策

哨兵有一個(gè)數(shù)量配置,當(dāng)多少個(gè)哨兵同時(shí)認(rèn)為某個(gè)主服務(wù)不可用時(shí)才進(jìn)行主從切換,比如總共有5個(gè)哨兵,當(dāng)3個(gè)哨兵認(rèn)為服務(wù)不可用時(shí)才決定做主從切換。這么做可以避免一些誤切換,降低切換成本,比如瞬時(shí)的網(wǎng)絡(luò)異常等。

如何橫向擴(kuò)容?

無論是redis還是其它一些數(shù)據(jù)庫之類的產(chǎn)品,當(dāng)單節(jié)點(diǎn)的數(shù)據(jù)容量達(dá)到一定上限后,服務(wù)對(duì)外提供的能力會(huì)越來越弱。redis在高版本中提供了redis-trib.rb來實(shí)現(xiàn)集群功能,也可以使用第三方的工具twemproxy。

去中心化,每個(gè)節(jié)點(diǎn)都是平等的

redis集群從設(shè)計(jì)上沒有考慮中心化,這樣可以避免中心節(jié)點(diǎn)的單點(diǎn)等問題。每個(gè)節(jié)點(diǎn)都能掌握整個(gè)集群的狀態(tài),連接任意的節(jié)點(diǎn)都可以訪問到所有的key,就像單節(jié)點(diǎn)的redis一樣。

集群原理圖

自己理解畫的,如有理解不對(duì)的地方可以指出。

redis集群的原理以及搭建配置

key與redis節(jié)點(diǎn)的關(guān)系

引入了hasy solt,中文理解為哈希槽。總共16384個(gè),我們操作的key通過取模算法確認(rèn)key落在哪個(gè)槽上。

HASH_SLOT = CRC16(key) mod 16384

哈希槽與節(jié)點(diǎn)之間有一定關(guān)系,所以我們就可以將key分配到某個(gè)具體的redis節(jié)點(diǎn)上了。

詳細(xì)的關(guān)系可再研究,簡(jiǎn)單的比如節(jié)點(diǎn)A負(fù)責(zé)0-5000編號(hào)的哈希槽,節(jié)點(diǎn)B負(fù)責(zé)5001-1000

一步一步搭建

開始搭建三主三從的集群,系統(tǒng)是ubuntu,采用redis提供的集群工具redis-trib.rb。

安裝最新redis

創(chuàng)建redis_cluster目錄,并且創(chuàng)建7000到7005這6個(gè)目錄

將redis目錄下的redis.conf復(fù)制到上面創(chuàng)建的6個(gè)目錄中

分別修改redis.conf文件,對(duì)6個(gè)文件做類似的修改。

port  7000                                       //端口7000       
bind  127.0.0.1                                  //默認(rèn)ip為127.0.0.1 需要改為其他節(jié)點(diǎn)機(jī)器可訪問的ip
daemonize    yes                                 //后臺(tái)運(yùn)行
pidfile  /var/run/redis_7000.pid                 //pidfile文件對(duì)應(yīng)7000
cluster-enabled  yes                             //開啟集群
cluster-config-file  nodes_7000.conf             //集群的配置
cluster-node-timeout  15000                      //請(qǐng)求超時(shí)  默認(rèn)15秒,可自行設(shè)置

bind需要注意的就是需要配置為其它機(jī)器可以訪問的ip,否則無論是創(chuàng)建集群還是客戶端連接都會(huì)有問題。

啟動(dòng)6個(gè)redis

redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf

創(chuàng)建集群
redis的src目錄下有個(gè)redis-trib.rb,將它復(fù)制到/usr/local/bin中,然后執(zhí)行如下腳本:

redis-trib.rb  create  --replicas  1  127.0.0.1:7000 127.0.0.1:7001  127.0.0.1:7002 127.0.0.1:7003  127.0.0.1:7004  127.0.0.1:7005

--replicas后面的1代表從服務(wù)器的個(gè)數(shù),上面可以理解為前面3個(gè)為主服務(wù)器,后面三個(gè)分別做為從服務(wù)器,即三對(duì)主從。

執(zhí)行過程中會(huì)遇到提示需要安裝ruby,安裝完成之后又會(huì)提示安裝 gem redis。

安裝gem redis,折騰了好久,最終發(fā)現(xiàn)是因?yàn)樵趪鴥?nèi)訪問不了某些網(wǎng)站導(dǎo)致通過apt-get install安裝不成功,最后通過下載源碼的方式安裝成功。

redis集群的原理以及搭建配置再次執(zhí)行創(chuàng)建集群的腳本,出現(xiàn)如下提示:

redis集群的原理以及搭建配置

輸入yes,繼續(xù)

redis集群的原理以及搭建配置

最少需要多少個(gè)主服務(wù)器?

可能是基于某些約定,集群約定只有當(dāng)可用節(jié)點(diǎn)數(shù)大于半數(shù)以上時(shí)才具備對(duì)外提供服務(wù)的能力。首先數(shù)量一定是奇數(shù),其實(shí)必須大于1,所以最少的主服務(wù)器數(shù)量為3。

測(cè)試集群
連接客戶端,由于我的所有節(jié)點(diǎn)都是在本地,所以不需要輸入ip,但需要加-c的參數(shù)。redis-cli -c -p 7000


連接成功后,增加一個(gè)key

set mykey 123

有一行提示語,指向到端口7002,這說明雖然我們連接的是7000的實(shí)例,但通過hash算法最終會(huì)將key分配到7002的實(shí)例上。

redis集群的原理以及搭建配置

再連接7005端口查詢下key,測(cè)試下是否任意一個(gè)實(shí)例都可以查詢到key

get mykey

顯示指向到端口7002

redis集群的原理以及搭建配置

以上就是redis高可用方案圖文詳解的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!


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


分享文章:redis集群的原理以及搭建配置-創(chuàng)新互聯(lián)
分享鏈接:http://weahome.cn/article/ccejco.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部