第一章 redis 集群安裝配置
*** 集群對應的主從節點如果同時down,則整個redis集群無法工作
*** 部分是對網上資源的整理,部分是安裝過程中存在問題的總結
準備、環境
centos1:192.168.215.156 A
centos2:192.168.215.157 B
yum -y install zlib ruby rubygems
gem install redis
查看ruby安裝的軟件的結合
gem list
安裝redis
[root@A opt]# tar -zxvf redis-3.2.2.tar.gz
[root@A opt]# cd redis-3.2.2
[root@A redis-3.2.2]# cd src/
[root@A src]# make && make install
redis 設置集群的配置
[[email protected] redis-3.2.2]# mkdir cluster/
[[email protected] cluster]# mkdir 7000
[[email protected] cluster]# mkdir 7001
[[email protected] cluster]# mkdir 7002
[[email protected] cluster]# mkdir 7003
[[email protected] cluster]# mkdir 7004
[[email protected]
修改redis的配置文件
[[email protected] 7000]# cat redis.conf
port 7000
#端口7000,7002,7003
bind 192.168.215.156
#默認ip為127.0.0.1 需要改為其他節點機器可訪問的ip或者網段,否則創建集群時無法訪問對應的端口,無法創建集群
daemonize yes
#redis後臺運行
pidfile /var/run/redis_7000.pid
#pidfile文件對應7000,7001,7002
cluster-enabled yes
#開啟集群 把註釋#去掉
cluster-config-file nodes_7000.conf
#集群的配置 配置文件首次啟動自動生成 7000,7001,7002
cluster-node-timeout 15000
#請求超時 默認15秒,可自行設置
appendonly yes
#數據存放AOF
開啟每一臺機器上的redis的服務
[[email protected] redis-3.2.2]# redis-server cluster/7000/redis.conf
查看端口信息
[[email protected] redis-3.2.2]# ps -ef|grep redis
root 11302 1 0 11:41 ? 00:00:03 redis-server 192.168.215.156:7000 [cluster]
root 11306 1 0 11:41 ? 00:00:03 redis-server 192.168.215.156:7001 [cluster]
root 11310 1 0 11:41 ? 00:00:03 redis-server 192.168.215.156:7002 [cluster]
root 12125 2558 0 12:00 pts/4 00:00:00 redis-cli -h 192.168.215.156 -c -p 7000
root 12135 5806 0 12:15 pts/0 00:00:00 grep redis
開啟防火墻iptables策略
例如:6379端口,需要放開6379和16379;6380需要開放6380和16380端口
原則上+10000
保護模式需要修改:protected-mode no
創建集群
[[email protected] redis-3.2.2]# redis-trib.rb create --replicas 1 A:7000 A:7001 A:7002 B:7003 B:7004 B:7005
----replicas 1 標識主節點下有1個從節點
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.215.157:7003
192.168.215.156:7000
192.168.215.157:7004
.
.
.
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
測試集群
集群的鏈接redis-cli -h host -c -p port
[[email protected] cluster]# redis-cli -h 192.168.215.156 -c -p 7000
[[email protected] redis-3.2.2]# redis-cli -h 192.168.215.157 -c -p 7003
192.168.215.157:7003> SET "xiaozhang" "男"
-> Redirected to slot [6387] located at 192.168.215.156:7000
OK
192.168.215.156:7000> KEYS *
1) "xiaozhang"
192.168.215.156:7000> get "xiaozhang"
"\xe7\x94\xb7"
節點查詢 > cluster nodes
./redis-trib.rb check 127.0.0.1:7002
cluster 擴容,增加節點
下面的命令將7006做為master添加到cluster中
./redis-trib.rb add-node IP:7006 IP:7000
把7007當成slave加入
./redis-trib.rb add-node --slave --master-id 226d1af3c95bf0798ea9fed86373b89347f889da 127.0.0.1:7007 127.0.0.1:7000
增加新的節點之後,問題就來了,16384個slot已經被其它3組節點分完了,新節點沒有slot,沒辦法存放緩存,所以需要將slot重新分布。
查看:
? src ./redis-trib.rb info 127.0.0.1:7000
127.0.0.1:7000 (0b7e0d53...) -> 4 keys | 5461 slots | 1 slaves.
127.0.0.1:7001 (e0e8dfdd...) -> 4 keys | 5462 slots | 1 slaves.
127.0.0.1:7006 (226d1af3...) -> 0 keys | 0 slots | 1 slaves. #7006上完全沒有slot
127.0.0.1:7002 (ec964a7c...) -> 9 keys | 5461 slots | 1 slaves.
[OK] 17 keys in 4 masters.
0.00 keys per slot on average.
./redis-trib.rb reshard 127.0.0.1:7000
刪除節點del-nod
./redis-trib.rb del-node 127.0.0.1:7006 88e16f91609c03277f2ee6ce5285932f58c221c1
第一章 redis 集群安裝配置