Redis主从哨兵模式(sentinel)部署步骤

本文详细介绍了如何部署Redis的主从哨兵模式,包括Redis的安装、主从集群配置、哨兵集群的部署与配置。通过设置主从关系、启动实例并检查集群状态,确保高可用性。同时探讨了主从模式、哨兵模式的优缺点,建议在大多数场景下,哨兵模式是合理的选择。
摘要由CSDN通过智能技术生成

1. 安装Redis及部署Master-Slave集群

1.1 redis安装

redis的安装及配置,本文安装5.0版本:

cd /usr/local
mkdir redis
cd redis
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar -zxvf redis-5.0.3.tar.gz
cd redis-5.0.3
make

建议把redis-server redis-cli redis-trib.rb redis-sentinel拷贝至/usr/local/bin目录下以便后续使用方便

cd src
cp redis-server redis-cli redis-trib.rb redis-sentinel /usr/local/bin

可以修改redis.conf文件的daemonize参数为yes,默认端口6379,可以自行选择是否修改,指定配置文件启动:

redis-server redis.conf

如果单例部署启动以上步骤即已完成。

以下以创建一主二从的集群为例说明。

1.2 集群部署与配置

先创建sentinel目录,在该目录下创建8000,8001,8002三个以端口号命名的目录和28000,28001,28002三个已哨兵端口命名的目录。

mkdir sentinel
cd sentinel
mkdir 8000 8001 8002 28000 28001 28002 

在对应端口号目录中创建redis.conf的文件,配置文件中的端口号port参数改为对应目录的端口号。配置如下:

# 守护进程模式
daemonize yes

# pid file
pidfile /var/run/redis.pid

# 监听端口
port 8000

# TCP接收队列长度,受/proc/sys/net/core/somaxconn和tcp_max_syn_backlog这两个内核参数的影响
tcp-backlog 511

# 一个客户端空闲多少秒后关闭连接(0代表禁用,永不关闭)
timeout 0

# 如果非零,则设置SO_KEEPALIVE选项来向空闲连接的客户端发送ACK
tcp-keepalive 60

# 指定服务器调试等级
# 可能值:
# debug (大量信息,对开发/测试有用)
# verbose (很多精简的有用信息,但是不像debug等级那么多)
# notice (适量的信息,基本上是你生产环境中需要的)
# warning (只有很重要/严重的信息会记录下来)
loglevel notice

# 指明日志文件名
logfile "./redis8000.log"

# 设置数据库个数
databases 16

# 会在指定秒数和数据变化次数之后把数据库写到磁盘上
# 900秒(15分钟)之后,且至少1次变更
# 300秒(5分钟)之后,且至少10次变更
# 60秒之后,且至少10000次变更
save 900 1
save 300 10
save 60 10000


# 默认如果开启RDB快照(至少一条save指令)并且最新的后台保存失败,Redis将会停止接受写操作
# 这将使用户知道数据没有正确的持久化到硬盘,否则可能没人注意到并且造成一些灾难
stop-writes-on-bgsave-error yes

# 当导出到 .rdb 数据库时是否用LZF压缩字符串对象
rdbcompression yes

# 版本5的RDB有一个CRC64算法的校验和放在了文件的最后。这将使文件格式更加可靠。
rdbchecksum yes

# 持久化数据库的文件名
dbfilename dump.rdb

# 工作目录
dir ./

# 当master服务设置了密码保护时,slave服务连接master的密码
masterauth sa123456.

# 当一个slave失去和master的连接,或者同步正在进行中,slave的行为可以有两种:
#
# 1) 如果 slave-serve-stale-data 设置为 "yes" (默认值),slave会继续响应客户端请求,
# 可能是正常数据,或者是过时了的数据,也可能是还没获得值的空数据。
# 2) 如果 slave-serve-stale-data 设置为 "no",slave会回复"正在从master同步
# (SYNC with master in progress)"来处理各种请求,除了 INFO 和 SLAVEOF 命令。
slave-serve-stale-data yes

# 你可以配置salve实例是否接受写操作。可写的slave实例可能对存储临时数据比较有用(因为写入salve
# 的数据在同maste
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值