redis-cluster(集群)
简介
- redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求,在3.0之前为了解决容量高可用用方面的需求基本上只能通过客户端分片+redis sentinel或者代理(twemproxy、codis)方案解决、redis cluster非常优雅地解决了redis集群方面的问题
- 功能
- 高性能
- 线性扩容
- 高可用
搭建redis-cluster集群
-
创建6个节点,用于存储数据,信息都除了端口不同都是一样的
vim redis-7000.conf # 插入信息 port 7000 daemonize yes dir "/opt/redis/data" logfile "7000.log" dbfilename "dump-7000.rdb" cluster-enabled yes #开启集群模式 cluster-config-file nodes-7000.conf #集群内部的配置文件
-
启动6个数据库实例
redis-server redis-7000.conf redis-server redis-7001.conf redis-server redis-7002.conf redis-server redis-7003.conf redis-server redis-7004.conf redis-server redis-7005.conf
-
检查其日志和进程状态
# 查看日志 cat 7000.log # 查看redis服务端 进程号 netstat -tunlp|grep redis ps -ef |grep redis
-
开启分配redis集群状态,以及槽位分配,
- 对redis集群管理的工具有几种,有豆瓣公司开源的codis工具,还有ruby
-
准备ruby的编程环境并下载,
# 1.下载ruby的源码包 wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz # 2. 解压ruby源码 tar -xvf ruby-2.3.1.tar.gz # 3. cd 到ruby-2.3.1,编译 ./configure --prefix=/opt/ruby/ # 4 安装 make && make install # 将其加入环境变量中 vim /etc/profile 插入内容 export PATH=$PATH:/opt/ruby/bin # 读出该文件,使其生效 source /etc/profile
-
安装ruby操作redis模块
# 1. 下载ruby操作redis的模块 wget http://rubygems.org/downloads/redis-3.3.0.gem # 2. 安装 gem install -l redis-3.3.0.gem # 3. 搜索创建redis集群的命令 find /opt -name redis-trib.rb 搜索结果: /opt/redis-4.0.10/src/redis-trib.rb
-
一键创建redis集群
/opt/redis-4.0.10/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 # 参数解析 --replicas 进行身份授权 后面的1 代表,每个主节点,只有一个从节点 # redis-5.03版本创建集群的命令为下 redis-cli --cluster create 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 --cluster-replicas 1
-
查看集群节点,是否能正常写入数据
redis-cli -p 7000 -c # 参数解析 -p 指定数据库端口 -c 指定开启集群模式
-
查看集群状态
redis-cli -p 7000 cluster info redis-cli -p 7000 cluster nodes #等同于查看nodes-7000.conf文件节点信息 集群主节点状态 redis-cli -p 7000 cluster nodes | grep master 集群从节点状态 redis-cli -p 7000 cluster nodes | grep slave
-
查看集群状态
[root@localhost /opt/redis/data]#redis-cli -p 7000 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:531 cluster_stats_messages_pong_sent:586 cluster_stats_messages_sent:1117 cluster_stats_messages_ping_received:581 cluster_stats_messages_pong_received:531 cluster_stats_messages_meet_received:5 cluster_stats_messages_received:1117