redis 集群中內建了 16384 個雜湊槽,當需要在 redis 集群中放置乙個 key-value 時,redis 先對 key 使用 crc16 演算法算出乙個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應乙個編號在 0-16383 之間的雜湊槽,redis 會根據節點數量大致均等的將雜湊槽對映到不同的節點
1、集群搭建
集群中應該至少有三個節點,每個節點有一備份節點。需要6臺伺服器。搭建偽分布式,需要6個redis例項。
(因環境限制,僅是在同一臺伺服器上使用6個不同埠啟動redis個例項,3個作為主節點,3個作為備用節點)
(1)搭建步驟
a、建立6個redis例項並指定埠(7001-7006)
在redis目錄下建立 redis-cluster目錄
將redis原始碼複製6份放到redis-cluster目錄下
b、修改redis配置檔案(六個都需要改)
vi ./redis01/etc/redis.conf
將cluster-enable yes注釋開啟
然後修改對應埠 port 7001(其他依次為 7002 …)
c、安裝ruby環境(因為集群執行需要乙個ruby指令碼)
1、yum install ruby
2、安裝redis集群需要的包
gem install redis -v 3.3.3
[root@localhost /usr/local/redis]#gem install redis -v 3.3.3
fetching: redis-3.3.3.gem (100%)
successfully installed redis-3.3.3
parsing documentation for redis-3.3.3
installing ri documentation for redis-3.3.3
1 gem installed
d、寫乙個shell指令碼用來啟動redis集群所有服務
vim start-all.sh
#!/bin/bash
clusterpath="/usr/local/redis/redis-cluster/"
cd $clusterpath
redis_arr=(01 02 03 04 05 06)
for num in $
doecho "start num
nthr
edis
serv
er..
."cd
redi
snth redis server..." cd redis
numnth
redi
sser
ver.
.."c
dred
is/bin/
redis-server …/etc/redis.conf
cd …
cd …
done
chmod +x start-all.sh
啟動所有rediss例項
e、使用redis-trib.rb建立集群
命令./redis-trib.rb create --replicas 1 192.168.1.102:7001 192.168.1.102:7002 192.168.1.102:7003 192.168.1.102:7004 192.168.1.102:7005 192.168.1.102:7006
發現這個命令會出錯。說我沒有許可權。然後給前面加了ruby 表明是ruby指令碼。
./start-all.sh
ruby ./redis-trib.rb create --replicas 1 192.168.1.102:7001 192.168.1.102:7002 192.168.1.102:7003 192.168.1.102:7004 192.168.1.102:7005 192.168.1.102:7006
成功f、建立cluster過程可能會遇到一些問題:
參考:1)、>>> creating cluster
[err] node 192.168.1.102:7001 is not empty. either the node already knows other nodes (check with cluster nodes) or contains some key in database 0.
解決方法:
刪除每個節點下的dump.rdb檔案
或挨個進行flushdb
3.集群測試
搭建redis集群
sudo apt get install git python python pip sudo pip install redis sudo pip install e git sudo pip install e git git clone ll binaries total 19m 173582...
redis集群搭建
redis集群搭建持久化保證了即使redis服務重啟不會丟失資料,因為redis服務重啟後會將硬碟上持久化的資料恢復到記憶體中,但是當redis伺服器的硬碟損壞了可能會導致資料丟失,如果通過redis的主從複製機制就可以避免這種單點故障。接下來開始redis集群的搭建。1 ruby環境2 建立集群 ...
redis集群搭建
redis集群部署文件 centos6系統 要讓集群正常工作至少需要3 個主節點,在這裡我們要建立6個 redis 節點,其中三個為主節點,三個為從節點,對應的 redis 節點的ip 和埠對應關係如下 127.0.0.1 7000 127.0.0.1 7001 127.0.0.1 7002 127...