Redis三主三从集群搭建
一、引子
主從復(fù)制以及哨兵,他們可以提高讀的并發(fā),但是單個(gè)master容量有限,數(shù)據(jù)達(dá)到一定程度會(huì)有瓶頸,這個(gè)時(shí)候可以通過(guò)水平擴(kuò)展為多master-slave集群(看原理圖)。
所以一起來(lái)學(xué)習(xí)redis-cluster:他可以支撐多個(gè)master-slave,支持海量數(shù)據(jù),實(shí)現(xiàn)高可用與高并發(fā)。哨兵模式其實(shí)也是一種集群,他能夠提高讀請(qǐng)求的并發(fā),但是容錯(cuò)方面可能會(huì)有一些問(wèn)題,比如master同步數(shù)據(jù)給slave的時(shí)候,這其實(shí)是異步復(fù)制吧,這個(gè)時(shí)候 master宕機(jī)了,那么slave上的數(shù)據(jù)就沒(méi)有master新,數(shù)據(jù)同步需要時(shí)間的,1-2秒的數(shù)據(jù)會(huì)丟失。master恢復(fù)并轉(zhuǎn)換成slave后,新數(shù)據(jù)則丟失。
Redis-Cluster集群特點(diǎn)
- 1.每個(gè)節(jié)點(diǎn)知道彼此之間的關(guān)系,也會(huì)知道自己的角色,當(dāng)然他們也會(huì)知道自己存在與一個(gè)集群環(huán)境中,他們彼此之間可以交互和通信,比如說(shuō)ping - pong。那么這些關(guān)系都會(huì)保存到某個(gè)配置文件中,每個(gè)節(jié)點(diǎn)都有,這個(gè)我們?cè)诖罱ǖ臅r(shí)候會(huì)做配置的。
- 2.客戶(hù)端要和集群建立連接的話(huà),只需要和其中一個(gè)建立關(guān)系就行。
- 3.某個(gè)節(jié)點(diǎn)掛了,也是通過(guò)超過(guò)半數(shù)的節(jié)點(diǎn)來(lái)進(jìn)行的檢測(cè),客觀(guān)下線(xiàn)后主從切換,和我們之前在哨兵模式中提到的是一個(gè)道理。
- 4. Redis中存在很多的插槽,又可以稱(chēng)之為槽節(jié)點(diǎn),用于存儲(chǔ)數(shù)據(jù)。
集群容錯(cuò)
構(gòu)建Redis集群,需要至少3個(gè)節(jié)點(diǎn)作為master,以此組成一個(gè)高可用的集群,此外每個(gè)master都需要配備一個(gè)slave,所以整個(gè)集群需要6個(gè)節(jié)點(diǎn),這也是最經(jīng)典redis集群模式,也可以稱(chēng)之為三主三從,容錯(cuò)性更佳。所以在搭建的時(shí)候需要有6臺(tái)虛擬機(jī)。請(qǐng)各自準(zhǔn)備6臺(tái)虛擬機(jī),并安裝好redis(可以通過(guò)克隆去構(gòu)建,使用單實(shí)例的Redis去克隆即可)? ? ? ??
- 集群也可以在單服務(wù)器構(gòu)建,稱(chēng)之為偽集群,但是生產(chǎn)環(huán)境肯定是真的,所以建議用6臺(tái)。
- 克隆后務(wù)必關(guān)閉Redis
二、原理圖
(redis安裝redis在CentOs服務(wù)器上的安裝和設(shè)置開(kāi)機(jī)自啟動(dòng)_p&f°的博客-CSDN博客)
三、具體實(shí)現(xiàn)
Ⅰ 修改redis.conf主配置文件(先說(shuō)192.168.1.201配置,其他5臺(tái)一樣)
1、進(jìn)入redis.conf主配值文件夾,修改rendis.conf配置
cd /usr/local/redisvim redis.conf找到如下位置
2、修改如下提到的配置
#開(kāi)啟集群模式 cluster-enabled yes#每一個(gè)節(jié)點(diǎn)需要有一個(gè)配置文件,需要6份。 #每個(gè)節(jié)點(diǎn)處于集群的角色都需要告知其他所有節(jié)點(diǎn),彼此知道 #這個(gè)文件用于存儲(chǔ)集群信息,不需要人為干預(yù) cluster-config-file nodes-6379.conf#超時(shí)時(shí)間,超時(shí)則認(rèn)為master宕機(jī),隨后主備切換 cluster-node-timeout 5000#開(kāi)啟AOF appendonly yes3、清除redis持久化生成的rdb等文件。這一步不是必須的,第一次安裝一般沒(méi)有這些文件,如果有刪除即可。(如果后期啟動(dòng)過(guò)程出錯(cuò),極大概況忘記刪除了,把rdb等文件刪除清空就行)
(如果找不到位置,請(qǐng)查看Redis的持久化機(jī)制(RDB和AOF)(1)_p&f°的博客-CSDN博客
中的RDB的配置第一條 1. 保存位置。對(duì)照自己的持久化策略即可)
?4、重啟redis,查看是否重啟成功
?5、重復(fù)以上4步操作,修改剩余5臺(tái)CentOs
Ⅱ 創(chuàng)建集群
1、創(chuàng)建命令(隨便在那個(gè)CentOs中執(zhí)行創(chuàng)建)
######注意1:如果你使用的是redis3.x版本,需要使用redis-trib.rb來(lái)構(gòu)建集群 ######注意2:最新版使用C語(yǔ)言來(lái)構(gòu)建了,這個(gè)要注意。以下為新版的redis構(gòu)建方式######創(chuàng)建集群,主節(jié)點(diǎn)和從節(jié)點(diǎn)比例為1,1-3為主,4-6為從,1和4,2和5,3和6分別對(duì)應(yīng)為主從關(guān)系,這也是最經(jīng)典用的最多的集群redis-cli --cluster create ip1:port1 ip2:port2 ip3:port3 ip4:port4 ip5:port5 ip6:port6 --cluster-replicas 1?輸入完創(chuàng)建命令后,會(huì)顯示集群配置信息,如下。輸入yes同意即可創(chuàng)建成功
?2、檢查集群信息。創(chuàng)建成功后可以使用如下命令
redis-cli --cluster check 192.168.1.201:6379?擴(kuò)展1:
slots:槽,用于裝數(shù)據(jù),主節(jié)點(diǎn)有,從節(jié)點(diǎn)沒(méi)有
1、總共有16384個(gè)槽,會(huì)平均分配給master節(jié)點(diǎn)
2、槽slot怎么存儲(chǔ)
?存儲(chǔ)舉例說(shuō)明
主節(jié)點(diǎn)把數(shù)據(jù)存入slot槽中,從節(jié)點(diǎn)不會(huì)存儲(chǔ)數(shù)據(jù),當(dāng)master掛掉時(shí),會(huì)把對(duì)應(yīng)的數(shù)據(jù)存入到對(duì)應(yīng)的slave中。
比如:2棟起火了(master掛了),101用戶(hù)就會(huì)到5棟(slave替代master,成為master)101。
?擴(kuò)展2:集群基本命令
擴(kuò)展三:springboot集成redis集群?
在springboot集群中配置即可
spring:redis:#Redis 集群模式password: imooccluster:nodes: 192.168.1.201:6379,192.168.1.202:6379,192.168.1.203:6379,192.168.1.204:6379,192.168.1.205:6379,192.168.1.206:6379?
總結(jié)
以上是生活随笔為你收集整理的Redis三主三从集群搭建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sql 三个表联合查询(三表左联查询)
- 下一篇: docker下mysql主从搭建