cluster分片集群模式搭建

step.1 安装redis,已安装可跳过

sudo apt-get install redis-server

step.2 配置cluster的reids.conf

# 创建cluster配置目录
sudo mkdir -p /data/redis-cluster/{conf,db,log}

配置6个redis实例,redis_7001.conf配置项目如下(以7001端口为例)

port 7001
daemonize  yes
pidfile "/var/run/redis/7001.pid"
logfile "/data/redis-cluster/log/7001.log"

cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000

appendonly yes
dir "/data/redis-cluster/db"
dbfilename "7001_dump.rdb"
appendfilename "7001_appendonly.aof"
# 注意,因为6个配置文件db库都在一个目录下/data/db/,所以默认文件名都需要修改,以免冲突

step.3 启动6个实例

sudo redis-server /data/redis-server/conf/redis_7001.conf
sudo redis-server /data/redis-server/conf/redis_7002.conf
sudo redis-server /data/redis-server/conf/redis_7003.conf
sudo redis-server /data/redis-server/conf/redis_8001.conf
sudo redis-server /data/redis-server/conf/redis_8002.conf
sudo redis-server /data/redis-server/conf/redis_8003.conf

查看一下,是否正常启动 ps -aux|grep redis

root     15370  0.0  0.0  41876  3680 ?        Ssl  12:01   0:07 redis-server *:7001 [cluster]
root     15379  0.0  0.0  41876  3656 ?        Ssl  12:01   0:07 redis-server *:7002 [cluster]
root     15386  0.0  0.0  41876  3700 ?        Ssl  12:01   0:07 redis-server *:7003 [cluster]
root     15393  0.0  0.0  41876  3692 ?        Ssl  12:01   0:07 redis-server *:8001 [cluster]
root     15400  0.0  0.0  41876  3644 ?        Ssl  12:02   0:07 redis-server *:8002 [cluster]
root     15407  0.0  0.0  41876  3692 ?        Ssl  12:02   0:07 redis-server *:8003 [cluster]

step.4 使用自带的redis-trib.rb工具集创建cluster

redis-trib.rb 是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集群命令封装成简单、便捷、实用的操作工具,用于给各节点发指令创建集群、检查集群状态或给集群重新分片等。redis-trib.rb是redis作者用ruby完成的。

使用apt-get 安装的,可以在/usr/share/doc/redis-tool/目录下找到,可以该工作集拷贝到/data/redis-cluster/

redis-trib.rb是ruby语言开发的,因此需要安装ruby环境

# 安装ruby
sudo apt-get install ruby

# 拷贝redis-trib.rb
sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /data/redis-cluster/

step.5 运行redis-trib.rb 开始配置cluster

sudo ./redis-trib.rb create --replicas 1 10.0.2.8:7001 10.0.2.8:7002 10.0.2.8:7003 10.0.2.8:8001 10.0.2.8:8002 10.0.2.8:8003
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
10.0.2.8:7001
10.0.2.8:7002
10.0.2.8:7003
Adding replica 10.0.2.8:8002 to 10.0.2.8:7001
Adding replica 10.0.2.8:8003 to 10.0.2.8:7002
Adding replica 10.0.2.8:8001 to 10.0.2.8:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 5f54805f02b6666589ed7f014b454555fba42d62 10.0.2.8:7001
   slots:0-5460 (5461 slots) master
M: bfb4b4d0b909e13fd3171cc38afac715dc952078 10.0.2.8:7002
   slots:5461-10922 (5462 slots) master
M: e851101f2f61d5fec8550cecc7e5708683727d7f 10.0.2.8:7003
   slots:10923-16383 (5461 slots) master
S: 1f758f3dcca92e3694f9b4dfd35733eb2109f9f0 10.0.2.8:8001
   replicates 5f54805f02b6666589ed7f014b454555fba42d62
S: c41e95ad470d5377cdeac57079d9b50fb070aba9 10.0.2.8:8002
   replicates bfb4b4d0b909e13fd3171cc38afac715dc952078
S: 3349f8e30c1267c99e4e64377060fb84605b4a3c 10.0.2.8:8003
   replicates e851101f2f61d5fec8550cecc7e5708683727d7f
Can I set the above configuration? (type 'yes' to accept): 

这里用的命令是create,因为我们需要创建一个新的集群。选项”–replicas 1”表示每个主节点需要一个从节点。其他参数就是需要加入这个集群的Redis实例的地址。

输入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 10.0.2.8:7001)
M: 5f54805f02b6666589ed7f014b454555fba42d62 10.0.2.8:7001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: c41e95ad470d5377cdeac57079d9b50fb070aba9 10.0.2.8:8002
   slots: (0 slots) slave
   replicates bfb4b4d0b909e13fd3171cc38afac715dc952078
S: 1f758f3dcca92e3694f9b4dfd35733eb2109f9f0 10.0.2.8:8001
   slots: (0 slots) slave
   replicates 5f54805f02b6666589ed7f014b454555fba42d62
M: bfb4b4d0b909e13fd3171cc38afac715dc952078 10.0.2.8:7002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 3349f8e30c1267c99e4e64377060fb84605b4a3c 10.0.2.8:8003
   slots: (0 slots) slave
   replicates e851101f2f61d5fec8550cecc7e5708683727d7f
M: e851101f2f61d5fec8550cecc7e5708683727d7f 10.0.2.8:7003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

我们创建的集群有3个主节点和3个从节点。

集群会被配置并彼此连接好,意思是各节点实例被引导彼此通话并最终形成集群。16384个哈希槽都被主节点正常服务着。

step.6 测试cluster集群

连接客户端

$ redis-cli -c -p 7001
# 这里要加上 -c这个参数,如果不加,当key所在的slots槽在别的redis节点时,会返回`MOVED <slots No.> <ip> <port>`。
# 加上-c后,会自动切换去别相关的连接

# 查看redis集群各节点
redis> cluster nodes

高可用测试kill掉7001

sudo kill <7001pid>
# 8001迅速补上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值