Redis集群搭建

一、主从关系

1、介绍

	主从关系:服务器分为主服务器和从服务器,主服务器可读可写,主要进行写操作
,从服务器只能进行读操作。(在实际业务中,更多的时读操作,所以从服务器比较
多)。主节点的数据会自动复制到各个从服务器

在这里插入图片描述

2、操作

我们模拟一个主服务器,两个从服务器的模式:
1、在redis的安装目录下创建了一个目录 master-slave
2、 把redis配置文件复制到master-slave
		redis7001.conf(主)    redis7002.conf(从)   redis7003.conf(从)
3、分别修改上面三个文件的端口号以及rdb持久化文件的名称,有标值性, 并aof关闭
4、启动redis时指定上面的三个配置文件,开启三个redis服务
		redis-server redis7001.conf
		redis-server redis7002.conf
		redis-server redis7003.conf

在这里插入图片描述

5、在图形化软件中开启三个窗口,比较容易观察
	使用:
		 info  replication 
	命令来查看三个服务器的状态,当服务器刚打开时,role都为master,都是主服务,

在这里插入图片描述

	现在要将7002,7003变成从服务,分别在7002,7003输入命令:
		slaveof  127.0.0.1 7001,
	现在已经将7002,7003挂载上了7001,再次使用:
		info replication
	来查看三个服务器的状态:

在这里插入图片描述

验证:在主节点可以写入数据,在字节点不能写入数据,可以读到主节点写入的信息

3、扩展

1、当主节点挂了,子节点并不会自动变成主节点,只会陷入等待状态。按说主节点挂了,要有个服务器自动变成主节点,这就是下边的哨兵模式
2、如果有新的从节点加入了集群,会自动获取加入之前集群已经存在的数据
3、可以使用slaveof no one,将子节点变成主节点

二、哨兵模式

在主从模式中,当master服务器挂掉服务后,子服务器就没有主服务器。而哨兵模式就可以在主服务器挂掉后,自动选择一个从服务器变做主服务器,不影响整个服务的使用。

在这里插入图片描述

使用方式

编辑sentinel.conf文件:
		vi sentinel.conf
更改文件中:
	sentinel monitor mymaster 127.0.0.1 6379 2
			解释:监控主服务器
					127.0.0.1:主服务器的地址
					6379:主服务器的端口号
					2:表示有多少个哨兵选择redis从服务器后,这个从服务器可以变成主服务器
启动哨兵:
	redis-sentinel sentinel.conf

实例:

启动三个服务,搭个主从模式:

在这里插入图片描述启动哨兵:
在这里插入图片描述

这里显示mster是7003,因为我已经停过一次主服务器了,哨兵选择了7003作为主服务

再次停掉7003这个服务,显示如下:
在这里插入图片描述

哨兵又选择了7002作为主服务,都是哨兵操作的。

三、去中心化集群

哨兵的缺点:
	1、没有解决单节点的问题:当写操作过多时,单主节点无法满足要求
	2、持久化文件始终在一个服务器上:如果服务器崩溃,数据就丢失了

在这里插入图片描述

1、简介

	在去中心化模式中,没有中心,又都是中心,比如上图中,三个主节点,redis会给
三个主节点分配槽点,槽点一共有16384个,会平均分配给每个主节点。当我们输入数
据时,redis会计算存入的数据的key适合存入到那个节点的范围,就会自动存到对应的
节点。

2、Redis分配节点和数据的解释

	Redis集群没有使用传统的一致性哈希来分配数据,而是采用的另外一种叫做哈希槽(hash slot)的方式进行分配的。redis cluster默认分配了16384个slot。集群中有多少个
主节点,就将16384个槽点分配给它们。当我们set一个key时,会用CRC16算法来取模得到所属的slot,然后将这个key分到哈希槽区间的节点上,具体算法:CRC16(key)%16384.

3、实例

(1)、集群配置

搭建集群,需要先配置redis.conf文件,主从节点都需要配置。我们搭建一个三主三从的集群,端口号分别为:8001,8002,8003,8004,8005,8006

在这里插入图片描述

具体配置:6个配置文件,只需将端口号改成对应的

#配置端口号
port  8001    
#允许所有的ip访问redis,这是reids.6的配置
bind * -::*
#开启redis后台运行
daemonize yes
#开启aof持久化
appendonly yes
#开启集群
cluster-enabled yes
#集群的配置文件,该文件自动生成
cluster-config-file nodes-8001.conf
#集群的超时时间,单位毫秒
cluster-node-timeout 5000

(2)、启动集群

在这里插入图片描述

(3)、为集群分配槽点

redis-cli --cluster create --cluster-replicas 1 ip:8001 ip :8002 ip:8003 ip:8004 ip:8005 ip:8006

解释:

(1)cluster-replicas:每个主节点跟随的从节点的个数
(2)ip不要写127.0.0.1,要写实际ip,不然会出现集群连不上的情况
(3)前三个ip是主节点,后边跟的子节点是谁是随机分的
(4)必须宝成aof持久化开启,redis没有初始数据

在这里插入图片描述文件的变化:
在这里插入图片描述产生了appondonly文件,nodes文件

(4)、访问

在这里插入图片描述

任连其中一个主节点都可以

(5)、扩展

如果集群中有一个主节点挂了,集群会自动选择一个它的从节点中选一个来做主节点。如果有一支主从节点全挂了,那整个集群就全挂了。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值