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 ...
随机推荐
- ESP32智能配网笔记
基于ESP-IDF4.1 #include <string.h> #include <stdlib.h> #include "freertos/FreeRTOS.h& ...
- IBM刀箱服务器的SW
刀箱交换机说明: 1.刀箱交换机可以看到的24个口都是ext端口,其中因为授权原因,只激活了前10个端口. 2.交换机配置中的inta端口为服务器直接连接的端口,inta1-inta14,这些都是对应 ...
- Linux中ftp服务器搭建
一.FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp ...
- GO系列-ini文件处理
gopkg.in/ini.v1 配置加载 创建一个空的配置 cfg := ini.Empty() 直接加载存在的配置文件,如果文件不存在就会报错 cfg, err := ini.Load(" ...
- YAOI Round #7 题解
前言 比赛链接: Div.1 : http://47.110.12.131:9016/contest/16 Div.2 : http://47.110.12.131:9016/contest/15 D ...
- STP概述简介及生成树算法
目录: STP概述 STP简介 生成树算法 选择根网桥 选择根端口 选择指定端口 BPDU(桥协议数据单元) STP利用BPDU选择根网桥 STP的收敛 VLAN与STP关系 MSTP多生成树协议华为 ...
- Git的安装和配置 -入门
Git的版本有很多种,适应各种windows,IOS, Linux平台的安装. 我用的是linux Centos7的版本: 1. 安装命令用Yum, 非常简单就可以安装完毕. yum install ...
- 【LeetCode】496.下一个更大元素I
496.下一个更大元素I 知识点:栈:HashMap: 题目描述 给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集. 请你找出 nums1 中每个元 ...
- java并发编程基础——线程池
线程池 由于启动一个线程要与操作系统交互,所以系统启动一个新的线程的成本是比较高的.在这种情况下,使用线程池可以很好的提升性能,特别是程序中涉及创建大量生命周期很短暂的线程时. 与数据库连接池类似,线 ...
- selenium3 + python - js&jquery操作处理
# 推荐学习:https://www.w3school.com.cn/js/index.asp## 下面以简书登录&注册定位元素为例"""js定位 id name ...