redis集群
配置Redis集群步骤:
1.准备6台Redis服务器
配置redis
81 tar -xzf redis-4.0.8.tar.gz
82 rpm -q gcc gcc-c++
83 yum -y install gcc gcc-c++
84 cd redis-4.0.8/
85 make
86 make install
87 cd utils/
88 ./install_server.sh
89 netstat -utnlp | grep :6379
90 redis-cli -h 192.168.4.51 -p 6350
91 netstat -utnlp | grep :6379
92 /etc/init.d/redis_6379 status
2.配置Redis集群
2.2.1在每台redis服务器上做集群配置,然后重启redis服务
51 52 53 54 55 56
[root@52 ~]# ss -utnlp | grep redis
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=1014,fd=6))
[root@52 ~]# redis-cli
127.0.0.1:6379> Keys *
(empty list or set)
127.0.0.1:6379> exit
[root@52 ~]# /etc/init.d/redis_6379 stop
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
[root@52 ~]# /etc/init.d/redis_6379 status
cat: /var/run/redis_6379.pid: 没有那个文件或目录
Redis is running ()
[root@52 ~]# vim /etc/redis/6379.conf
70 bind 192.168.4.55
93 port 6355
815 cluster-enabled yes
823 cluster-config-file nodes-6355.conf
829 cluster-node-timeout 5000
[root@52 ~]# vim /etc/init.d/redis_6379
REDISPORT="6352"
[root@52 ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@52 ~]# /etc/init.d/redis_6379 status
Redis is running (1478)
[root@52 ~]# ss -utnlp | grep redis
tcp LISTEN 0 128 192.168.4.52:6352 *:* users:(("redis-server",pid=1478,fd=6))
tcp LISTEN 0 128 192.168.4.52:16352 *:* users:(("redis-server",pid=1478,fd=8))
2.2.2 把ruby脚本拷贝的系统命令
[root@51 ~]# cd redis-4.0.8/
[root@51 redis-4.0.8]# ls
00-RELEASENOTES COPYING Makefile redis.conf runtest-sentinel tests
BUGS deps MANIFESTO runtest sentinel.conf utils
CONTRIBUTING INSTALL README.md runtest-cluster src
[root@51 redis-4.0.8]# cd src/
[root@51 src]# ls *.rb
redis-trib.rb
这个管理集群的执行文件
redis-trib.rb需要的运行环境
[root@51 ~]# ls /var/lib/redis/6379/
dump.rdb nodes-6351.conf
[root@51 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@51 ~]# ls redis-4.0.8/src/redis-trib.rb
redis-4.0.8/src/redis-trib.rb
[root@51 ~]# cp redis-4.0.8/src/redis-trib.rb /usr/local/sbin/
[root@51 ~]# ls /usr/local/sbin/redis-trib.rb
/usr/local/sbin/redis-trib.rb
[root@51 ~]# rpm -q ruby
未安装软件包 ruby
[root@51 ~]# yum install ruby rubygems
[root@51 ~]# rpm -q ruby
ruby-2.0.0.648-30.el7.x86_64
[root@51 ~]# ls redis-cluster/
redis-3.2.1.gem ruby-devel-2.0.0.648-30.el7.x86_64.rpm
[root@51 ~]# cd redis-cluster/
[root@51 redis-cluster]# rpm -ivh --nodeps ruby-devel-2.0.0.648-30.el7.x86_64.rpm
警告:ruby-devel-2.0.0.648-30.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:ruby-devel-2.0.0.648-30.el7 ################################# [100%]
[root@51 redis-cluster]# gem redis-3.2.1.gem
ERROR: While executing gem ... (Gem::CommandLineError)
Unknown command redis-3.2.1.gem
[root@51 redis-cluster]# gem install redis-3.2.1.gem
Successfully installed redis-3.2.1
Parsing documentation for redis-3.2.1
Installing ri documentation for redis-3.2.1
1 gem installed
利用51作集权的管理
创建集群
[root@51 ~]# redis-trib.rb create --replicas 1 \
> 192.168.4.51:6351 \
> 192.168.4.52:6352 \
> 192.168.4.53:6353 \
> 192.168.4.54:6354 \
> 192.168.4.55:6355 \
> 192.168.4.56:6356 \
>
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.4.51:6351
192.168.4.52:6352
192.168.4.53:6353
Adding replica 192.168.4.55:6355 to 192.168.4.51:6351
Adding replica 192.168.4.56:6356 to 192.168.4.52:6352
Adding replica 192.168.4.54:6354 to 192.168.4.53:6353
M: b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351
slots:0-5460 (5461 slots) master
M: 2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352
slots:5461-10922 (5462 slots) master
M: 45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353
slots:10923-16383 (5461 slots) master
S: 9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354
replicates 45f61b35eaf179a4b161008b79c54122617048ee
S: 0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355
replicates b00bfb1d93247f56719582e8b9865ae374e17c33
S: 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356
replicates 2f002d4ec870d72d2f966c6051a586c57cff1afa
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 192.168.4.51:6351)
M: b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356
slots: (0 slots) slave
replicates 2f002d4ec870d72d2f966c6051a586c57cff1afa
M: 45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: 9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354
slots: (0 slots) slave
replicates 45f61b35eaf179a4b161008b79c54122617048ee
S: 0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355
slots: (0 slots) slave
replicates b00bfb1d93247f56719582e8b9865ae374e17c33
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
16384 hash slot 范围0-16383
192.168.4.51
0-5460 (5461 slots)
192.168.4.52
5461-10922 (5462 slots)
192.168.4.53
10923-16383 (5461 slots)
key/CRC16 值%16384
7%16384 = 5723
查看集群信息
[root@53 ~]# cat /var/lib/redis/6379/nodes-6353.conf
20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356@16356 slave 2f002d4ec870d72d2f966c6051a586c57cff1afa 0 1530608367585 6 connected
2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352@16352 master - 0 1530608365577 2 connected 5461-10922
0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355@16355 slave b00bfb1d93247f56719582e8b9865ae374e17c33 0 1530608366078 5 connected
b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351@16351 master - 0 1530608367082 1 connected 0-5460
45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353@16353 myself,master - 0 1530608366000 3 connected 10923-16383
9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354@16354 slave 45f61b35eaf179a4b161008b79c54122617048ee 0 1530608366580 4 connected
使用ruby脚本查看集权信息
[root@53 ~]# redis-cli -h 192.168.4.53 -p 6353
192.168.4.53:6353> CLUSTER nodes
20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356@16356 slave 2f002d4ec870d72d2f966c6051a586c57cff1afa 0 1530609891080 6 connected
2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352@16352 master - 0 1530609890000 2 connected 5461-10922
0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355@16355 slave b00bfb1d93247f56719582e8b9865ae374e17c33 0 1530609891582 5 connected
b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351@16351 master - 0 1530609891582 1 connected 0-5460
45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353@16353 myself,master - 0 1530609891000 3 connected 10923-16383
9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354@16354 slave 45f61b35eaf179a4b161008b79c54122617048ee 0 1530609891582 4 connected
192.168.4.53:6353> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:3
cluster_stats_messages_ping_sent:3169
cluster_stats_messages_pong_sent:2564
cluster_stats_messages_meet_sent:1
cluster_stats_messages_sent:5734
cluster_stats_messages_ping_received:2560
cluster_stats_messages_pong_received:3170
cluster_stats_messages_meet_received:4
cluster_stats_messages_received:5734
首先准备6台redis服务器(服务按照默认配置运行即可)
在6台redis服务器上启用集群配置,并重启服务
创建集群 ruby脚本(管理: 创建 查看 删除 添加 )
创建集群时,保证数据库里没有数据。-----flushall
配置Redis集群步骤:
1.准备6台Redis服务器
配置redis
81 tar -xzf redis-4.0.8.tar.gz
82 rpm -q gcc gcc-c++
83 yum -y install gcc gcc-c++
84 cd redis-4.0.8/
85 make
86 make install
87 cd utils/
88 ./install_server.sh
89 netstat -utnlp | grep :6379
90 redis-cli -h 192.168.4.51 -p 6350
91 netstat -utnlp | grep :6379
92 /etc/init.d/redis_6379 status
2.配置Redis集群
2.2.1在每台redis服务器上做集群配置,然后重启redis服务
51 52 53 54 55 56
[root@52 ~]# ss -utnlp | grep redis
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=1014,fd=6))
[root@52 ~]# redis-cli
127.0.0.1:6379> Keys *
(empty list or set)
127.0.0.1:6379> exit
[root@52 ~]# /etc/init.d/redis_6379 stop
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
[root@52 ~]# /etc/init.d/redis_6379 status
cat: /var/run/redis_6379.pid: 没有那个文件或目录
Redis is running ()
[root@52 ~]# vim /etc/redis/6379.conf
70 bind 192.168.4.55
93 port 6355
815 cluster-enabled yes
823 cluster-config-file nodes-6355.conf
829 cluster-node-timeout 5000
[root@52 ~]# vim /etc/init.d/redis_6379
REDISPORT="6352"
[root@52 ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@52 ~]# /etc/init.d/redis_6379 status
Redis is running (1478)
[root@52 ~]# ss -utnlp | grep redis
tcp LISTEN 0 128 192.168.4.52:6352 *:* users:(("redis-server",pid=1478,fd=6))
tcp LISTEN 0 128 192.168.4.52:16352 *:* users:(("redis-server",pid=1478,fd=8))
2.2.2 把ruby脚本拷贝的系统命令
[root@51 ~]# cd redis-4.0.8/
[root@51 redis-4.0.8]# ls
00-RELEASENOTES COPYING Makefile redis.conf runtest-sentinel tests
BUGS deps MANIFESTO runtest sentinel.conf utils
CONTRIBUTING INSTALL README.md runtest-cluster src
[root@51 redis-4.0.8]# cd src/
[root@51 src]# ls *.rb
redis-trib.rb
这个管理集群的执行文件
redis-trib.rb需要的运行环境
[root@51 ~]# ls /var/lib/redis/6379/
dump.rdb nodes-6351.conf
[root@51 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@51 ~]# ls redis-4.0.8/src/redis-trib.rb
redis-4.0.8/src/redis-trib.rb
[root@51 ~]# cp redis-4.0.8/src/redis-trib.rb /usr/local/sbin/
[root@51 ~]# ls /usr/local/sbin/redis-trib.rb
/usr/local/sbin/redis-trib.rb
[root@51 ~]# rpm -q ruby
未安装软件包 ruby
[root@51 ~]# yum install ruby rubygems
[root@51 ~]# rpm -q ruby
ruby-2.0.0.648-30.el7.x86_64
[root@51 ~]# ls redis-cluster/
redis-3.2.1.gem ruby-devel-2.0.0.648-30.el7.x86_64.rpm
[root@51 ~]# cd redis-cluster/
[root@51 redis-cluster]# rpm -ivh --nodeps ruby-devel-2.0.0.648-30.el7.x86_64.rpm
警告:ruby-devel-2.0.0.648-30.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:ruby-devel-2.0.0.648-30.el7 ################################# [100%]
[root@51 redis-cluster]# gem redis-3.2.1.gem
ERROR: While executing gem ... (Gem::CommandLineError)
Unknown command redis-3.2.1.gem
[root@51 redis-cluster]# gem install redis-3.2.1.gem
Successfully installed redis-3.2.1
Parsing documentation for redis-3.2.1
Installing ri documentation for redis-3.2.1
1 gem installed
利用51作集权的管理
创建集群
[root@51 ~]# redis-trib.rb create --replicas 1 \
> 192.168.4.51:6351 \
> 192.168.4.52:6352 \
> 192.168.4.53:6353 \
> 192.168.4.54:6354 \
> 192.168.4.55:6355 \
> 192.168.4.56:6356 \
>
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.4.51:6351
192.168.4.52:6352
192.168.4.53:6353
Adding replica 192.168.4.55:6355 to 192.168.4.51:6351
Adding replica 192.168.4.56:6356 to 192.168.4.52:6352
Adding replica 192.168.4.54:6354 to 192.168.4.53:6353
M: b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351
slots:0-5460 (5461 slots) master
M: 2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352
slots:5461-10922 (5462 slots) master
M: 45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353
slots:10923-16383 (5461 slots) master
S: 9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354
replicates 45f61b35eaf179a4b161008b79c54122617048ee
S: 0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355
replicates b00bfb1d93247f56719582e8b9865ae374e17c33
S: 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356
replicates 2f002d4ec870d72d2f966c6051a586c57cff1afa
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 192.168.4.51:6351)
M: b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356
slots: (0 slots) slave
replicates 2f002d4ec870d72d2f966c6051a586c57cff1afa
M: 45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: 9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354
slots: (0 slots) slave
replicates 45f61b35eaf179a4b161008b79c54122617048ee
S: 0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355
slots: (0 slots) slave
replicates b00bfb1d93247f56719582e8b9865ae374e17c33
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
16384 hash slot 范围0-16383
192.168.4.51
0-5460 (5461 slots)
192.168.4.52
5461-10922 (5462 slots)
192.168.4.53
10923-16383 (5461 slots)
key/CRC16 值%16384
7%16384 = 5723
查看集群信息
[root@53 ~]# cat /var/lib/redis/6379/nodes-6353.conf
20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356@16356 slave 2f002d4ec870d72d2f966c6051a586c57cff1afa 0 1530608367585 6 connected
2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352@16352 master - 0 1530608365577 2 connected 5461-10922
0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355@16355 slave b00bfb1d93247f56719582e8b9865ae374e17c33 0 1530608366078 5 connected
b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351@16351 master - 0 1530608367082 1 connected 0-5460
45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353@16353 myself,master - 0 1530608366000 3 connected 10923-16383
9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354@16354 slave 45f61b35eaf179a4b161008b79c54122617048ee 0 1530608366580 4 connected
使用ruby脚本查看集权信息
[root@53 ~]# redis-cli -h 192.168.4.53 -p 6353
192.168.4.53:6353> CLUSTER nodes
20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356@16356 slave 2f002d4ec870d72d2f966c6051a586c57cff1afa 0 1530609891080 6 connected
2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352@16352 master - 0 1530609890000 2 connected 5461-10922
0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355@16355 slave b00bfb1d93247f56719582e8b9865ae374e17c33 0 1530609891582 5 connected
b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351@16351 master - 0 1530609891582 1 connected 0-5460
45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353@16353 myself,master - 0 1530609891000 3 connected 10923-16383
9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354@16354 slave 45f61b35eaf179a4b161008b79c54122617048ee 0 1530609891582 4 connected
192.168.4.53:6353> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:3
cluster_stats_messages_ping_sent:3169
cluster_stats_messages_pong_sent:2564
cluster_stats_messages_meet_sent:1
cluster_stats_messages_sent:5734
cluster_stats_messages_ping_received:2560
cluster_stats_messages_pong_received:3170
cluster_stats_messages_meet_received:4
cluster_stats_messages_received:5734
首先准备6台redis服务器(服务按照默认配置运行即可)
在6台redis服务器上启用集群配置,并重启服务
创建集群 ruby脚本(管理: 创建 查看 删除 添加 )
创建集群时,保证数据库里没有数据。-----flushall