说明

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从的配置

下载编译

  1. wget http://download.redis.io/releases/redis-6.0.6.tar.gz
  2. # 解压
  3. tar -xzvf redis-6.0.6.tar.gz
  4. # 安装编译工具
  5. yum install gcc -y
  6. yum -y install gcc automake autoconf libtool make
  7. cd redis-6.0.6
  8. # 编译安装
  9. make && make install PREFIX=/usr/local/redis/redis-6.0.6_cluster/build

创建6个服务

  1. cd /usr/local/redis/redis-cluster
  2. mkdir redis01
  3. cp /usr/local/redis/redis-6.0.6_cluster/build/bin ./redis01
  4. # 修改配置
  5. vim redis.conf
  6. ---------------------
  7. # 后台配置 开启
  8. daemonize yes
  9. # 集群配置 开启
  10. cluster-enabled yes
  11. # bind
  12. bind 0.0.0.0
  13. # 关闭保护模式
  14. protected-mode no
  15. # 端口
  16. port 7001
  17. ---------------------
  18. # copy6份
  19. cd /usr/local/redis/redis-cluster
  20. cp redis01 redis02
  21. cp redis01 redis03
  22. cp redis01 redis04
  23. cp redis01 redis05
  24. cp redis01 redis06
  25. # 修改各自中的端口 为 7001-7006

启动脚本

cd /usr/local/redis/redis-cluster

vim start-all.sh

  1. #!/bin/bash
  2. echo 'start redis01!'
  3. cd /usr/local/redis/redis-cluster/redis01
  4. ./redis-server redis.conf
  5. echo 'complate redis01!'
  6. echo 'start redis02!'
  7. cd /usr/local/redis/redis-cluster/redis02
  8. ./redis-server redis.conf
  9. echo 'complate redis02!'
  10. echo 'start redis03!'
  11. cd /usr/local/redis/redis-cluster/redis03
  12. ./redis-server redis.conf
  13. echo 'complate redis03!'
  14. echo 'start redis04!'
  15. cd /usr/local/redis/redis-cluster/redis04
  16. ./redis-server redis.conf
  17. echo 'complate redis04!'
  18. echo 'start redis05!'
  19. cd /usr/local/redis/redis-cluster/redis05
  20. ./redis-server redis.conf
  21. echo 'complate redis05!'
  22. echo 'start redis06!'
  23. cd /usr/local/redis/redis-cluster/redis06
  24. ./redis-server redis.conf
  25. echo 'complate redis06!'

关闭脚本

vim shutdown.sh

  1. #!/bin/bash
  2. redis01/redis-cli -p 7001 shutdown
  3. redis01/redis-cli -p 7002 shutdown
  4. redis01/redis-cli -p 7003 shutdown
  5. redis01/redis-cli -p 7004 shutdown
  6. redis01/redis-cli -p 7005 shutdown
  7. redis01/redis-cli -p 7006 shutdown
  8. echo 'complate shutdown!'

服务命令

  1. # 启动全部服务
  2. ./start-all.sh
  3. # 查询是否启动
  4. netstat -nultp | grep redis
  5. # 创建集群
  6. 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
  7. 输入:yes
  8. # 关闭集群
  9. ./shutdown.sh

查询节点信息

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

重新创建集群

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

redis搭建集群和主从的更多相关文章

  1. redis搭建集群并用TreeSoft管理

    前言:redis作为一款高效的NOSQL数据库已经深入贯彻和落实到我们的日常开发代码中,作为缓存.时间控制.数据仓库.队列等使用方法层出不穷,简直是开写代码.居家旅行之必备良药.曾经,我们的项目都是单 ...

  2. redis sentinel 集群配置-主从切换

    1.配置redis master,redis slave(配置具体操作见上文http://www.cnblogs.com/wangchaozhi/p/5140469.html). redis mast ...

  3. redis 非集群的主从配置及切换

    单纯的master-slave不能称之为集群,只能叫做读写分离.此案例只针对master为单点服务,且程序端写死master为可写,slave为只读.若master宕机则不可用,若主从未开启持久化,不 ...

  4. mac redis搭建集群

    1.下载redis客户端 2.修改redis.conf文件 port 6379 //端口 daemonize yes cluster-enabled yes //打开集群 cluster-config ...

  5. Redis搭建集群

  6. 搭建分布式 Redis Cluster 集群与 Redis 入门

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

  7. redis 一二事 - 搭建集群缓存服务器

    在如今并发的环境下,对大数据量的查询采用缓存是最好不过的了,本文使用redis搭建集群 (个人喜欢redis,对memcache不感冒) redis是3.0后增加的集群功能,非常强大 集群中应该至少有 ...

  8. 【redis】 redis 创建集群时,Waiting for the cluster to join.... 一直等待

    redis 搭建集群时,一直join.... ./redis-trib.rb  create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1: ...

  9. python连接redis哨兵集群

    一.redis集群模式有多种, 哨兵模式只是其中的一种实现方式, 其原理请自行谷歌或者百度 二.python 连接 redis 哨兵集群 1. 安装redis包 pip install redis 2 ...

随机推荐

  1. wireshark 调试 https/http2和grpc流量

    本文浏览器以 Chrom 为例 平常需要抓包的场景比较少,记录一下防止下次忘记配置 1. 解析 TLS 在本地创建用于保存 ssl logfile 的文件(文件可以存放到任意位置), 并添加到环境变量 ...

  2. postgresql分组后获取第一条数据

    -- 根据编号分组取第一条数据 select * from table t where t.no=(select max(no) from table t1 where t1.no=t.no) -- ...

  3. 利用C语言判定用户输入数据从而给出结果(利用判定用户体重范围)同求最优解!!!

    例子: 要求:医务工作者通过广泛的调查和统计分析,根据成人的身高与体重因素给出了按"体质指数"进行判断的方法,具体如下: 体质指数t=体重 w/(身高h)2(w的单位为kg,h的单 ...

  4. Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)

    selenium操作chrome浏览器需要有ChromeDriver驱动来协助.webdriver中关浏览器关闭有两个方法,一个叫quit,一个叫close. 1 /** 2 * Close the ...

  5. 从零学习SpringSecurity

    一.简介 SpringSecurity是一个功能强大且高度可定制的身份验证和访问控制框架,和spring项目整合更加方便. 二.核心功能 认证(Authentication):指的是验证某个用户能否访 ...

  6. python 列表指导式

    >>> a=[page for page in range(10)]>>> print (a)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>& ...

  7. bootstrap栅格布局-v客学院知识分享

    今天主要跟大家讲解下bootstrap的栅格布局,以及使用过程中应该注意的问题 首先我们要使用bootstrp的栅格布局就必须使用HTML正确的基本结构 如下图: 必须给要使用栅格布局的盒子定义cla ...

  8. FastDFS是使用c语言编写的开源高性能分布式文件系统

    FastDFS是什么 FastDFS是使用c语言编写的开源高性能分布式文件系统 是由淘宝开发平台部资深架构师余庆开发,FastDFS孵化平台板块 他对文件进行管理,功能包括文件存储,文件同步,文件访问 ...

  9. Python基础之读写xml总结

    参考文章:https://blog.csdn.net/weixin_42749767/article/details/82770563 先介绍xml.dom.minidom包,有一个读写的例子 rea ...

  10. 使用C#winform编写渗透测试工具--敏感目录扫描

    使用C#winform编写渗透测试工具--敏感目录扫描 由于之前在做渗透测试的时候,发现使用的工具较多,切换起来较麻烦,便萌生了开发一个包含各种渗透测试工具的小程序,包括敏感目录扫描.端口查询.子域名 ...