说明

Redis集群至少需要3个节点,来支持投票容错机制,每个节点都有从节点,所有最少是6个服务(3个主3个从)

因为集群内置了16384个slot(哈希槽),并且把所有的物理节点映射到了这16384[0-16383]个slot上,或者说把这些slot均等的分配给了各个节点。当需要在Redis集群存放一个数据(key-value)时,redis会先对这个key进行crc16算法,然后得到一个结果。再把这个结果对16384进行求余,这个余数会对应[0-16383]其中一个槽,进而决定key-value存储到哪个节点中。所以一旦某个节点挂了,该节点对应的slot就无法使用,那么就会导致集群无法正常工作。

当有一个主节点宕机,并且它有多个从节点那么这多个从节点就开始竞争选举master,
redis集群没有备份,那么当master挂掉之后那么这个节点上的数据因为没有salve备份和替换有可能会丢失,所以一般集群都会有备份的,一般是3主3从的配置

下载编译

wget http://download.redis.io/releases/redis-6.0.6.tar.gz# 解压
tar -xzvf redis-6.0.6.tar.gz# 安装编译工具
yum install gcc -y
yum -y install gcc automake autoconf libtool makecd redis-6.0.6# 编译安装
make && make install PREFIX=/usr/local/redis/redis-6.0.6_cluster/build

创建6个服务

cd /usr/local/redis/redis-clustermkdir redis01 cp /usr/local/redis/redis-6.0.6_cluster/build/bin ./redis01# 修改配置
vim redis.conf
---------------------
# 后台配置 开启
daemonize yes
# 集群配置 开启
cluster-enabled yes
# bind
bind 0.0.0.0
# 关闭保护模式
protected-mode no
# 端口
port 7001
---------------------# copy6份 cd /usr/local/redis/redis-cluster
cp redis01 redis02
cp redis01 redis03
cp redis01 redis04
cp redis01 redis05
cp redis01 redis06# 修改各自中的端口 为 7001-7006

启动脚本

cd /usr/local/redis/redis-cluster

vim start-all.sh

#!/bin/bash
echo 'start redis01!'
cd /usr/local/redis/redis-cluster/redis01
./redis-server redis.conf
echo 'complate redis01!'echo 'start redis02!'
cd /usr/local/redis/redis-cluster/redis02
./redis-server redis.conf
echo 'complate redis02!'echo 'start redis03!'
cd /usr/local/redis/redis-cluster/redis03
./redis-server redis.conf
echo 'complate redis03!'echo 'start redis04!'
cd /usr/local/redis/redis-cluster/redis04
./redis-server redis.conf
echo 'complate redis04!'echo 'start redis05!'
cd /usr/local/redis/redis-cluster/redis05
./redis-server redis.conf
echo 'complate redis05!'echo 'start redis06!'
cd /usr/local/redis/redis-cluster/redis06
./redis-server redis.conf
echo 'complate redis06!'

关闭脚本

vim shutdown.sh

#!/bin/bash
redis01/redis-cli -p 7001 shutdown
redis01/redis-cli -p 7002 shutdown
redis01/redis-cli -p 7003 shutdown
redis01/redis-cli -p 7004 shutdown
redis01/redis-cli -p 7005 shutdown
redis01/redis-cli -p 7006 shutdown
echo 'complate shutdown!'

服务命令

# 启动全部服务
./start-all.sh# 查询是否启动
netstat -nultp | grep redis# 创建集群
redis-cli --cluster create 192.168.3.142:7001 192.168.3.142:7002 192.168.3.142:7003 192.168.3.142:7004 192.168.3.142:7005 192.168.3.142:7006  --cluster-replicas 1输入:yes# 关闭集群
./shutdown.sh

查询节点信息

# 随便进入一个节点
redis-cli -p 7001 -c# 查询节点信息
cluster nodes-------------------------
a40a6fcfadf3629cbf526d3d42945b1fab7d7638 192.168.3.142:7001@17001 myself,master - 0 1619347646000 1 connected 0-5460
1379513c0c0a6c495030b666d590caa0629b399a 192.168.3.142:7003@17003 master - 0 1619347646000 3 connected 10923-16383
4e793b425b1a2347d2f40a67c4c1bf346e894594 192.168.3.142:7006@17006 slave cbb56a4d8e6f55218f98135d1fafc497076d894c 0 1619347649076 2 connected
470d7cece91aa170640a494bceb2fc195696485a 192.168.3.142:7005@17005 slave a40a6fcfadf3629cbf526d3d42945b1fab7d7638 0 1619347647035 1 connected
20507a8d47f36aebc8b486d7cfbfc18d778dff19 192.168.3.142:7004@17004 slave 1379513c0c0a6c495030b666d590caa0629b399a 0 1619347648054 3 connected
cbb56a4d8e6f55218f98135d1fafc497076d894c 192.168.3.142:7002@17002 master - 0 1619347647000 2 connected 5461-10922
-------------------------# 可以看出3个主3个从

重新创建集群

# 到各自redis0*中删除对应文件
rm -rf dump.rdb nodes.conf

redis搭建集群和主从相关推荐

  1. Redis运维和开发学习笔记(3)redis搭建集群

    Redis运维和开发学习笔记(3)redis搭建集群 文章目录 Redis运维和开发学习笔记(3)redis搭建集群 Redis集群搭建 Redis集群搭建 cp /etc/redis.d/redis ...

  2. redis 主从配置_Laravel 使用Redis缓存集群,主从集群配置就这么简单?

    前一节我们安装了Redis主从复制,在主从复制中,完成了数据的同步,master宕机后,可以切换到另外一台redis服务器进行读取和写入,完全没有不影响业务切换. 这一节我们讲解,Laravel中使用 ...

  3. redis搭建集群,拒绝连接问题解决

    重点提示,我这里是本地测试的,搭建集群是在同一台服务器上面,只是每台服务器的端口号不同 错误:Could not connect to Redis at 192.168.6.133:6379: Con ...

  4. Redis搭建集群时报错[ERR] Not all 16384 slots are covered by nodes.

    搭建集群时报错[ERR] Not all 16384 slots are covered by nodes. 其原因: 这个往往是由于主node移除了,但是并没有移除node上面的slot,从而导致了 ...

  5. redis搭建集群(非主从)版本5.0

    安装需要3台redis因为主从只有2台在主掉线了以后从库不能变为主库,导致影响生产 首先安装redis,前面有文章安装,可以去看一下 我这里的安装路径是默认的所以安装好是在/usr/local/bin ...

  6. Redis搭建集群,三主三从集群模式

    几种常见的redis集群模式: 方案一:主从复制 优点: 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离 为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务, ...

  7. redis映射的概念_搭建分布式Redis Cluster集群与Redis入门

    目录 Redis 集群搭建Redis 是啥集群(Cluster)Redis Cluster 说明Redis Cluster 节点Redis Cluster 集群模式不能保证一致性创建和使用 Redis ...

  8. Redis 分片集群搭建

    Redis 分片集群模式 主从和哨兵可以解决高可用.高并发读的问题.但是依然有两个问题没有解决: 海量数据存储问题,单台服务的磁盘存储终究是有瓶颈: master 负责写操作,高并发写情况下,单台 m ...

  9. Redis数据库搭建集群(集群概念、redis集群、搭建集群(配置机器1、2、创建集群、数据操作验证)、Python与redis集群交互)

    1. 集群的概念 集群是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高可用性和可缩放性. ...

最新文章

  1. 查找局域网中的DHCP服务器
  2. TypeScript方法的定义
  3. python中的os模块
  4. centos7 yum安装mysql5_Centos7 yum安装mysql5.7
  5. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的大学生健康档案管理系统
  6. python用什么来写模块-用Python编写模块有何技巧?
  7. adlicensegen怎么生成许可_国家排污许可证申请系统常见问题及解决办法
  8. phpcms整站代码分析
  9. 教你用Python写连连看外挂(滑稽)
  10. 字节跳动如何用7年,成为腾讯最可怕的对手?张一鸣一语道破
  11. linux sqlserver命令,sqlserver的命令行
  12. 我的macOS常用软件清单
  13. PDF Reader Pro,功能强大的 PDF 阅读编辑器
  14. 2019联想创新科技大会:“端边云网智”一切就绪
  15. 用 FC FOR nexenta 山寨SAN存储
  16. JavaScript之 高性能读书笔记
  17. 挑战程序设计竞赛(算法和数据结构)——19.2九宫格拼图问题的JAVA实现
  18. python实现翻转直角三角形
  19. Android 8.1中Settings中恢复出厂设置流程
  20. 外部用户触达方式有哪些?应用场景是什么?

热门文章

  1. R语言|PLS_DA分析绘图示例
  2. 二代测序数据统计分析中为什么是负二项分布?
  3. python使用matplotlib可视化棉签图、棉棒图(stem plot)、展示离散而有序的数据
  4. R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句
  5. python使用imbalanced-learn的KMeansSMOTE方法进行上采样处理数据不平衡问题
  6. R字符串(Strings)转为日期类型(Dates)
  7. 特征重要度(feature importance)如何获取、排序、可视化、以及可视化阈值设置?
  8. java linux mysql数据库_Linux Java连接MySQL数据库
  9. 调用本地html_requests-html:最简单的爬虫框架,看完你就会了
  10. 统计简单学_回归分析