溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

redis群集

發(fā)布時(shí)間:2020-07-23 00:03:52 來(lái)源:網(wǎng)絡(luò) 閱讀:355 作者:何去何從_ie 欄目:云計(jì)算

?

Redis群集

?
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ū)別
?

?
(1)所有的redis節(jié)點(diǎn)彼此互聯(lián)(PING-PONG機(jī)制),內(nèi)部使用二進(jìn)制協(xié)議優(yōu)化傳輸速度和帶寬.
?
  (2)節(jié)點(diǎn)的fail是通過(guò)集群中超過(guò)半數(shù)的節(jié)點(diǎn)檢測(cè)失效時(shí)才生效.
?
  (3)客戶(hù)端與redis節(jié)點(diǎn)直連,不需要中間proxy層.客戶(hù)端不需要連接集群所有節(jié)點(diǎn),連接集群中任何一個(gè)可用節(jié)點(diǎn)即可
?
?
?創(chuàng)建多節(jié)點(diǎn)
?
cluster集群 HA高可用
先源碼裝一個(gè)redis

?
?創(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
?

redis群集

?復(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

?redis群集
?升級(jí)ruby版本

gem sources -a http://mirrors.aliyun.com/rubygems/ 

redis群集
?添加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.

redis群集
?redis群集
查看Ruby版本:
?
rvm list known
?
?
安裝Ruby,從上面查到的信息隨便找一個(gè)比2.2.2版本要高的就行:
?
rvm install 2.6

redis群集
?
用 gem 這個(gè)命令來(lái)安裝 redis接口 gem是ruby的一個(gè)工具包

gem install redis   

?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群集

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

redis群集
?驗(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)信息

redis群集

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI