日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

超详细的 Redis Cluster 官方集群搭建指南

發(fā)布時(shí)間:2023/12/3 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超详细的 Redis Cluster 官方集群搭建指南 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自??超詳細(xì)的 Redis Cluster 官方集群搭建指南

今天從 0 開始搭建 Redis Cluster 官方集群,解決搭建過(guò)程中遇到的問(wèn)題,超詳細(xì)。

安裝ruby環(huán)境

因?yàn)楣俜教峁┑膭?chuàng)建集群的工具是用ruby寫的,需要ruby2.2.2+版本支持,ruby安裝需要指定openssl。

安裝openssl

$?wget?https://www.openssl.org/source/openssl-1.0.2m.tar.gz $?tar?-zxvf?openssl-1.0.2m.tar.gz $?cd?openssl-1.0.2m $?./config?--prefix=/usr/local/openssl $?./config?-t $?make $?make?install $?openssl?version

安裝ruby

$?yum?remove?ruby $?wget?https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz $?tar?-zxvf?ruby-2.4.2.tar.gz $?cd?ruby-2.4.2 $?./configure?--with-openssl-dir=/usr/local/openssl $?make $?make?install $?sudo?ln?-s?/usr/local/bin/ruby?/usr/bin/ruby

安裝rubygems

$?wget?https://rubygems.org/rubygems/rubygems-2.3.0.tgz $?tar?-zxvf?rubygems-2.3.0.tgz $?cd?rubygems-2.3.0 $?ruby?setup.rb

安裝zlib

$?vi?/ruby-2.4.2/ext/zlib/Makefile zlib.o:?$(top_srcdir)/include/ruby.h 修改為: zlib.o:?../../include/ruby.h $?yum?install?zlib* $?cd?/ruby-2.4.2/ext/zlib $?ruby?extconf.rb $?make $?make?install

安裝redis庫(kù)

$?gem?install?redis ERROR:??While?executing?gem?...?(Gem::Exception)Unable?to?require?openssl,?install?OpenSSL?and?rebuild?ruby?(preferred)?or?use?non-HTTPS?sources

報(bào)這個(gè)錯(cuò),安裝openssl-devel,并重新編譯ruby即可。

參考:

https://www.larshaendler.com/2015/05/20/unable-to-require-openssl-install-openssl-and-rebuild-ruby-on-ubuntu-14-lts/

搭建集群

1、創(chuàng)建集群目錄

首先進(jìn)入一個(gè)新目錄,創(chuàng)建六個(gè)以端口號(hào)為名字的子目錄。

$?mkdir?redis-cluster $?cd?redis-cluster $?mkdir?9001?9002?9003?9004?9005?9006

2、添加集群配置文件

在文件夾9001~9006中各建一個(gè)redis.conf文件,修改對(duì)應(yīng)文件夾的端口,內(nèi)容如下:

port?9001 cluster-enabled?yes cluster-config-file?nodes.conf cluster-node-timeout?5000 appendonly?yes
  • cluster-enabled:用于開實(shí)例的集群模式

  • cluster-conf-file:設(shè)定了保存節(jié)點(diǎn)配置文件的路徑,默認(rèn)值為nodes.conf,節(jié)點(diǎn)配置文件無(wú)須人為修改,它由 Redis集群在啟動(dòng)時(shí)創(chuàng)建, 并在有需要時(shí)自動(dòng)進(jìn)行更新。

要讓集群正常運(yùn)作至少需要三個(gè)主節(jié)點(diǎn),不過(guò)在剛開始試用集群功能時(shí), 強(qiáng)烈建議使用六個(gè)節(jié)點(diǎn): 其中三個(gè)為主節(jié)點(diǎn), 而其余三個(gè)則是各個(gè)主節(jié)點(diǎn)的從節(jié)點(diǎn)。

3、添加redis服務(wù)文件

把編譯好的redis-server文件復(fù)制到redis-cluster文件夾中。

4、啟動(dòng)集群實(shí)例

進(jìn)入到9001~90066每個(gè)目錄下,啟動(dòng)每個(gè)實(shí)例:

$?cd?9001 $?../redis-server?./redis.conf

5、創(chuàng)建集群

現(xiàn)在我們已經(jīng)有了六個(gè)正在運(yùn)行中的Redis實(shí)例,接下來(lái)我們需要使用這些實(shí)例來(lái)創(chuàng)建集群,并為每個(gè)節(jié)點(diǎn)編寫配置文件。通過(guò)使用Redis集群命令行工具redis-trib,編寫節(jié)點(diǎn)配置文件的工作可以非常容易地完成:redis-trib位于Redis源碼的src文件夾中,它是一個(gè)Ruby程序,這個(gè)程序通過(guò)向?qū)嵗l(fā)送特殊命令來(lái)完成創(chuàng)建新集群,檢查集群,或者對(duì)集群進(jìn)行重新分片(reshared)等工作。

$?./redis-trib.rb?create?--replicas?1?127.0.0.1:9001?127.0.0.1:9002?127.0.0.1:9003?127.0.0.1:9004?127.0.0.1:9005?127.0.0.1:9006 >>>?Creating?cluster >>>?Performing?hash?slots?allocation?on?6?nodes... Using?3?masters: 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 Adding?replica?127.0.0.1:9004?to?127.0.0.1:9001 Adding?replica?127.0.0.1:9005?to?127.0.0.1:9002 Adding?replica?127.0.0.1:9006?to?127.0.0.1:9003 M:?bd330d41ffcc57a5a5d32e3f738ddf82c48cfed0?127.0.0.1:9001slots:0-5460?(5461?slots)?master M:?688b8cdbdc38fe6b9e81b410aae2f1c048f5907c?127.0.0.1:9002slots:5461-10922?(5462?slots)?master M:?33b757db6091e486af2032f1463d1fb07e8e89a7?127.0.0.1:9003slots:10923-16383?(5461?slots)?master S:?b00b464e4deb93a661755923641d36cadf648fcd?127.0.0.1:9004replicates?bd330d41ffcc57a5a5d32e3f738ddf82c48cfed0 S:?b3ec3a9c125cf168807231a16bacab946974d563?127.0.0.1:9005replicates?688b8cdbdc38fe6b9e81b410aae2f1c048f5907c S:?06a207f7a4dd3023f88e01fad8635cb471d004eb?127.0.0.1:9006replicates?33b757db6091e486af2032f1463d1fb07e8e89a7 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?127.0.0.1:9001) M:?bd330d41ffcc57a5a5d32e3f738ddf82c48cfed0?127.0.0.1:9001slots:0-5460?(5461?slots)?master1?additional?replica(s) S:?06a207f7a4dd3023f88e01fad8635cb471d004eb?127.0.0.1:9006slots:?(0?slots)?slavereplicates?33b757db6091e486af2032f1463d1fb07e8e89a7 S:?b00b464e4deb93a661755923641d36cadf648fcd?127.0.0.1:9004slots:?(0?slots)?slavereplicates?bd330d41ffcc57a5a5d32e3f738ddf82c48cfed0 M:?688b8cdbdc38fe6b9e81b410aae2f1c048f5907c?127.0.0.1:9002slots:5461-10922?(5462?slots)?master1?additional?replica(s) S:?b3ec3a9c125cf168807231a16bacab946974d563?127.0.0.1:9005slots:?(0?slots)?slavereplicates?688b8cdbdc38fe6b9e81b410aae2f1c048f5907c M:?33b757db6091e486af2032f1463d1fb07e8e89a7?127.0.0.1:9003slots:10923-16383?(5461?slots)?master1?additional?replica(s) [OK]?All?nodes?agree?about?slots?configuration. >>>?Check?for?open?slots... >>>?Check?slots?coverage... [OK]?All?16384?slots?covered.

這表示集群中的 16384 個(gè)槽都有至少一個(gè)主節(jié)點(diǎn)在處理, 集群運(yùn)作正常。

6、查看集群節(jié)點(diǎn)

192.168.10.38:9001>?cluster?nodes bd330d41ffcc57a5a5d32e3f738ddf82c48cfed0?127.0.0.1:9001@19001?myself,master?-?0?1511774435000?1?connected?0-5460 06a207f7a4dd3023f88e01fad8635cb471d004eb?127.0.0.1:9006@19006?slave?33b757db6091e486af2032f1463d1fb07e8e89a7?0?1511774436000?6?connected b00b464e4deb93a661755923641d36cadf648fcd?127.0.0.1:9004@19004?slave?bd330d41ffcc57a5a5d32e3f738ddf82c48cfed0?0?1511774436557?4?connected 688b8cdbdc38fe6b9e81b410aae2f1c048f5907c?127.0.0.1:9002@19002?master?-?0?1511774436557?2?connected?5461-10922 b3ec3a9c125cf168807231a16bacab946974d563?127.0.0.1:9005@19005?slave?688b8cdbdc38fe6b9e81b410aae2f1c048f5907c?0?1511774436657?5?connected 33b757db6091e486af2032f1463d1fb07e8e89a7?127.0.0.1:9003@19003?master?-?0?1511774436000?3?connected?10923-16383

連接使用集群

$?./redis-cli?-c?-h?192.168.1.8?-p?9002?-a?123456

-c:cluster,連接到集群模式,否則key不落在本實(shí)例將會(huì)報(bào)錯(cuò)。

-h:host,指定連接主機(jī)。

-p:port,指定連接端口。

-a:auth,指定密碼,集群模式需要指定,不然移動(dòng)會(huì)認(rèn)證失敗。

$?./redis-cli?-c?-h?192.168.1.8?-p?9002?-a?123456 127.0.0.1:9002>?set?hnad?21233 ->?Redirected?to?slot?[2114]?located?at?127.0.0.1:9001 OK

如上,鍵hnad被轉(zhuǎn)移到實(shí)例9001。

主從復(fù)制不能同步問(wèn)題解決

搭建一個(gè)3主3從的Redis Cluster集群發(fā)現(xiàn)從實(shí)例不能同步主實(shí)例的數(shù)據(jù),但確認(rèn)搭建的步驟和參數(shù)都沒啥問(wèn)題啊,官網(wǎng)也沒有給出對(duì)應(yīng)的問(wèn)題解決方案。

解決方案

后來(lái)查各種資料發(fā)現(xiàn),是因?yàn)橹鲗?shí)例設(shè)置了密碼,從實(shí)例配置中需要配置主實(shí)例的連接密碼才能實(shí)現(xiàn)主從復(fù)制同步。

就是下面這個(gè)配置:

#?If?the?master?is?password?protected?(using?the?"requirepass"?configuration #?directive?below)?it?is?possible?to?tell?the?slave?to?authenticate?before #?starting?the?replication?synchronization?process,?otherwise?the?master?will #?refuse?the?slave?request. # #?masterauth?<master-password>

翻譯:

如果master是密碼保護(hù)的,下面的配置就是可以告訴從實(shí)例在啟動(dòng)集群同步復(fù)制進(jìn)程之前要經(jīng)過(guò)認(rèn)證,否則主實(shí)例會(huì)拒絕從實(shí)例的請(qǐng)求。

解決流程

所以,要解決不同步問(wèn)題,先停止6個(gè)從實(shí)例,然后在每個(gè)實(shí)例的redis.conf文件中加入對(duì)應(yīng)主備實(shí)例的認(rèn)證密碼,然后再啟動(dòng)各個(gè)從實(shí)例。如:

masterauth?123456

然后主實(shí)例上的數(shù)據(jù)實(shí)時(shí)變化都會(huì)同步到從實(shí)例,問(wèn)題解決。

總結(jié)

以上是生活随笔為你收集整理的超详细的 Redis Cluster 官方集群搭建指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。