Redis 是一個開源的 key-value 存儲系統(tǒng),由于出眾的性能,大部分互聯(lián)網(wǎng)企業(yè)都用來做服務(wù)器端緩存。Redis 在3.0版本前只支持單實例模式,雖然支持主從模式、哨兵模式部署來解決單點故障,但是現(xiàn)在互聯(lián)網(wǎng)企業(yè)動輒大幾百G的數(shù)據(jù),可完全是沒法滿足業(yè)務(wù)的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。
?
GB < TB < PB
---?
Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 個 slot,每個 Redis 實例負(fù)責(zé)其中一部分 slot 。集群中的所有信息(節(jié)點、端口、slot等),都通過節(jié)點之間定期的數(shù)據(jù)交換而更新。
?
Redis 客戶端可以在任意一個 Redis 實例發(fā)出請求,如果所需數(shù)據(jù)不在該實例中,通過重定向命令引導(dǎo)客戶端訪問所需的實例。
?
?
Redis 集群搭建規(guī)劃,由于集群至少需要6個節(jié)點(3主3從模式),
計劃是在一臺機(jī)器上模擬一個集群, 這和生產(chǎn)環(huán)境的集群搭建沒本質(zhì)區(qū)別
?
?創(chuàng)建實例目錄
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ù)制一個新 Redis 實例
cp /etc/redis/* /etc/redis-cluster/6379
vi /etc/redis-cluster/6379/redis.conf
port 6379(每個節(jié)點的端口號)
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要對應(yīng))
cluster-enabled yes(啟動集群模式)
cluster-config-file nodes6379.conf(6379和port要對應(yīng))
cluster-node-timeout 15000
appendonly yes
?\cp -rf 命令是不使用別名來復(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é)點配置文件
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)使用全局替換
?開啟所有節(jié)點服務(wù)(&是后臺運(yùn)行)
for i in 79 80 81 82 83 84
do
redis-server /etc/redis-cluster/63$i/redis.conf & done
?登錄隨便一個節(jié)點驗證 確認(rèn)節(jié)點服務(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
?升級ruby版本
gem sources -a http://mirrors.aliyun.com/rubygems/
?添加aliyun鏡像并檢測Ruby版本
?
安裝RAM
?
(Ruby Version Manager )是一款RAM的命令行工具,可以使用RAM輕松安裝,管理Ruby版本。RVM包含了Ruby的版本管理和Gem庫管理(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,從上面查到的信息隨便找一個比2.2.2版本要高的就行:
?
rvm install 2.6
?
用 gem 這個命令來安裝 redis接口 gem是ruby的一個工具包
gem install redis
?
?安裝完成ruby環(huán)境 執(zhí)行下面命令確認(rèn)是否正常
redis-trib.rb
?創(chuàng)建群集
?簡單解釋一下這個命令:調(diào)用 ruby 命令來進(jìn)行創(chuàng)建集群,--replicas 1 表示主從復(fù)制比例為 1:1,即一個主節(jié)點對應(yīng)一個從節(jié)點;然后,默認(rèn)給我們分配好了每個主節(jié)點和對應(yīng)從節(jié)點服務(wù),以及 solt 的大小,因為在 Redis 集群中有且僅有 16383 個 solt ,默認(rèn)情況會給我們平均分配,當(dāng)然你可以指定,后續(xù)的增減節(jié)點也可以重新分配。
./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
?驗證
?通過客戶端命令連接上,通過集群命令看一下狀態(tài)和節(jié)點信息等。
/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é)點信息
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。