redis搭建集群和主从
说明
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 make
cd redis-6.0.6
# 编译安装
make && make install PREFIX=/usr/local/redis/redis-6.0.6_cluster/build
创建6个服务
cd /usr/local/redis/redis-cluster
mkdir 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搭建集群和主从的更多相关文章
- redis搭建集群并用TreeSoft管理
前言:redis作为一款高效的NOSQL数据库已经深入贯彻和落实到我们的日常开发代码中,作为缓存.时间控制.数据仓库.队列等使用方法层出不穷,简直是开写代码.居家旅行之必备良药.曾经,我们的项目都是单 ...
- redis sentinel 集群配置-主从切换
1.配置redis master,redis slave(配置具体操作见上文http://www.cnblogs.com/wangchaozhi/p/5140469.html). redis mast ...
- redis 非集群的主从配置及切换
单纯的master-slave不能称之为集群,只能叫做读写分离.此案例只针对master为单点服务,且程序端写死master为可写,slave为只读.若master宕机则不可用,若主从未开启持久化,不 ...
- mac redis搭建集群
1.下载redis客户端 2.修改redis.conf文件 port 6379 //端口 daemonize yes cluster-enabled yes //打开集群 cluster-config ...
- Redis搭建集群
- 搭建分布式 Redis Cluster 集群与 Redis 入门
目录 Redis 集群搭建 Redis 是啥 集群(Cluster) Redis Cluster 说明 Redis Cluster 节点 Redis Cluster 集群模式 不能保证一致性 创建和使 ...
- redis 一二事 - 搭建集群缓存服务器
在如今并发的环境下,对大数据量的查询采用缓存是最好不过的了,本文使用redis搭建集群 (个人喜欢redis,对memcache不感冒) redis是3.0后增加的集群功能,非常强大 集群中应该至少有 ...
- 【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: ...
- python连接redis哨兵集群
一.redis集群模式有多种, 哨兵模式只是其中的一种实现方式, 其原理请自行谷歌或者百度 二.python 连接 redis 哨兵集群 1. 安装redis包 pip install redis 2 ...
随机推荐
- pxe+kickstart部署多个版本的Linux操作系统(下)---实践篇
我们在企业运维环境中,难免会遇到使用多个Linux操作系统的情况,如果每天都需要安装不同版本的Linux系统的话,那么使用Kickstart只能安装一种版本的Linux系统的方法则显得有些捉襟 ...
- SpringBoot自动装配原理之Configuration以及@Bean注解的使用
Configuration以及Bean注解的使用 该知识点在Spring中应该学过,没有学过或者遗忘的的朋友需要预习或温习前置知识点.SpringBoot其实就是Spring的进一步简化,所以前置知识 ...
- Python单元测试框架unittest之生成测试报告(HTMLTestRunner)
前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...
- nodejs安装+vue安装
一.nodejs安装 电脑win7的,nodejs V12.16.2以前的版本支持win7 nodejs下载地址: http://mirrors.nju.edu.cn/nodejs/v12.15.0/ ...
- python -- 结构数据类型(列表、元组、集合、字典)
一.列表 列表表示一组有序的元素,这些元素可以是数字.字符串,也可以是另一个列表. # ----------------------------------------# 列表(list):一组有序的 ...
- 在windows中安装PHP MongoDB扩展
最近做的一个项目中涉及到,ThinkPHP框架,MongoDB数据库,在本地windows 7 64位系统下,xamppv3.2.2集成的php环境运行测试程序.在网上百度后,按说明配置成功,现将步骤 ...
- Geoserver通过ajax跨域访问服务数据的方法(含用户名密码认证的配置方式)
Goeserver数据有两种,一种需进行用户密码的权限认证,一种无须用户密码.对于网上跨域访问Geoserver数据的种种方法,对这2种数据并非通用. 笔者将Geoserver官方下载的Geoserv ...
- 规模化敏捷LeSS(二):LeSS*队实践指南
Scrum 能够帮助一个5-9人的小*队以迭代增量的方式开发产品,在每一迭代结束时,交付潜在的可交付的产品增量.正是由于其灵活性,Scrum 方法现已成为*队软件交付方法的首选,近期发布的15届敏捷状 ...
- 记一次系统崩溃事件【Mac版】
事件:Mac系统崩溃,导致电脑数据丢失,以及数据安全备份措施的不到位的教训! 解决措施: 1.开机后按:Command+R 按开机键 ,进入Mac 实用工具, 选择磁盘工具.由于没有备份直接抹掉磁盘. ...
- 深入刨析tomcat 之---第1篇,解决第1,2章bug 页面不显示内容Hello. Roses are red.
writedby 张艳涛, 第一个问题是不显示index.html网页 19年才开始学java的第二个月,就开始第一遍看这本书,我估计当初,做第一章的一个案例,自己写代码,和验证就得一天吧,当初就发现 ...