這里創(chuàng)建6個redis節(jié)點(diǎn)夹厌,其中三個為主節(jié)點(diǎn)南蹂,三個為從節(jié)點(diǎn)栈雳。
redis和端口對應(yīng)關(guān)系:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
從:
127.0.0.1:7003
127.0.0.1:7004
127.0.0.1:7005
步驟:
1,下載redis丘逸。官網(wǎng)下載3.0.0版本次屠,之前幾的版本不支持集群模式
下載地址:http://download.redis.io/releases/redis-3.0.0.tar.gz
2:上傳服務(wù)器媒楼,解壓乐尊,編譯
tar -zxvf redis-3.0.0.tar.gz
mv redis-3.0.0 redis3.0
cd /usr/local/redis3.0
make & make install
3:創(chuàng)建集群需要的目錄并拷貝redis
mkdir -p /usr/local/cluster
mkdir -p /usr/local/cluster/7000
mkdir -p /usr/local/cluster/7001
mkdir -p /usr/local/cluster/7002
mkdir -p /usr/local/cluster/7003
mkdir -p /usr/local/cluster/7004
mkdir -p /usr/local/cluster/7005
cp -rf /usr/local/redis3.0/* /usr/local/cluster/7000/
cp -rf /usr/local/redis3.0/* /usr/local/cluster/7001/
cp -rf /usr/local/redis3.0/* /usr/local/cluster/7002/
cp -rf /usr/local/redis3.0/* /usr/local/cluster/7003/
cp -rf /usr/local/redis3.0/* /usr/local/cluster/7004/
cp -rf /usr/local/redis3.0/* /usr/local/cluster/7005/
4:修改配置文件redis.conf
vi /usr/local/cluster/7000/redis.conf
修改配置文件中的下面選項(xiàng)
port 7000
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
同樣再對其它配置文件進(jìn)行修改
vi /usr/local/cluster/7001/redis.conf
vi /usr/local/cluster/7002/redis.conf
vi /usr/local/cluster/7003/redis.conf
vi /usr/local/cluster/7004/redis.conf
vi /usr/local/cluster/7005/redis.conf
注意:不同的目錄配置不同的redis.conf中的port
5:啟動6個redis
cd /usr/local/cluster/7000/src
redis-server ../redis.conf
cd /usr/local/cluster/7001/src
redis-server ../redis.conf
cd /usr/local/cluster/7002/src
redis-server ../redis.conf
cd /usr/local/cluster/7003/src
redis-server ../redis.conf
cd /usr/local/cluster/7004/src
redis-server ../redis.conf
cd /usr/local/cluster/7005/src
redis-server ../redis.conf
啟動之后使用命令查看redis的啟動情況:
ps -ef | grep redis
6,創(chuàng)建redis集群
cd /usr/local/redis3.0/src
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
6.1執(zhí)行上面的命令的時候會報(bào)錯,因?yàn)槭菆?zhí)行的的腳本划址,需要
錯誤內(nèi)容:/usr/bin/env: ruby: No such file or directory
所以需要安裝ruby的環(huán)境扔嵌,這里推薦使用yum install ruby
yum install ruby
6.2然后再執(zhí)行第步的創(chuàng)建集群命令,還會報(bào)錯夺颤,提示缺少rubygems組件
錯誤內(nèi)容:
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
yum install rubygems
6.3再次執(zhí)行第步的命令痢缎,還會報(bào)錯,提示不能加載redis世澜,是因?yàn)槿鄙賠edis的接口
錯誤內(nèi)容:
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in gem_original_require': no such file to load -- redis (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in require
from ./redis-trib.rb:25
gem install redis
這里可能無法安裝,因?yàn)闊o法連接gem服務(wù)器:
[@zw_22_90 src]# gem install redis --version 3.0.0
ERROR: Could not find a valid gem 'redis' (= 3.0.0) in any repository
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
需要手工下載并安裝:
wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
gem install -l ./redis-3.2.1.gem
6.4 再次執(zhí)行第步的命令独旷,正常執(zhí)行
輸入yes,然后配置完成寥裂。
[@zw_22_90 src]# ./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
>>> Creating cluster
Connecting to node 127.0.0.1:7000: OK
Connecting to node 127.0.0.1:7001: OK
Connecting to node 127.0.0.1:7002: OK
Connecting to node 127.0.0.1:7003: OK
Connecting to node 127.0.0.1:7004: OK
Connecting to node 127.0.0.1:7005: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
Adding replica 127.0.0.1:7003 to 127.0.0.1:7000
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
M: 2022f24d581b4a7c3342e3245c32927cbd5ec16d 127.0.0.1:7000
slots:0-5460 (5461 slots) master
M: 37b7008f80f8c21a698da8cb1f1b32db8c0c415c 127.0.0.1:7001
slots:5461-10922 (5462 slots) master
M: ac6dc5fa96e856b34c1ba4c3814394e4ebb698dd 127.0.0.1:7002
slots:10923-16383 (5461 slots) master
S: b5b76d70bbb0dbf3e7df8a38f1259e95e2054721 127.0.0.1:7003
replicates 2022f24d581b4a7c3342e3245c32927cbd5ec16d
S: 6881f8fef9c25da486f320ebf2ead39c1502db4c 127.0.0.1:7004
replicates 37b7008f80f8c21a698da8cb1f1b32db8c0c415c
S: f090526d32cced97731eef2a2e1722a7bac7d9ea 127.0.0.1:7005
replicates ac6dc5fa96e856b34c1ba4c3814394e4ebb698dd
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:7000)
M: 2022f24d581b4a7c3342e3245c32927cbd5ec16d 127.0.0.1:7000
slots:0-5460 (5461 slots) master
M: 37b7008f80f8c21a698da8cb1f1b32db8c0c415c 127.0.0.1:7001
slots:5461-10922 (5462 slots) master
M: ac6dc5fa96e856b34c1ba4c3814394e4ebb698dd 127.0.0.1:7002
slots:10923-16383 (5461 slots) master
M: b5b76d70bbb0dbf3e7df8a38f1259e95e2054721 127.0.0.1:7003
slots: (0 slots) master
replicates 2022f24d581b4a7c3342e3245c32927cbd5ec16d
M: 6881f8fef9c25da486f320ebf2ead39c1502db4c 127.0.0.1:7004
slots: (0 slots) master
replicates 37b7008f80f8c21a698da8cb1f1b32db8c0c415c
M: f090526d32cced97731eef2a2e1722a7bac7d9ea 127.0.0.1:7005
slots: (0 slots) master
replicates ac6dc5fa96e856b34c1ba4c3814394e4ebb698dd
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
至此redis集群即搭建成功嵌洼!
驗(yàn)證集群
(1)連接任意一個客戶端即可:./redis-cli -c -h -p (-c表示集群模式,指定ip地址和端口號)如:/usr/local/redis-cluster/bin/redis-cli -c -h 192.168.1.117 -p 700
(2)進(jìn)行驗(yàn)證:cluster info(查看集群信息)封恰、cluster nodes(查看節(jié)點(diǎn)列表)
(3)進(jìn)行數(shù)據(jù)操作驗(yàn)證
(4)關(guān)閉集群則需要逐個進(jìn)行關(guān)閉麻养,使用命令:
/usr/local/redis-cluster/bin/redis-cli -c -h 192.168.1.117 -p 7001 shutdown
注意:當(dāng)出現(xiàn)集群無法啟動時,刪除臨時的數(shù)據(jù)文件诺舔,再次重新啟動每一個redis服務(wù)鳖昌,然后重新構(gòu)造集群環(huán)境。
集群操作混萝,動態(tài)添加減少節(jié)點(diǎn)等問題
redis集群操作主要命令:
create:構(gòu)建集群
fix:單點(diǎn)修復(fù)
check:集群驗(yàn)證
add-node:添加節(jié)點(diǎn)
del-node:刪除節(jié)點(diǎn)
reshard:重新分片