详细精讲redis主从+哨兵以及redis-cluster两种模式部署方案(最详细)

redis官方目前提供了两种部署方案:
1.主从+哨兵
主从模式是为了高可用,采用一主(master)多从(slave)的部署方案,主写从读,实现读写分离
哨兵是为了保证服务不宕机,帮助选举,所有的哨兵全部监听主机,只要主机宕机,哨兵就会进行选举,选出新的主机出来。

2.redis-cluster
redis-cluster主要是为了提高并发量而产生的部署方案,采用多主多从(也可一主多从)的方式,提高写的效率,主机宕机,自动选举。无需引入哨兵。

3.redis安装(大致说一下就行,我们的重点不在这里)
redis6.2.1版本+centos7

3.1 下载redis压缩包
在这里插入图片描述
3.2 然后解压
在这里插入图片描述
3.3 解压完成进入目录
在这里插入图片描述
3.4 安装gcc
在这里插入图片描述
3.5 CentOS7默认安装的是4.8.5,而redis6.2.1只支持5.3以上版本,这里将gcc升级到9

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

3.6 gcc终于升级好了,这时千万别忘记要进行版本的切换,升级了新版本肯定是使用新版本喽

scl enable devtoolset-9 bash

切换完成之后重新连接服务器生效,查看gcc版本

gcc -v
在这里插入图片描述
3.7 编译

在这里插入图片描述

3.8 安装
make install PREFIX=/usr/local/redis
在这里插入图片描述
这样做的目的是在/usr/local/redis下面生成bin目录,当然,也可以直接make install,这样安装就在当前文件夹下面了

3.9 进入到新创建的文件夹下面,并把原文件夹下面的redis.conf文件拷贝过来
在这里插入图片描述
3.10 在/usr/local/redis/bin下面执行命令 ./redis-server
ch

出现上图就说明安装好了

需要修改的配置:
systemctl stop firewalld.service
以下为redis.conf文件中的参数:
bind 10.1.3.85(这里需要改成自己虚拟机的ip即可)
protected-mode no --改为no,否则只有本机可以连接
daemonize yes --打开后台启动,上面我们安装redis是前台启动

redis的安装就到这里了,我们进入主题环节。

4.主从+哨兵搭建

4.1 准备了三台虚拟机,按照上面的方式安装redis
在这里插入图片描述
我们以10.1.3.85为master,10.1.3.84和10.1.3.83为slave进行配置

在这里插入图片描述
除了redis.conf,再将sentinel.conf文件也拷贝过来

然后修改从机的redis.conf的配置参数,两个从机都要增加这个配置,表明是10.1.3.85的slave在这里插入图片描述
4.2 分别启动三个redis
在这里插入图片描述
4.3 任意连接一个redis服务
在这里插入图片描述
进入10.1.3.85查看
在这里插入图片描述
在这里插入图片描述
从节点是无法进行写的操作的,只能读,主节点写,这样就实现了读写分离

到这里我们的集群就搭建完毕了,但是,如果我们的主节点宕机了,现在是无法进行选举的,因此我们需要引入哨兵,帮我们选举,所有的哨兵只需要监测主节点就可以了,只要主节点宕机了,哨兵就会在从节点中选举一个作为新的主节点

4.4 哨兵配置(哨兵需要和服务器数量一致,我们服务器数量为3,因此哨兵为3个)
编辑sentinel.conf文件,三个都必须修改,全部加入以下配置,表明在监测主节点,2表示有两个哨兵主观认为主节点宕机了,则会开始新的选举,建议该数字设置的区间为 1~集群机器数量-1 ,以我们为例,我们设置的区间为1-2,不要设置为3,因为我们的哨兵是和redis服务在同一台虚拟机上,万一由于内存不足,导致redis宕机,则哨兵也会宕机(内存不足),此时,是永远不可能3个哨兵去确认的。

在这里插入图片描述
在这里插入图片描述

4.5 启动哨兵

在这里插入图片描述
4.6 演示将主机(10.1.3.85)断掉,进行选举
在这里插入图片描述
在这里插入图片描述
我们的10.1.3.83成为了新的master节点

4.7 重启10.1.3.85
在这里插入图片描述
重启后的10.1.3.85成为了slave

4.8 查看配置文件
在这里插入图片描述
在这里插入图片描述

我们这两处地方(redis.conf和sentinel.conf)最开始写的是10.1.3.85,现在变成了新的主机ip,其他两个服务的配置文件也被修改了,有次说明是哨兵在选举完成之后,将两个配置文件的两个信息进行了修改

5.redis-cluster搭建
5.1 在/usr/local下面创建redis-cluster目录,和我们上面创建的redis目录平级
在这里插入图片描述
5.2 进入redis/bin目录下,打开redis.conf进行修改参数

port 7001 --端口号
cluster-enabled yes --打开集群模式
cluster-config-file /usr/local/redis-cluster/redis01/nodes-7001.conf --集群配置文件
cluster-node-timeout 15000 --超时时间
pidfile /var/run/redis_7001.pid
dir /var/redis/7001
logfile /var/log/redis/7001.log

5.3 在redis-cluster下面创建6个文件夹
在这里插入图片描述
并将/usr/local/redis/bin下面的文件全部分别拷贝到以上文件夹下面,相当于复制6份

5.4 依次进入redis02~06文件夹修改redis.conf文件参数,
以上5.2的配置参数里面包含7001的全部改为每个文件夹的后缀(7002~7006),这样我们的端口号从redis01-redis06依次为7001-7006

port 7001-7006 --端口号
cluster-enabled yes --打开集群模式
cluster-config-file /usr/local/redis-cluster/redis01/nodes-7001-7006.conf --集群配置文件,很重要,若不修改,则无法启动集群
cluster-node-timeout 15000 --超时时间
daemonize yes --打开后台启动,上面我们安装redis是前台启动
pidfile /var/run/redis_7001-7006.pid
dir /var/redis/7001-7006
logfile /var/log/redis/7001-7006.log
bind 10.1.3.85(这里需要改成自己虚拟机的ip即可)

5.5 启动redis,依次执行
在这里插入图片描述
查看启动结果
在这里插入图片描述
以上说明redis启动了

5.6 创建集群

在这里插入图片描述
后面的 relicas 1 表明有一个主机(maste)有一台备用机(slave),我们一共起了6个服务,则是3主3备

在这里插入图片描述
输入yes即可
在这里插入图片描述
这就成功了

5.7 我们连接一台服务查看一下集群的详情

在这里插入图片描述
可以看到,有3主3备
以上我们的集群就搭建成功了

5.8 演示一下7001宕机,7001的从机7005则会被选举为主机
在这里插入图片描述
7001进程已经被杀掉了

在这里插入图片描述
7001已经无法连接了,我们连接7002
在这里插入图片描述
7005已经成为主节点了

我们在重新启动7001,看看效果

在这里插入图片描述
7005变成从节点了

在这里插入图片描述
以上集群就搭建成功了,下面是集群的扩容

5.9 我们在使用中可能会出现资源不足,需要扩容的情况,我们加入一主一备两台机器,端口号为7007和7008,配置参数参考5.2,然后启动7007和7008服务

在这里插入图片描述

5.10 7007和7008服务加入集群
在这里插入图片描述

红色框中的为当前要加入的节点信息,绿色框为当前节点中已经存在的任意一个节点的信息

在这里插入图片描述
可以看到7007已经加入的集群,下来就是7008作为7007的从节点加入集群

在这里插入图片描述
执行以上命令,红色框中的为当前要加入的节点信息,绿色框为当前节点中已经存在的任意一个节点的信息,蓝色为主节点(7007)的id,id可以使用cluster nodes查看

在这里插入图片描述
7008已经作为7007的从节点加入了集群,接下来就是给7007分配卡槽,现在的卡槽被7002,7005,7003三个服务占用,每个占了5461个,需要给7007分配,分配的数量就是16384/4=4096,相当于4个主节点,每个占用4096个卡槽

在这里插入图片描述
需要移动多少个卡槽,我们填入4096在这里插入图片描述
ID :表明你需要把卡槽移动到哪个节点,因此填入的是我们7007的节点,下面选择all,表明现在已经有卡槽的主节点平均分配一些卡槽出来
在这里插入图片描述
以上表示在移动,然后完成
在这里插入图片描述
可以看到卡槽已经移动成功了

5.11 我们在使用中可能会出现资源溢出的情况,需要将多余的资源释放掉,我们假设7007要被释放
在这里插入图片描述
第一个框表示在集群中的任一一个服务,
cluster-from 表明是我们7007的id,即要释放节点的服务
cluster-to 表明释放出来的卡槽接收的节点
cluster-slots 释放的卡槽数
在这里插入图片描述
完成
完成,查看信息
在这里插入图片描述
7007的卡槽已经释放出来了

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis主从+Keepalived是一种常见的Redis高可用方案。它的基本原理是通过使用Keepalived来实现Redis主从切换。具体步骤如下: 1. 首先,需要安装和配置Keepalived。可以按照以下步骤进行操作: - 下载并解压Keepalived的源代码。 - 进入解压后的目录,并执行以下命令进行编译和安装: ``` ./configure --prefix=/usr/local/keepalived/ make make install ``` - 拷贝所需的文件到相应的目录,例如: ``` cp /usr/local/src/keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/init.d/keepalived cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ mkdir -p /etc/keepalived/ cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf ``` - 修改keepalived.conf文件,根据实际情况配置虚拟IP(VIP)和监控脚本等参数。 2. 然后,需要配置Redis主从复制。可以按照以下步骤进行操作: - 在Redis的主节点上,修改redis.conf文件,将`slaveof`参数设置为空,即不指定从节点。 - 在Redis的从节点上,修改redis.conf文件,将`slaveof`参数设置为主节点的IP和端口,例如:`slaveof <master_ip> <master_port>`。 3. 最后,启动Keepalived和Redis服务。 - 在Master节点上,启动Keepalived服务。 - 在Master和Slave节点上,分别启动Redis服务。 这样,当Redis的Master节点发生故障时,Keepalived会检测到故障并自动切换到Slave节点,确保Redis服务的高可用性。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [redis高可用:keepalived+redis主从部署](https://blog.csdn.net/liuguanghui1988/article/details/77098143)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Keepalived+redis主从](https://blog.csdn.net/qq_37668945/article/details/88618390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值