Redis集群搭建的方式有多种,例如使用zookeeper(以前的redis经常配合zookeeper来做集群,因为原来没有官方的支持)等,但从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构(又叫分布式结构),每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。

redis-cluster的优势

1、官方推荐
2、去中心化,集群最大可增加1000个节点,性能随节点增加而线性扩展。
3、管理方便,后续可自行增加或摘除节点,移动分槽等等。
4、简单,易上手。

实验准备

准备全新的三台机器,一台机器两个角色,六个节点的集群。正常在公司应该是一个节点,一个redis。

现在是3个节点,6个redis。

6个redis怎么做?

把端口分开就行了,每一个端口代表一个redis,3个master,3个slave,并且要求3个master节点不能全部跑到同一台服务器上,保证节点安全,3台服务器的配置相同。

操作

环境为三台服务器:centos7.9

(一)在安装集群之前,需要在服务器上安装ruby环境(三台机器相同操作)。

yum install centos-release-scl-rh     安装ruby yum源

[root@redis1 src]# yum search ruby  查看ruby的主包

[root@redis1 src]# yum install -y rh-ruby26-ruby

[root@redis1 src]# scl  enable  rh-ruby26 bash 刷新环境

[root@redis1 src]# ruby -v   查看ruby版本

[root@redis1 src]# gem install redis   安装redis的库

三台机器相同操作

(二)安装redis (三台机器相同操作)

(三)创建节点目录(三台机器相同操作,注意端口号的不一样)

[root@redis1 redis-6.2.6]# mkdir data在redis的安装目录下,创建一个date的目录(存放数据的目录)

[root@redis1 redis-6.2.6]# mkdir cluster创建一个cluster的目录,存放不同节点的配置文件的目录

cd cluster/    注意下面这三行不一样

[root@redis1 cluster]# mkdir 7000 7001

[root@redis2 cluster]# mkdir 7001 7002

[root@redis3 cluster]# mkdir 7002 7000
systemctl stop redis  先关掉服务

(四)拷贝配置文件    控制节点操作,把这个配置文件分别拷到上面创建的六个目录里面

1

[root@redis1 cluster]# cd ..
[root@redis1 redis-6.2.6]# cp redis.conf cluster/7000
[root@redis1 redis-6.2.6]# cp redis.conf cluster/7001

2

[root@redis2 cluster]# cd ..
[root@redis2 redis-6.2.6]# cp redis.conf cluster/7001
[root@redis2 redis-6.2.6]# cp redis.conf cluster/7002

3

[root@redis3 cluster]# cd ..
[root@redis3 redis-6.2.6]# cp redis.conf cluster/7002
[root@redis3 redis-6.2.6]# cp redis.conf cluster/7000

(五)修改集群配置文件(主要是端口和ip,三台机器相同操作)

bind 192.168.22.156      改成自己的ip    # **绑定局域网ip,使得三台服务器可相互访问 daemonize yes     // redis后台运行,原来是用的&,修改为yes

pidfile /var/run/redis_7000.pid // pid文件,运行多个实例时,需要指定不同的pid文件,一共6个端口,先改7000

port 7000 // 监听端口,运行多个实例时,需要指定不同的端口

tcp-backlog 511 日志服务器的端口

tcp-keepalive 0 长链接

loglevel notice // 日志等级

logfile /var/log/redis_7000.log // 日志文件位置 运行多实例时,需要修改不同的端口

databases 16 // 可用数据库数

dir /root/redis-6.2.6/data //存放数据的目录

appendonly yes // redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态。

appendfilename "appendonly.aof" // AOF文件名称

appendfsync everysec // 表示对写操作进行累积,每秒同步一次

no-appendfsync-on-rewrite yes // AOF 自动重写

auto-aof-rewrite-percentage 80-100 // 重写百分比

auto-aof-rewrite-min-size 64mb

打开注释并修改的如下:

先看看有没有默认配置,没有把它打开

#如下为集群配置 cluster-enabled yes #启用集群

cluster-config-file nodes-7000.conf #集群配置文件,由redis自动更新,不需要手动配置,运行多实例时请注修改为对应端口

cluster-node-timeout 5000  #集群节点超时时间,即集群中主从节点断开连接时间阈值,超过该值则认为主节点不可以,从节点将有可能转为master

cluster-slave-validity-factor 10  #在进行故障转移的时候全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了导致数据过于陈旧,不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长,注意新版本此选项为:cluster-replica-validity-factor

#cluster-migration-barrier 1

cluster-require-full-coverage yes #集群中的所有slot(16384个)全部覆盖,才能提供服务

提示 可以在一台服务器上面修改好了scp到每台服务器对应的目录下面,然后修改ip和端口还有pid号日志存放文件和配置文件中的cluster-config-file nodes-7000.conf对应不同的端口!

[root@redis1 7000]# vim redis.conf 
[root@redis1 7000]# cp redis.conf  ../7001/
cp:是否覆盖"../7001/redis.conf"? yes

[root@redis1 7000]# scp redis.conf 192.168.22.169:/root/redis-6.2.6/cluster/7001
[root@redis1 7000]# scp redis.conf 192.168.22.169:/root/redis-6.2.6/cluster/7002
[root@redis1 7000]# scp redis.conf  192.168.22.170:/root/redis-6.2.6/cluster/7000
[root@redis1 7000]# scp redis.conf  192.168.22.170:/root/redis-6.2.6/cluster/7002
[root@redis1 cluster]# cd 7001
[root@redis1 7001]# vim redis.conf 

[root@redis2 7002]# vim redis.conf 
 

[root@redis2 7001]# vim redis.conf

[root@redis3 7000]# vim redis.conf

[root@redis3 7002]# vim redis.conf

(六)启动三台机器上面的每个节点(三台机器相同操作)

[root@redis1 redis-6.2.6]# cd src/
[root@redis1 src]# ./redis-server ../cluster/7000/redis.conf
[root@redis1 src]# ./redis-server ../cluster/7001/redis.conf

[root@redis2 redis-6.2.6]# cd src/
[root@redis2 src]# ./redis-server ../cluster/7001/redis.conf
[root@redis2 src]# ./redis-server ../cluster/7002/redis.conf

[root@redis3 redis-6.2.6]# cd src/
[root@redis3 src]# ./redis-server ../cluster/7000/redis.conf
[root@redis3 src]# ./redis-server ../cluster/7002/redis.conf

(七)创建集群(在控制节点上面操作即可,剩余机器不用操作)

Redis是根据IP和Port的顺序,确定master和slave的,所以要排好序,再执行。

在第一台机器执行。

[root@redis1 src]#  ./redis-cli --cluster create 192.168.22.156:7000 192.168.22.156:7001 192.168.22.169:7001 192.168.22.169:7002 192.168.22.170:7002 192.168.22.170:7000 --cluster-replicas 1

已经好了。去查看验证一下。

(八)查看集群状态可连接集群中的任一节点,此处连接了集群中的节点

登录集群客户端,-c标识以集群方式登录。 cluster info //查看集群信息

设置lisi,他把东西存在5798这个槽了,到了169的7001节点上,不管它到哪,都可以get,也可以在其他机器查。

不管在哪查,它都能帮你去真正存储数据的那台机器上查询数据。

检查集群状态:任意服务器都可以检查

实验成功。

【注意】少熬夜,多看书

Redis Cluster集群实验相关推荐

  1. Redis Cluster集群的搭建与实践[转]

    Redis Cluster集群的搭建与实践 Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后 ...

  2. Redis Cluster集群的搭建与实践

    Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...

  3. redis cluster 集群 HA 原理和实操(史上最全、面试必备)

    文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 经典图书:<Java高并发核心编程(卷1)> 面试必备 ...

  4. redis cluster集群选主

    redis 选主过程分析  当slave发现自己的master变为FAIL状态时,便尝试进行Failover,以期成为新的master.由于挂掉的master可能会有多个slave.Failover的 ...

  5. Ubuntu 16.04下Redis Cluster集群搭建(官方原始方案)

    前提:先安装好Redis,参考:http://www.cnblogs.com/EasonJim/p/7599941.html 说明:Redis Cluster集群模式可以做到动态增加节点和下线节点,使 ...

  6. centos7 docker-compose安装_Docker Compose 搭建 Redis Cluster 集群环境

    在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...

  7. redis cluster 集群重新启动关闭

    找遍了redis cluster官方文档,没发现有关集群重新启动和关闭的方法.为啥会没有呢,推測redis cluster至少要三个节点才干执行,三台同一时候挂掉的可能性比較小,仅仅要不同一时候挂掉. ...

  8. redis cluster 集群 安装 配置 详解

    redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...

  9. rediscluster全局数据_redis迁移,从redis cluster集群迁移数据到另外一个redis cluster集群...

    redis迁移,redis集群迁移$ yum install automake libtool autoconf bzip2 -y $ git clone https://github.com/vip ...

  10. redis集群扩容和缩容_深入理解Redis Cluster集群

    一.背景 前面的文章<深入理解Redis哨兵机制>一文中介绍了Redis哨兵集群的工作原理,哨兵集群虽然满足了高可用的特性,但是依然存在这样的问题:即数据只能往一个主节点上进行写入. 只能 ...

最新文章

  1. 自动化测试系列-自动化测试框架那些事儿
  2. Linux Ubuntu常用命令
  3. 【POJ - 3259 】Wormholes(Bellman_Ford或spfa算法,判断有向图中是否存在负环)
  4. 德国80%的统计学教授都会答错的6个与P值有关的问题!
  5. 6 QM配置-质量计划配置-定义检验特性的编号范围
  6. python 员工考勤_用python写的考勤自动打卡程序
  7. 6-2 错误与异常处理
  8. css3波,CSS3 声波
  9. python插件安装包_Python的插件安装
  10. Camera 360使用之坑
  11. vue v-for实现多行等分布局-三等分
  12. python演示,用经验分布逼近总体精确分布
  13. 已设定选项 ‘readonly‘ (请加 ! 强制执行)
  14. one algorithm a day keeps the doctor away -- BubbleSort
  15. 看DeepMind如何用Reinforcement learning玩游戏
  16. linux模拟蓝牙播放器,为 Ubuntu Linux 开启蓝牙 APTX / LDAC 支持
  17. mysql 学生成绩管理数据库操作案例
  18. 国内有哪些比较靠谱的云服务器?
  19. 数据库的数据独立性体现在哪里?
  20. RocketMQ编译版安装及安装中遇到的问题 windows版

热门文章

  1. libpcap简介及网络监测系统
  2. zabbix为啥持续报警
  3. Timeline(时间线)
  4. SpringCloud 配置管理:Nacos
  5. 重磅丨美国公布长达35页的《2016-2045年新兴科技趋势报告》
  6. 如何为你的文本标签添加圆点、三角等不规则图形-保姆级教程
  7. Python画一个中国地图玩玩
  8. CKA-1.26 模拟试题
  9. linux小企鹅输入法无法使用,助:小企鹅输入法安装成功,但无法使用!!!!先谢谢大家了!!...
  10. 什么是模拟信号?数字信号?区别是什么?它们又是如何完成转换的?