首页 > 数据库 >Redis主从、哨兵和集群环境搭建

Redis主从、哨兵和集群环境搭建

时间:2023-08-12 20:01:41浏览次数:53  
标签:Redis redis 哨兵 7001 usr conf sentinel local 主从

一、Redis单机安装

(1)安装依赖的C语言

yum install -y gcc-c++ automake autoconf libtool make tcl

(2)上传安装包并解压

cd /usr/local/tmp

tar zxf redis-5.0.5.tar.gz

(3)编译并安装

cd /usr/local/tmp/redis-5.0.5/

# 编译
make

# 安装
make install PREFIX=/usr/local/redis

(4)开启守护进程

复制 /usr/local/tmp/redis-5.0.5/redis.conf 配置文件

cp redis.conf /usr/local/redis/bin/

修改配置文件

cd /usr/local/redis/bin/

vim redis.conf

把 daemonize 的值由 no 修改为 yes

Redis主从、哨兵和集群环境搭建_redis

(5)修改外部访问 在redis5中需要修改配置文件redis.conf允许外部访问。需要修改两处。

注释掉 bind 127.0.0.1
把 protected-mode 的值由 yes 改成 no

(6)启动并测试

# 启动 redis
./redis-server redis.conf

# 重启redis
./redis-cli shutdown
./redis-server redis.conf

二、Redis主从搭建

我们可以继续在单机Redis基础上安装,先关闭Redis单机版

./redis-cli shutdown

(1)新建目录

mkdir /usr/local/replica

(2)复制目录 把之前安装的redis单机版中bin目录复制三份,分别叫做:master、slave1、slave2

cp -r /usr/local/redis/bin /usr/local/replica/master
cp -r /usr/local/redis/bin /usr/local/replica/slave1
cp -r /usr/local/redis/bin /usr/local/replica/slave2

(3)修改从节点配置文件 修改从节点的 redis.conf,指定主节点ip和端口;修改从节点自身端口号防止和其他redis冲突

  • 从节点slave1
vim /usr/local/replica/slave1/redis.conf

# 指定主节点ip和端口
replicaof 192.168.93.10 6379

# 修改自己的端口
port 6380
  • 从节点slave2
vim /usr/local/replica/slave2/redis.conf

# 指定主节点ip和端口
replicaof 192.168.93.10 6379

# 修改自己的端口
port 6381

(4)启动Redis实例

cd /usr/local/replica

vim startup.sh

在启动脚本中添加下面内容

cd /usr/local/replica/master/
./redis-server redis.conf
cd /usr/local/replica/slave1
./redis-server redis.conf
cd /usr/local/replica/slave2
./redis-server redis.conf

给脚本执行权限

chmod a+x startup.sh

执行脚本

./startup.sh

(5)查看启动状态

ps aux | grep redis

Redis主从、哨兵和集群环境搭建_配置文件_02

(6)测试

cd /usr/local/replica/master/
./redis-cli

Redis主从、哨兵和集群环境搭建_Redis_03

三、Redis 哨兵搭建

  Redis主从默认是只有主具备写的能力,而从只能读。如果主宕机,整个节点不具备写能力。如果此时让一个从变成主,整个节点就可以继续工作。当之前的主恢复过来以后,也可以当做这个节点的从即可。

  Redis 的哨兵就是帮助监控整个节点的,当节点主宕机等情况下,帮助重新选取主。Redis 中哨兵支持单哨兵和多哨兵。单哨兵是只要这个哨兵发现 master 宕机了,就直接选取另一个 master。而多哨兵是根据我们的设定,达到一定数量哨兵认为 master 宕机后才会进行重新选取主。本篇笔记以多哨兵为例演示。

  当我们杀掉主节点,整个节点无法写数据,从节点身份不会变化,主节点信息不变。

Redis主从、哨兵和集群环境搭建_配置文件_04

  我们还是在 Redis 单机版的基础上进行搭建,搭建步骤如下:

(1)新建目录

mkdir /usr/local/sentinel

(2)复制 Redis

cp -r /usr/local/redis/bin/* /usr/local/sentinel

(3)复制配置文件 从 Redis 解压目录中复制 sentinel 配置文件

cd /usr/local/tmp/redis-5.0.5/
cp sentinel.conf /usr/local/sentinel/

(4)修改配置文件

cd /usr/local/sentinel
vim sentinel.conf

port 26379
daemonize yes
logfile “/usr/local/sentinel/26379.log”
sentinel monitor mymaster 192.168.93.10 6379 2

对这行配置进行解析一下, sentinel monitor mymaster 192.168.93.10 6379 2,它的 意思是 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 127.0.0.1,端口号为 6379 ,而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意,只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行。

复制 sentinel.conf,命名为 sentinel-26380.conf

cp sentinel.conf sentinel-26380.conf
vim sentinel-26380.conf

port 26380
daemonize yes
logfile “/usr/local/sentinel/26380.log”
sentinel monitor mymaster 192.168.93.10 6379 2

复制 sentinel.conf,命名为 sentinel-26381.conf

cp sentinel.conf sentinel-26381.conf
vim sentinel-26381.conf

port 26381
daemonize yes
logfile “/usr/local/sentinel/26381.log”
sentinel monitor mymaster 192.168.93.10 6379 2

(5)启动主从 如果已经启动状态,忽略下面命令。如果启动部分,全部kill后重新启动,使用kill杀死全部 Redis 实例。

ps aux|grep redis
kill -9 进程号

启动主从

cd /usr/local/replica
./startup.sh

(6)启动三个哨兵

cd /usr/local/sentinel

./redis-sentinel sentinel.conf
./redis-sentinel sentinel-26380.conf
./redis-sentinel sentinel-26381.conf

四、集群环境搭建

当集群中等于或者超过一半的节点不可用时,整个集群不可用。为了搭建稳定集群,集群节点数最好都采用奇数节点。

(1)复制 Redis 配置文件

从 /usr/local/redis/bin 下把 redis.conf 复制到当前目录中,命名为 redis-7001.conf

cp /usr/local/redis/bin/redis.conf /usr/local/redis/bin/redis-7001.conf

(2)修改 redis-7001.conf

cd /usr/local/redis/bin
vim redis-7001.conf

需要修改如下

port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000
# appendonly yes 如果开启aof默认,需要修改为yes。如果使用rdb,此处不需要修改
daemonize yes
protected-mode no
pidfile /var/run/redis_7001.pid

(3)复制配置文件,并修改内容

把 redis-7001.conf 复制5份,分别叫做 redis-7002.conf、redis-7003.conf、redis-7004.conf、redis-7005.conf、redis-7006.conf

cp redis-7001.conf redis-7002.conf
cp redis-7001.conf redis-7003.conf
cp redis-7001.conf redis-7004.conf
cp redis-7001.conf redis-7005.conf
cp redis-7001.conf redis-7006.conf

新复制的5个配置文件都需要需改三处,例如 nodes-7002.conf 中需要把所有 7001都换成7002。其他配置文件同理修改即可

port 7002
cluster-config-file nodes-7002.conf
pidfile /var/run/redis_7002.pid

(4) 启动6个 Redis

可以使用 redis-server 结合6个配置文件进行启动6个实例,执行之前一定要先删除dump.rdb

rm -f dump.rdb
vim startup.sh

./redis-server redis-7001.conf
./redis-server redis-7002.conf
./redis-server redis-7003.conf
./redis-server redis-7004.conf
./redis-server redis-7005.conf
./redis-server redis-7006.conf


chmod a+x startup.sh
./startup.sh

(5)查看启动状态

Redis主从、哨兵和集群环境搭建_Redis_05

(6)建立集群

在 Redis3 的时候需要借助 ruby 脚本实现集群;在 Redis5 中可以使用自带的redis-cli实现集群功能,比Redis3 更加方便。建议配置静态ip,ip改变集群失效

./redis-cli --cluster create 192.168.93.10:7001 192.168.93.10:7002 192.168.93.10:7003 192.168.93.10:7004 192.168.93.10:7005 192.168.93.10:7006 --cluster-replicas 1

(7) 测试

集群测试时,千万不要忘记最后一个-c参数。

./redis-cli -p 7001 -c

set age 18

(8)编写关闭脚本

vim stop.sh
chmod a+x stop.sh

./redis-cli -p 7001 shutdown
./redis-cli -p 7002 shutdown
./redis-cli -p 7003 shutdown
./redis-cli -p 7004 shutdown
./redis-cli -p 7005 shutdown
./redis-cli -p 7006 shutdown

标签:Redis,redis,哨兵,7001,usr,conf,sentinel,local,主从
From: https://blog.51cto.com/u_16205813/7061090

相关文章

  • Redis:高效数据存储与缓存的魔法
    在现代的应用开发中,数据的高效存储和快速访问至关重要。而Redis(RemoteDictionaryServer)正是一款闪电般快速的开源内存数据库,被广泛用于缓存、数据存储、实时分析和排行榜等场景。本文将探讨Redis的基本特性、常见应用场景以及一些最佳实践。1.Redis的核心特性内存存储:Redis将数......
  • redis
    RedisRediswindows安装下载地址:https://github.com/MicrosoftArchive/redis/releases执行redis-cli.exe程序,执行命令setname“my”,返回ok表示成功   Cmd执行上面操作D:\software\Redis>redis-cli.exe-h127.0.0.1-p6379停止服务redis-server.exe--service-sto......
  • Redis启用认证
    要在Redis中启用认证,您需要在Redis配置文件中设置requirepass指令。以下是步骤:找到Redis配置文件。这通常是redis.conf,可能位于/etc/redis/或/etc/目录中,或者在您安装Redis的目录中。打开配置文件并找到requirepass指令。如果没有找到,您可以在文件的任何位置添加它。设置requi......
  • 【后端面经-数据库】Redis详解——Redis基本概念和特点
    目录1.Redis基本概念2.Redis特点2.1优点2.2缺点3.Redis的应用场景面试模拟参考资料声明:Redis的相关知识是面试的一大热门知识点,同时也是一个庞大的体系,所涉及的知识点非常多,如果用一篇文章罗列,往往会陷入知识海洋中无法感知其全貌,因此,这段时间我会试着拆分Redis的相关章节,辅......
  • 【后端面经-数据库】Redis详解——Redis基本概念和特点
    (【后端面经-数据库】Redis详解——Redis基本概念和特点)声明:Redis的相关知识是面试的一大热门知识点,同时也是一个庞大的体系,所涉及的知识点非常多,如果用一篇文章罗列,往往会陷入知识海洋中无法感知其全貌,因此,这段时间我会试着拆分Redis的相关章节,辅以思维导图的形式介绍Redis的相......
  • redis客户端
    QuickRedis连接查询RedisInsight参考连接执行命令RedisClient下载地址解压双击exe文件右键Redisservers->Addserver不用填写密码,如果填写密码会报错查看AnotherRedisDeskTopManage下载地址连接查看......
  • redis 集群
     Redis集群集群解决的问题代理主机和无中心化集群Redis集群的特点Redis集群环境搭建slots(插槽)在集群中录入值查询集群中的值故障恢复Redis集群的优缺点集群解决的问题服务器的容量不足或者进行并发写操作的用户过多等情况下可以使用多台Redis集群的方式缓解压力。注:(高并发的写......
  • Redis系列18:过期数据的删除策略
    Redis系列1:深刻理解高性能Redis的本质Redis系列2:数据持久化提高可用性Redis系列3:高可用之主从架构Redis系列4:高可用之Sentinel(哨兵模式)Redis系列5:深入分析Cluster集群模式追求性能极致:Redis6.0的多线程模型追求性能极致:客户端缓存带来的革命Redis系列8:Bitmap实现亿万级......
  • SSDB Redis替代品
    SSDB是一个快速的用来存储十亿级别列表数据的开源NoSQL数据库。项目地址:https://github.com/ideawu/ssdbhttp://ssdb.io/特性替代 Redis 数据库,Redis的100倍容量LevelDB网络支持,使用C/C++开发RedisAPI兼容,支持Redis客户端适合存储集合数据,如list,hash,zse......
  • Redis/SSDB+Twemproxy安装与使用
    目前对于互联网公司不使用Redis的很少,Redis不仅仅可以作为key-value缓存,而且提供了丰富的数据结果如set、list、map等,可以实现很多复杂的功能;但是Redis本身主要用作内存缓存,不适合做持久化存储,因此目前有如SSDB、ARDB等,还有如京东的JIMDB,它们都支持Redis协议,可以支持Redis客户端......