Redis 集群搭建

集群中至少应该有奇数个节点,所以搭建集群最少需要3台主机。同时每个节点至少有一个备份节点,所以下面最少需要创建使用6台主机,才能完成Redis Cluster 集群搭建(主节点、备份节点由redis-cluster集群自动确定)

一、主机规划

本次实验将所有主备节点规划至一台虚拟机上

集群 IP Port
Master-1 127.0.0.1 7001
Master-2 127.0.0.1 7002
Master-3 127.0.0.1 7003
Backup-1 127.0.0.1 7004
Backup-2 127.0.0.1 7005
Backup-3 127.0.0.1 7006

二、Redis 安装

运维之道 | Redis 安装部署

三、Redis 集群环境部署

因为 redis-trib.rb 是由 ruby 语言编写的所以需要安装 ruby 环境

否则在执行下述四-7步 命令会出现 /usr/bin/env: ruby: 没有那个文件或目录 错误

  • 安装 ruby
[root@localhost src]# wget https://cache.ruby-china.com/pub/ruby/2.6/ruby-2.6.0.tar.bz2
[root@localhost src]# tar xvjf ruby-2.6.0.tar.bz2
[root@localhost ruby-2.6.0]# ./configure && make && make install
  • 安装 rubygem
[root@localhost src]# wget http://rubygems.org/downloads/redis-3.3.0.gem
[root@localhost src]# gem install-I redis-3.3.0.gem
[root@localhost src]# gem list--check redis gem
  • 安装 redis-trib.rb
[root@localhost src]# cp ${REDIS_HOME}/src/redis-trib.rb /usr/local/bin

ruby包下载库(原本可通过RVM安装ruby,但因为pgp公钥无法使用,便使用源码安装)
RVM安装ruby方法
gem install redis


四、Redis 集群部署

1、创建redis节点安装目录
[root@localhost ~]# mkdir /usr/local/redis_cluster
2、在节点目录下创建节点文件夹
[root@localhost redis_cluster]# pwd
/usr/local/redis_cluster[root@localhost redis_cluster]# mkdir {7001..7006}
[root@localhost redis_cluster]# ls
7001  7002  7003  7004  7005  7006

PS:为方便测试,以端口号规划文件夹

3、将redis.conf配置文件分别拷贝至7001-7006文件夹下
[root@localhost redis-3.0.7]# cp redis.conf /usr/local/redis_cluster/7001
[root@localhost redis-3.0.7]# cp redis.conf /usr/local/redis_cluster/7002
[root@localhost redis-3.0.7]# cp redis.conf /usr/local/redis_cluster/7003
[root@localhost redis-3.0.7]# cp redis.conf /usr/local/redis_cluster/7003
[root@localhost redis-3.0.7]# cp redis.conf /usr/local/redis_cluster/7004
[root@localhost redis-3.0.7]# cp redis.conf /usr/local/redis_cluster/7005
[root@localhost redis-3.0.7]# cp redis.conf /usr/local/redis_cluster/7006
4、分别修改7001-7006文件夹下的配置文件
bind 192.168.182.10                    ///绑定服务器IP地址
port 7001                              ///修改端口号,以此来区分redis实力
daemonize yes                          ///进程后台运行
pidfile /var/run/redis-7001.pid        ///修改pid进程文件名,以端口号命名
logfile /usr/local/redis_cluster/7001/redis-7001.log ///修改日志文件名称,以端口号命名
cluster-enabled yes                    ///开启集群
cluster-config-file nodes-7001.conf    ///配置每个节点的配置文件,以端口号命名
cluster-node-timeout 15000             ///配置集群节点的超时时间,可改可不改
appendonly yes                         ///启动AOF增量持久化策略,可改可不改(持久化)
appendfsync always                     ///发生改变就记录日志(持久化)

上述为7001节点的配置文件,7002-7006按上述修改即可,只需修改端口号

:%s/7001/700x/g

在vim编辑窗口中执行上述命令,替换每一行中所有端口号 7001 为 7002 - 6


5、将redis安装目录中redis-server启动文件拷贝到7001-7006文件夹中
  • 将存放redis-server启动文件的src目录拷贝至7001-7006目录下
[root@localhost redis-3.0.7]# cp -r src/ /usr/local/redis_cluster/7001/
[root@localhost redis-3.0.7]# cp -r src/ /usr/local/redis_cluster/7002/
[root@localhost redis-3.0.7]# cp -r src/ /usr/local/redis_cluster/7003/
[root@localhost redis-3.0.7]# cp -r src/ /usr/local/redis_cluster/7004/
[root@localhost redis-3.0.7]# cp -r src/ /usr/local/redis_cluster/7005/
[root@localhost redis-3.0.7]# cp -r src/ /usr/local/redis_cluster/7006/
6、启动7001-7006redis节点服务
  • 启动服务
[root@localhost redis_cluster]# ./7001/src/redis-server ./7001/redis.conf
[root@localhost redis_cluster]# ./7002/src/redis-server ./7002/redis.conf
[root@localhost redis_cluster]# ./7003/src/redis-server ./7003/redis.conf
[root@localhost redis_cluster]# ./7004/src/redis-server ./7004/redis.conf
[root@localhost redis_cluster]# ./7005/src/redis-server ./7005/redis.conf
[root@localhost redis_cluster]# ./7006/src/redis-server ./7006/redis.conf
  • 查看进程,服务是否正常启动
[root@localhost redis_cluster]# ps -ef | grep redis
root    10063    1  0 19:25 ?      00:00:00 ./7001/src/redis-server *:7001 [cluster]
root    10073    1  0 19:25 ?      00:00:00 ./7002/src/redis-server *:7002 [cluster]
root    10085    1  0 19:25 ?      00:00:00 ./7003/src/redis-server *:7003 [cluster]
root    10101    1  0 19:25 ?      00:00:00 ./7004/src/redis-server *:7004 [cluster]
root    10110    1  0 19:25 ?      00:00:00 ./7005/src/redis-server *:7005 [cluster]
root    10127    1  0 19:26 ?      00:00:00 ./7006/src/redis-server *:7006 [cluster]
7、创建集群

Redis 官方提供了 redis-trib.rb 集群创建工具,将该工具从安装目录拷贝至/usr/local/bin 目录下,后期可直接执行

[root@localhost src]# pwd
/usr/local/src/redis-3.0.7/src[root@localhost src]# cp redis-trib.rb /usr/local/bin/
  • 执行创建集群命令redis-trib.rb create --replicas 1
[root@localhost ~]# redis-trib.rb create --replicas 1 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 127.0.0.1:7006
  • redis-cluster集群自动分配主备节点
[root@localhost ruby-2.6.0]# redis-trib.rb create --replicas 1 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 127.0.0.1:7006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7001
127.0.0.1:7002
127.0.0.1:7003
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
Adding replica 127.0.0.1:7006 to 127.0.0.1:7003
M: 706751e512da31bfa57913a6bd7d2dfa9b7613dc 127.0.0.1:7001slots:0-5460 (5461 slots) master
M: aa0311afdfa0841bbbeb4bb2b5cf30d9bb0e89b3 127.0.0.1:7002slots:5461-10922 (5462 slots) master
M: d881ddb03725ea83573d228ebac72063671a8b4c 127.0.0.1:7003slots:10923-16383 (5461 slots) master
S: 048c459e013c5e479348c1f54a84d8793d0fd04b 127.0.0.1:7004replicates 706751e512da31bfa57913a6bd7d2dfa9b7613dc
S: b88d19049a552912a59d554727034df7b9f18903 127.0.0.1:7005replicates aa0311afdfa0841bbbeb4bb2b5cf30d9bb0e89b3
S: 6a98961c76ede3e65e1c8f013e4d3360d95e8dce 127.0.0.1:7006replicates d881ddb03725ea83573d228ebac72063671a8b4c
  • yes 分配策略
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 127.0.0.1:7001)
M: 706751e512da31bfa57913a6bd7d2dfa9b7613dc 127.0.0.1:7001slots:0-5460 (5461 slots) master
M: aa0311afdfa0841bbbeb4bb2b5cf30d9bb0e89b3 127.0.0.1:7002slots:5461-10922 (5462 slots) master
M: d881ddb03725ea83573d228ebac72063671a8b4c 127.0.0.1:7003slots:10923-16383 (5461 slots) master
M: 048c459e013c5e479348c1f54a84d8793d0fd04b 127.0.0.1:7004slots: (0 slots) masterreplicates 706751e512da31bfa57913a6bd7d2dfa9b7613dc
M: b88d19049a552912a59d554727034df7b9f18903 127.0.0.1:7005slots: (0 slots) masterreplicates aa0311afdfa0841bbbeb4bb2b5cf30d9bb0e89b3
M: 6a98961c76ede3e65e1c8f013e4d3360d95e8dce 127.0.0.1:7006slots: (0 slots) masterreplicates d881ddb03725ea83573d228ebac72063671a8b4c
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

五、Redis 集群测试

1、通过info查看replication信息
[root@localhost ~]#redis-cli -h 127.0.0.1 -c -p 7001
127.0.0.1:7001> info replication
# Replication
role:master                 ///主节点信息
connected_slaves:1
slave0:ip=127.0.0.1,port=7004,state=online,offset=1569,lag=1       ///备节点信息
master_repl_offset:1569
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:1568
2、数据测试
[root@localhost ~]# redis-cli -h 127.0.0.1 -c -p 7001       ///登录70001节点
127.0.0.1:7001> set mykey villian                            ///在当前master节点赋值
-> Redirected to slot [14687] located at 127.0.0.1:7003      ///重定向至7003节点,进行增加数据
OK                                                          ///通过7003节点节点,发现7006是从节点
127.0.0.1:7003> keys *
1) "mykey"
127.0.0.1:7003> quit                                     ///退出
[root@localhost ~]# redis-cli -h 127.0.0.1 -c -p 7006      ///进入到7006节点查看该数据是否存在
127.0.0.1:7006> keys *
1) "mykey"


资料:https://www.imooc.com/article/288695
资料:http://gudaoyufu.com/?p=1230#redis_sentinel
视频:https://www.bilibili.com/video/av49517046?p=33
redis-cluster 管理工具redis-trib.rb详解
Redis详解 - 主从复制原理
redis cluster - 集群原理
redis cluster - 集群常用命令

运维之道 | Redis 集群搭建相关推荐

  1. redis 集群搭建_Redis分布式缓存分布式集群搭建

    当你试图解决一个你不理解的问题时,复杂化就产成了.-Andy Boothe Redis集群安装部署 Redis是一个运行在内存的非关系型数据库,因为其速度快(效率高),支持数据的持久化(安全),事务操 ...

  2. redis 集群搭建_一文轻松搞懂redis集群原理及搭建与使用

    转载:https://juejin.im/post/5ad54d76f265da23970759d3 作者:SnailClimb 这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. ...

  3. redis集群搭建及设置账户(转)

    Redis集群搭建以及为集群设置密码 介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. ...

  4. Redis集群搭建-韩国庆

    认真一步一步搭建下来,就可以成功.... Redis-cluster集群架构讲解 redis集群专业名词称之为Redis-cluster,redis集群是从3.0版本以后才有的概念,也就是说在3.0之 ...

  5. redis集群搭建踩坑笔记

    推荐参考教程:https://blog.csdn.net/pucao_cug/article/details/69250101 错误: from /usr/lib/ruby/2.3.0/rubygem ...

  6. 系统学习redis之二——redis集群搭建

    redis单点部署: 安装命令: # cd /usr/local/ # wget http://download.redis.io/releases/redis-4.0.1.tar.gz #下载安装包 ...

  7. 转:Redis 集群搭建详细指南

    转自: https://www.cnblogs.com/mafly/p/redis_cluster.html [README] 非常棒的一篇文章,感谢作者的分享: 先有鸡还是先有蛋? 最近有朋友问了一 ...

  8. redis集群搭建与配置

    redis集群搭建与配置

  9. docker 完成 redis集群搭建

    [Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...

最新文章

  1. 12月3号条件控制语句和循环语句
  2. 9 Django 模型层(2)
  3. 怎么共享电脑上的文件_电脑小技巧--远程访问共享文件夹
  4. 我的BLOG:阅读目录
  5. 嵌入式实时系统程序开发一:按键程序编写
  6. 点对点(P2P)多线程断点续传的实现(转贴)
  7. python while函数_Python:无法在while循环中调用函数
  8. LayaAir Geolocation 获取地理位置
  9. 股票历史数据-股票历史行情数据下载
  10. html怎么设置表单的样式,html表单样式 如何用js给html表单设置style
  11. PHPstudy配置局域网
  12. 统计素数并求和python_Python练习题4.2统计素数并求和
  13. DATE_FORMAT函数用法
  14. Java源码阅读--任重而道远(lang)
  15. G_分包具体详情及处理
  16. 云杰恒指:6.11恒指期货实盘指导交易复盘
  17. 基于深度学习智能问答笔记
  18. 工作室课题-第二周笔记
  19. AI深度、机器学习数据集资源汇总
  20. iOS-Pods-XX.debug.xcconfig: unable to open file

热门文章

  1. c语言cgi json,CGI程序学习(4)-C程序中JSON解析
  2. 关于Expression表达式树的拼接
  3. #520. 「LibreOJ β Round #3」绯色 IOI(开端) 贪心
  4. TCP/IP协议栈在Linux内核中的运行时序分析
  5. java无法引用int_Java中的“int不能被解除引用”
  6. android 美团批量打包,Android 快速渠道批量打包详解教程-美团多渠道打包方案
  7. c语言 在txt文件中搜索关键词_请输入搜索关键字
  8. 从易经中看软件开发之道
  9. 嵌入式 Linux 入门(十、Linux 下的 C 编程)
  10. 迈德威视工业相机驱动安装