redis主從復(fù)制和集群配置

配置redis主從復(fù)制和集群配置詳解

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了樂昌免費(fèi)建站歡迎大家使用!

1.?配置redis主從復(fù)制。

1.1.?應(yīng)用場(chǎng)景

一般來說,要將Redis運(yùn)用于工程項(xiàng)目中,只使用一臺(tái)Redis是萬萬不能的,原因如下:

a) 從結(jié)構(gòu)上,單個(gè)Redis服務(wù)器會(huì)發(fā)生單點(diǎn)故障,并且一臺(tái)服務(wù)器需要處理所有的請(qǐng)求負(fù)載,壓力較大;

b) 從容量上,單個(gè)Redis服務(wù)器內(nèi)存容量有限,就算一臺(tái)Redis服務(wù)器內(nèi)存容量為256G,也不能將所有內(nèi)存用作Redis存儲(chǔ)內(nèi)存,一般來說,單臺(tái)Redis最大使用內(nèi)存不應(yīng)該超過20G。

1.2.?基本原理

電商網(wǎng)站上的商品,一般都是一次上傳,無數(shù)次瀏覽的,說專業(yè)點(diǎn)也就是"多讀少寫"。

對(duì)于這種場(chǎng)景,我們可以使如下這種架構(gòu):

redis主從復(fù)制和集群配置

1.3.?詳細(xì)配置

1) 規(guī)劃主備網(wǎng)絡(luò)信息,主機(jī)192.168.153.164 備機(jī)192.168.153.165.保證兩臺(tái)機(jī)器互聯(lián)。

畫圖說明

redis主從復(fù)制和集群配置

2) 安裝redis,并配置,可以參考前天的redis安裝步驟。

a) 修改yum源,增加redis的yum配置

b) yum install epel-release -y yum install redis -y

c) 修改配置文件/etc/redis.conf

3) 修改備機(jī)配置在備機(jī)192.168.153. 165的redis.conf中加下面配置

4) slaveof 192.168.153. 164 6379

5) 測(cè)試效果

a) 在主機(jī)上設(shè)值chenjian=666

redis主從復(fù)制和集群配置

b) 在備機(jī)上取值get chenjian,正常顯示

redis主從復(fù)制和集群配置

redis主從復(fù)制和集群配置

c) 注意點(diǎn):要保證主機(jī)先啟動(dòng)。

1.4.?redis主從復(fù)制的特點(diǎn)。

通過主從復(fù)制可以允許多個(gè)slave server擁有和master server相同的數(shù)據(jù)庫副本。下面是關(guān)于redis主從復(fù)制的一些特點(diǎn)

a) master可以有多個(gè)slave

b) 除了多個(gè)slave連到相同的master外,slave也可以連接其他slave形成圖狀結(jié)構(gòu)

c) 主從復(fù)制不會(huì)阻塞master。也就是說當(dāng)一個(gè)或多個(gè)slave與master進(jìn)行初次同步數(shù)據(jù)時(shí),master可以繼續(xù)處理client發(fā)來的請(qǐng)求。相反slave在初次同步數(shù)據(jù)時(shí)則會(huì)阻塞不能處理client的請(qǐng)求。

d) 主從復(fù)制可以用來提高系統(tǒng)的可伸縮性,我們可以用多個(gè)slave 專門用于client的讀請(qǐng)求,比如sort操作可以使用slave來處理。也可以用來做簡單的數(shù)據(jù)冗余

e) 可以在master禁用數(shù)據(jù)持久化,只需要注釋掉master 配置文件中的所有save配置,然后只在slave上配置數(shù)據(jù)持久化。

2.?配置redis集群

2.1.?應(yīng)用場(chǎng)景

當(dāng)主備復(fù)制場(chǎng)景,無法滿足主機(jī)的單點(diǎn)故障時(shí),需要引入集群配置。

redis主從復(fù)制和集群配置

2.2.?基本原理

哨兵選舉機(jī)制,如果有半數(shù)節(jié)點(diǎn)發(fā)現(xiàn)某個(gè)異常節(jié)點(diǎn),共同決定改異常節(jié)點(diǎn)的狀態(tài),如果該節(jié)點(diǎn)是主節(jié)點(diǎn),對(duì)應(yīng)的備節(jié)點(diǎn)自動(dòng)頂替為主節(jié)點(diǎn)。Sentinel(哨兵)是Redis 的高可用性解決方案:由一個(gè)或多個(gè)Sentinel 實(shí)例 組成的Sentinel 系統(tǒng)可以監(jiān)視任意多個(gè)主服務(wù)器,以及這些主服務(wù)器屬下的所有從服務(wù)器,并在被監(jiān)視的主服務(wù)器進(jìn)入下線狀態(tài)時(shí),自動(dòng)將下線主服務(wù)器屬下的某個(gè)從服務(wù)器升級(jí)為新的主服務(wù)器。

2.3.?詳細(xì)配置

1)?步驟一,規(guī)劃網(wǎng)絡(luò)。

用一臺(tái)虛擬機(jī)模擬6個(gè)節(jié)點(diǎn),一臺(tái)機(jī)器6個(gè)節(jié)點(diǎn),創(chuàng)建出3 master、3 salve 環(huán)境。虛擬機(jī)是 CentOS6.9 ,ip地址192.168.153.164

2)?步驟二,下載redis的源碼包

wget http://download.redis.io/releases/redis-3.2.11.tar.gz將包中的 redis-trib.rb 復(fù)制到 /usr/local/bin 目錄下

3)?步驟三, 創(chuàng)建 Redis 節(jié)點(diǎn)

首先在 192.168.153.164 機(jī)器上 /usr/local 目錄下創(chuàng)建 redis_cluster 目錄;

mkdir redis_cluster

在 redis_cluster 目錄下,創(chuàng)建名為7001、7002,7003、7004、7005,7006的目錄,

mkdir 7001 7002 7003 7004 7005 7006

并將 redis.conf 拷貝到這三個(gè)目錄中,拷貝之前,先修改redis.conf

redis.conf文件按照下面8項(xiàng)修改內(nèi)容,然后分別拷貝到6個(gè)不同的目錄7001,7002,7003,7004,7005,7006中。

port 7000 //端口7000,7002,7003

bind 本機(jī)ip //默認(rèn)ip為127.0.0.1 需要改為其他節(jié)點(diǎn)機(jī)器可訪問的ip 否則創(chuàng)建集群時(shí)無法訪問對(duì)應(yīng)的端口,無法創(chuàng)建集群

daemonize yes //redis后臺(tái)運(yùn)行

pidfile /var/run/redis_7000.pid //pidfile文件對(duì)應(yīng)7000,7001,7002

cluster-enabled yes //開啟集群 把注釋#去掉

cluster-config-file nodes_7000.conf //集群的配置 配置文件首次啟動(dòng)自動(dòng)生成 7000,7001,7002

cluster-node-timeout 15000 //請(qǐng)求超時(shí) 默認(rèn)15秒,可自行設(shè)置

appendonly yes //aof日志開啟 有需要就開啟,它會(huì)每次寫操作都記錄一條日志 

redis主從復(fù)制和集群配置

4)?步驟四,啟動(dòng)各個(gè)節(jié)點(diǎn)

redis-server /usr/local/redis_cluster/7001/redis.conf

redis-server /usr/local/redis_cluster/7002/redis.conf

redis-server /usr/local/redis_cluster/7003/redis.conf

redis-server /usr/local/redis_cluster/7004/redis.conf

redis-server /usr/local/redis_cluster/7005/redis.conf

redis-server /usr/local/redis_cluster/7006/redis.conf

檢查節(jié)點(diǎn)啟動(dòng)狀態(tài)

redis主從復(fù)制和集群配置

5)?步驟五,創(chuàng)建集群

創(chuàng)建集群的命令:

/usr/local/bin/redis-trib.rb create --replicas 1 192.168.153.164:7001 192.168.153.164:7002 192.168.153.164:7003 192.168.153.164:7004 192.168.153.164:7005 192.168.153.164:7006

redis主從復(fù)制和集群配置

此錯(cuò)誤是操作系統(tǒng)沒有安裝ruby

解決方法:安裝ruby

yum -y install ruby ruby-devel rubygems rpm-build

gem install redis 報(bào)錯(cuò)

redis主從復(fù)制和集群配置

##升級(jí)ruby

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

curl -L get.rvm.io | bash -s stable

source /usr/local/rvm/scripts/rvm

rvm list known

rvm install 2.3.3

rvm use 2.3.3

rvm use 2.3.3 --default

ruby --version

redis主從復(fù)制和集群配置

再次執(zhí)行,成功!

gem install redis

redis主從復(fù)制和集群配置

6)?驗(yàn)證集群

redis-cli -c -h 192.168.153.164 -p 7001 其中-c表示以集群方式連接redis,-h指定ip地址,-p指定端口號(hào)

redis主從復(fù)制和集群配置

redis主從復(fù)制和集群配置

保存數(shù)據(jù),chenjian保存到12007的槽位,12007所在的節(jié)點(diǎn)是7003端口對(duì)應(yīng)的節(jié)點(diǎn)。

redis主從復(fù)制和集群配置

在其他節(jié)點(diǎn),例如7006上獲取chenjian。

redis主從復(fù)制和集群配置

驗(yàn)證主節(jié)點(diǎn)異常時(shí),備節(jié)點(diǎn)自動(dòng)頂替主節(jié)點(diǎn)

redis主從復(fù)制和集群配置

redis主從復(fù)制和集群配置

殺死7002對(duì)應(yīng)的進(jìn)程,即讓主節(jié)點(diǎn)7002異常,檢查7005是否頂替成為主節(jié)點(diǎn)。

redis主從復(fù)制和集群配置

2.4.?集群的特點(diǎn)(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)檢測(cè)失效時(shí)才生效; (3)客戶端與redis 節(jié)點(diǎn)直連,不需要中間proxy 層??蛻舳瞬恍枰B接集群所有節(jié)點(diǎn),連接集群中任何一 個(gè)可用節(jié)點(diǎn)即可; (4)redis-cluster把所有的物理節(jié)點(diǎn)映射到[0-16383]個(gè)slot(哈希槽)上,cluster 負(fù)責(zé)維護(hù) node<->slot<->value 。

2.5.?集群選舉容錯(cuò)

(1):什么時(shí)候整個(gè)集群不可用(cluster_state:fail)? A:如果集群任意master 掛掉,且當(dāng)前master 沒有slave。集群進(jìn)入fail 狀態(tài),也可以理解成集群的 slot 映射[0-16383]不完整時(shí)進(jìn)入fail 狀態(tài)。 ps : redis-3.0.0.rc1 加入 cluster-require-full- coverage 參數(shù),默認(rèn)關(guān)閉,打開集群兼容部分失?。?B:如果集群超過半數(shù)以上master 掛掉,無論是否有slave集群進(jìn)入fail 狀態(tài)。ps:當(dāng)集群不可用時(shí), 所有對(duì)集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)錯(cuò)誤。

分享標(biāo)題:redis主從復(fù)制和集群配置
路徑分享:http://www.muchs.cn/article38/gehssp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、面包屑導(dǎo)航、、網(wǎng)站制作、域名注冊(cè)、靜態(tài)網(wǎng)站

廣告

聲明:本網(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)

營銷型網(wǎng)站建設(shè)