版权声明: https://blog.csdn.net/qq_24313635/article/details/82945138
部署
Redis集群中要求奇数节点(master的投票机制),所以至少要有三个节点,并且每个节点至少有一备份节点,所以至少需要6个redis服务实例
① 环境准备
准备三台机器(192.168.37.133、192.168.37.134、192.168.37.135),每台部署两个Redis实例
- 192.168.37.133部署7001,7002端口的实例,分别放置在7001,7002目录下
- 192.168.37.134部署7003,7004端口的实例,分别放置在7003,7004目录下
- 192.168.37.135部署7005,7006端口的实例,分别放置在7005,7006目录下
②修改配置文件
修改每个实例的redis.conf配置文件
- port 7001(7001~7006)
- bind 0.0.0.0(允许所有ip客户端的访问)
- daemonize yes
- pidfile /opt/redis-4.0.11/7001/redis_7001.pid(7001~7006)
③安装ruby
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
④启动实例
与单点的redis的启动方式一样,分别启动六个redis的实例
./redis-server ../redis.conf &
⑤开放端口
- redis客户端连接端口
192.168.37.133的7001,7002;192.168.37.134的7003,7004;192.168.37.135的7005,7006端口
- 集群中实例相互通信的内部总线端口(redis客户端连接端口 + 10000)
192.168.37.133的17001,17002;192.168.37.134的17003,17004;192.168.37.135的17005,17006端口
⑥集群配置
在任意一个redis的src目录执行
./redis-trib.rb create --replicas 1 192.168.37.133:7001 192.168.37.133:7002 192.168.37.134:7003 192.168.37.134:7004 192.168.37.135:7005 192.168.37.135:7006
结果如下
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.37.133:7001
192.168.37.134:7003
192.168.37.135:7005
Adding replica 192.168.37.134:7004 to 192.168.37.133:7001
Adding replica 192.168.37.135:7006 to 192.168.37.134:7003
Adding replica 192.168.37.133:7002 to 192.168.37.135:7005
M: febe3f02bfb4800b5f9f0d0b57d675dc0fb882a0 192.168.37.133:7001
slots:0-5460 (5461 slots) master
S: 540f891d97dc0b0c4868488dfe1bc7de2813747a 192.168.37.133:7002
replicates 0e022381183dbe47e4ee32e6a10abb19066c82ff
M: 0eae91b1a0b4db3496d15d928f6a32eca50f7cdd 192.168.37.134:7003
slots:5461-10922 (5462 slots) master
S: 8e9f9cf9980ed5c0b59c1b7c3801645e3a13ff5a 192.168.37.134:7004
replicates febe3f02bfb4800b5f9f0d0b57d675dc0fb882a0
M: 0e022381183dbe47e4ee32e6a10abb19066c82ff 192.168.37.135:7005
slots:10923-16383 (5461 slots) master
S: 541d946fb7c1143b4365bec3c668dc76611ca901 192.168.37.135:7006
replicates 0eae91b1a0b4db3496d15d928f6a32eca50f7cdd
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.37.133:7001)
M: febe3f02bfb4800b5f9f0d0b57d675dc0fb882a0 192.168.37.133:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 0eae91b1a0b4db3496d15d928f6a32eca50f7cdd 192.168.37.134:7003
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M: 0e022381183dbe47e4ee32e6a10abb19066c82ff 192.168.37.135:7005
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: 8e9f9cf9980ed5c0b59c1b7c3801645e3a13ff5a 192.168.37.134:7004
slots: (0 slots) slave
replicates febe3f02bfb4800b5f9f0d0b57d675dc0fb882a0
S: 541d946fb7c1143b4365bec3c668dc76611ca901 192.168.37.135:7006
slots: (0 slots) slave
replicates 0eae91b1a0b4db3496d15d928f6a32eca50f7cdd
S: 540f891d97dc0b0c4868488dfe1bc7de2813747a 192.168.37.133:7002
slots: (0 slots) slave
replicates 0e022381183dbe47e4ee32e6a10abb19066c82ff
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
⑦验证
登录任意一台redis的客户端
./redis-cli -h 127.0.0.1 -p 7001
查看集群状态,执行
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:1
cluster_stats_messages_ping_sent:202
cluster_stats_messages_pong_sent:218
cluster_stats_messages_sent:420
cluster_stats_messages_ping_received:213
cluster_stats_messages_pong_received:202
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:420
查看集群节点信息,执行
cluster nodes
显示
0eae91b1a0b4db3496d15d928f6a32eca50f7cdd 192.168.37.134:7003@17003 master - 0 1538728029000 3 connected 5461-10922
0e022381183dbe47e4ee32e6a10abb19066c82ff 192.168.37.135:7005@17005 master - 0 1538728028666 5 connected 10923-16383
8e9f9cf9980ed5c0b59c1b7c3801645e3a13ff5a 192.168.37.134:7004@17004 slave febe3f02bfb4800b5f9f0d0b57d675dc0fb882a0 0 1538728031692 4 connected
541d946fb7c1143b4365bec3c668dc76611ca901 192.168.37.135:7006@17006 slave 0eae91b1a0b4db3496d15d928f6a32eca50f7cdd 0 1538728030685 6 connected
540f891d97dc0b0c4868488dfe1bc7de2813747a 192.168.37.133:7002@17002 slave 0e022381183dbe47e4ee32e6a10abb19066c82ff 0 1538728030000 5 connected
febe3f02bfb4800b5f9f0d0b57d675dc0fb882a0 192.168.37.133:7001@17001 myself,master - 0 1538728030000 1 connected 0-5460
可以看到
7001是master,7004是其slave
7003是master,7006是其slave
7005是master,7002是其slave
我们再用Redis desktop manager 进行连接测试
可以看到,Icon跟单点部署的Redis的Icon不一样,是集群的Icon
至此,Redis集群部署成功