本文使用三台服务器搭建6个redis实例,详细介绍在CentOS7.2下创建和管理Redis-Cluster集群的方法,希望我的经验对大家有帮助。
系统环境
基于CentOS7.2操作系统部署。
服务器IP | 主机名 | 应用 |
10.10.10.1 | REDIS-A | Redist ruby |
10.10.10.2 | REDIS-B | |
10.10.10.3 | REDIS-C |
安装redis和ruby
安装redis
也可以选择在Redis官网下载安装包后编译安装,本文只介绍yum安装方法。
yum -y install epel-release yum -y install redis redis-trib # 查找redis-trib.rb文件所在的rpm # yum provides "*/redis-trib*"
安装rvm
CentOS 7.2 yum源的ruby版本是2.0.0,如果直接安装的话,在执行“gem install redis”时会报错:
redis requires Ruby version >= 2.2.2.
因此,必须通过rvm安装更新版本的ruby,依次执行如下命令:
# 导入rvm公钥 curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - # 安装rvm curl -sSL https://get.rvm.io | bash -s stable # 使rvm生效 source /usr/local/rvm/scripts/rvm
安装ruby
# 查看支持的ruby版本 rvm list known # 选择安装合适的ruby版本 rvm install 2.5.1 # 使ruby生效 rvm use 2.5.1 # 查看当前版本 ruby -v
现在终于可以执行安装过程中最关键的操作了:
gem install redis
配置环境
每台服务器配置两个redis实例,从7000~7005一共6个实例。
创建实例目录
# 10.10.10.1 mkdir -p /data/RedisCluster/700{0,1} # 10.10.10.2 mkdir -p /data/RedisCluster/700{2,3} # 10.10.10.3 mkdir -p /data/RedisCluster/700{4,5}
创建配置文件
基本配置redis.conf如下:
# 每个实例的端口号不同 port 7000 # 后台运行 daemonize yes # 启用集群模式 cluster-enabled yes # 禁用保护模式 protected-mode no # 绑定当前主机 # 与protected-mode二选一 # bind 10.10.10.1 # 每个实例的配置文件路径 cluster-config-file /data/RedisCluster/7000/redis.conf # 节点超时时间 cluster-node-timeout 6000 # 槽全覆盖,避免当节点宕机但槽未全覆盖时导致集群故障 cluster-require-full-coverage no # 日志文件 logfile /data/RedisCluster/7000/logs/redis7000.log
依次在每台服务器上启动redis-server 7000~7005实例:
# 以redis7000为例 redis-server /data/RedisCluster/7000/redis.conf
创建集群
关闭防火墙或者开放相应的端口,然后在任意一台服务器上运行以下命令:
redis-trib create --replicas 1 10.10.10.1:7000 10.10.10.1:7001 10.10.10.2:7002 10.10.10.2:7003 10.10.10.3:7004 10.10.10.3:7005
查看某redis实例状态:
redis-cli -h 10.10.10.1 -c -p 7000 info replication
管理集群
redis-cluster通过redis-trib进行集群管理。本人直接安装redis-trib的软件包,而不是“ruby redis-trib.rb”脚本方式,因此可以直接执行redis-trib命令。
操作集群
# 创建集群 # 一个redis集群最少3个主节点,每个节点1个从节点。最好先创建主节点,然后再添加从节点至对应的主节点 redis-trib create --replicas [m-s-ratio] [node-1] [node-2] [node-3] ... # 检测集群 # 检测集群slot状态,如果没有分配完则表示集群有问题 redis-trib check [ip]:[port] # 查看集群信息 # 查看key分布、slot数量和slave状态 redis-trib info [ip]:[port]
操作节点
# 删除节点 # 只能删除没有分配slot的节点,从集群中删出之后直接关闭实例 redis-trib del-node [ip]:[port] [node-id] # 添加主节点 redis-trib add-node [new-node-ip]:[port] [dest-node-ip]:[port] # 添加从节点 redis-trib add-node --slave --master-id [master-node-id] [new-node-ip]:[port] [dest-node-ip]:[port]
操作slot
# 平衡slot redis-trib rebalance [ip]:[port] # 迁移slot redis-trib reshard [ip]:[port] # redis-trib reshard --from [src-node-id] --to [dest-node-id] --slots [slots-quantity] [ip]:[port]
故障迁移
需要redis4以上版本才支持故障迁移。
redis-cli -h [ip] -p [port] cluster failover cluster nodes
原创文章禁止转载:技术学堂 » Redis部署cluster集群模式及常规命令