您好,登錄后才能下訂單哦!
?
?
Redis 是一個(gè)開(kāi)源的 key-value 存儲(chǔ)系統(tǒng),由于出眾的性能,大部分互聯(lián)網(wǎng)企業(yè)都用來(lái)做服務(wù)器端緩存。Redis 在3.0版本前只支持單實(shí)例模式,雖然支持主從模式、哨兵模式部署來(lái)解決單點(diǎn)故障,但是現(xiàn)在互聯(lián)網(wǎng)企業(yè)動(dòng)輒大幾百G的數(shù)據(jù),可完全是沒(méi)法滿(mǎn)足業(yè)務(wù)的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。
?
GB < TB < PB
---?
Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 個(gè) slot,每個(gè) Redis 實(shí)例負(fù)責(zé)其中一部分 slot 。集群中的所有信息(節(jié)點(diǎn)、端口、slot等),都通過(guò)節(jié)點(diǎn)之間定期的數(shù)據(jù)交換而更新。
?
Redis 客戶(hù)端可以在任意一個(gè) Redis 實(shí)例發(fā)出請(qǐng)求,如果所需數(shù)據(jù)不在該實(shí)例中,通過(guò)重定向命令引導(dǎo)客戶(hù)端訪問(wèn)所需的實(shí)例。
?
?
Redis 集群搭建規(guī)劃,由于集群至少需要6個(gè)節(jié)點(diǎn)(3主3從模式),
計(jì)劃是在一臺(tái)機(jī)器上模擬一個(gè)集群, 這和生產(chǎn)環(huán)境的集群搭建沒(méi)本質(zhì)區(qū)別
?
?
?創(chuàng)建實(shí)例目錄
mkdir /etc/redis-cluster
cd /etc/redis-cluster
mkdir -p 6379/data 6380/data 6381/data 6382/data 6383/data 6384/data
?
?復(fù)制執(zhí)行腳本
mkdir /etc/redis-cluster/bin
cd /opt/redis-5.0.0/src/
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /etc/redis-cluster/bin
?
?復(fù)制一個(gè)新 Redis 實(shí)例
cp /etc/redis/* /etc/redis-cluster/6379
vi /etc/redis-cluster/6379/redis.conf
port 6379(每個(gè)節(jié)點(diǎn)的端口號(hào))
daemonize yes
bind 192.168.86.130(綁定當(dāng)前機(jī)器 IP)
dir "/etc/redis-cluster/6379/data/"(數(shù)據(jù)文件存放位置)
pidfile /var/run/redis_6379.pid(pid 6379和port要對(duì)應(yīng))
cluster-enabled yes(啟動(dòng)集群模式)
cluster-config-file nodes6379.conf(6379和port要對(duì)應(yīng))
cluster-node-timeout 15000
appendonly yes
?
?\cp -rf 命令是不使用別名來(lái)復(fù)制
cp -rf /etc/redis-cluster/6379/* /etc/redis-cluster/6380
cp -rf /etc/redis-cluster/6379/* /etc/redis-cluster/6381
cp -rf /etc/redis-cluster/6379/* /etc/redis-cluster/6382
cp -rf /etc/redis-cluster/6379/* /etc/redis-cluster/6383
cp -rf /etc/redis-cluster/6379/* /etc/redis-cluster/6384
?
?分別修改6380 、6381、6382、6383、6384節(jié)點(diǎn)配置文件
vi /etc/redis-cluster/6380/redis.conf
:%s/6379/6380/g //文本內(nèi)使用全局替換
vi /etc/redis-cluster/6381/redis.conf
:%s/6379/6381/g //文本內(nèi)使用全局替換
vi /etc/redis-cluster/6382redis.conf
:%s/6379/6382g //文本內(nèi)使用全局替換
vi /etc/redis-cluster/6383redis.conf
:%s/6379/6383g //文本內(nèi)使用全局替換
vi /etc/redis-cluster/6384redis.conf
:%s/6379/6384g //文本內(nèi)使用全局替換
?
?開(kāi)啟所有節(jié)點(diǎn)服務(wù)(&是后臺(tái)運(yùn)行)
for i in 79 80 81 82 83 84
do
redis-server /etc/redis-cluster/63$i/redis.conf & done
?
?登錄隨便一個(gè)節(jié)點(diǎn)驗(yàn)證 確認(rèn)節(jié)點(diǎn)服務(wù)可以正常登陸
redis-cli -h 192.168.80.100 -p 6379
?
?安裝群集需要的 ruby環(huán)境
?由于 Redis 集群需要使用 ruby 命令,所以我們需要安裝 ruby 和相關(guān)接口。
yum -y install ruby ruby-devel rubygems rpm-build
?
?升級(jí)ruby版本
gem sources -a http://mirrors.aliyun.com/rubygems/
?添加aliyun鏡像并檢測(cè)Ruby版本
?
安裝RAM
?
(Ruby Version Manager )是一款RAM的命令行工具,可以使用RAM輕松安裝,管理Ruby版本。RVM包含了Ruby的版本管理和Gem庫(kù)管理(gemset)
?
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable
?
source /etc/profile.d/rvm.
?
查看Ruby版本:
?
rvm list known
?
?
安裝Ruby,從上面查到的信息隨便找一個(gè)比2.2.2版本要高的就行:
?
rvm install 2.6
?
用 gem 這個(gè)命令來(lái)安裝 redis接口 gem是ruby的一個(gè)工具包
gem install redis
?
?
?安裝完成ruby環(huán)境 執(zhí)行下面命令確認(rèn)是否正常
redis-trib.rb
?
?創(chuàng)建群集
?簡(jiǎn)單解釋一下這個(gè)命令:調(diào)用 ruby 命令來(lái)進(jìn)行創(chuàng)建集群,--replicas 1 表示主從復(fù)制比例為 1:1,即一個(gè)主節(jié)點(diǎn)對(duì)應(yīng)一個(gè)從節(jié)點(diǎn);然后,默認(rèn)給我們分配好了每個(gè)主節(jié)點(diǎn)和對(duì)應(yīng)從節(jié)點(diǎn)服務(wù),以及 solt 的大小,因?yàn)樵?Redis 集群中有且僅有 16383 個(gè) solt ,默認(rèn)情況會(huì)給我們平均分配,當(dāng)然你可以指定,后續(xù)的增減節(jié)點(diǎn)也可以重新分配。
./redis-trib.rb create --replicas 1 192.168.80.100:6379 192.168.80.100:6380 192.168.80.100:6381 192.168.80.100:6382 192.168.80.100:6383 192.168.80.100:6384
(yes)
?
redis-cli --cluster create 192.168.80.100:6379 192.168.80.100:6380 192.168.80.100:6381 192.168.80.100:6382 192.168.80.100:6383 192.168.80.100:6384 --cluster-replicas 1
?驗(yàn)證
?通過(guò)客戶(hù)端命令連接上,通過(guò)集群命令看一下?tīng)顟B(tài)和節(jié)點(diǎn)信息等。
/usr/local/redis-cluster/bin/redis-cli -c -h 192.168.80.100 -p 6379 //登錄
192.168.86.130:6379> cluster info //查看狀態(tài)
192.168.86.130:6379> cluster nodes //查看節(jié)點(diǎn)信息
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。