Redis主从同步+自动切换

本文详细介绍了如何在两台CentOS7服务器上配置Redis主从同步,包括安装依赖、源码编译、配置主从复制,以及使用哨兵(Sentinel)实现故障自动切换。在主节点故障时,Sentinel能够将从节点提升为新的主节点,确保服务不间断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一构建:

1.两台centos7服务器:

      192.168.1.100192.168.1.115

2. 安装必须的软件包:

yum install gcc gcc-c++ kernel-devel automake autoconf libtool make wget tcl vim ruby rubygems unzip git -y

3. 下载redis源码包并安装:

wget http://download.redis.io/releases/redis-3.2.3.tar.gz

tar -zxvf redis-3.2.3.tar.gz

cd redis-3.2.3

make && make install

4.将redis目录转移至/usr/loacl/redis下:

(1).创建redis目录:

cd /usr/local

mkdir -p redis/bin

mkdir -p redis/etc

(2) .将源码包下面的reids.conf 复制到新建的etc下,将源码包下面的src目录中的redis-server redis-cli  redis-check-aof redis-benchmark mkreleasehdr.sh 文件复制到新建的bin目录下:

  cd /usr/local/redis

  cp /root/redis-3.2.3/redis.conf etc/

  cd /root/redis-3.2.3/src/

  cp redis-server redis-cli redis-check-aof redis-benchmark mkreleasehdr.sh /usr/local/redis/bin/

5.配置redis主从复制:

(1) .在主机192.168.1.100(主)的配置:





(2).在主机192.168.1.115(从)上的配置:

至此,主从配置完成,进入/usr/local/redis启动两台实例:

       bin/redis-server etc/redis.conf  

此时的redis启动直接占据控制台,我们可以将其修改为后台启动,ctrl+c关闭redis,编辑etc目录下的redis.cnf文件将daemonize no改为daemonize yes,重新启动即可

使用命令查看主从复制状态:




至此,主从配置完成,进入/usr/local/redis启动两台实例:

       bin/redis-server etc/redis.conf  

此时的redis启动直接占据控制台,我们可以将其修改为后台启动,ctrl+c关闭redis,编辑etc目录下的redis.cnf文件将daemonize no改为daemonize yes,重新启动即可

使用命令查看主从复制状态:

显示

指定在执行故障转移时,最多可以有多少个Slave同时对新的Master进行同步。这个数字设置为1,虽然完成故障转移所需的时间会变长,但是可以保证每次只有1个Slave处于不能处理命令请求的状态。

状态为:192.168.1.100为master,192.168.1.115为slave

6. 使用哨兵(Sentinel)进行主从间的故障自动切换,我们在192.168.1.100上搭建sentinel(哨兵)

           cd /root/redis-3.2.3/

           cp sentinel.conf /usr/local/redis/etc/

           cd /usr/local/redis/etc/

           vim sentinel.conf

(1).路径:


(2).指定sentinel去监视一个名为mymaster的Master,Master的IP地址为192.168.1.100

(3).如果redis有登陆密码的话必须配置这项参数:


(4)连接192.168.1.100的redis的密码

(5).指定Sentinel判定Master断线的时间。(单位为毫秒,判定为主观下线SDOWN)


(6).如果在该时间(ms)内未能完成failover(即故障时master/slave自动切换

)操作,则认为该failover失败。

指定在执行故障转移时,最多可以有多少个Slave同时对新的Master进行同步。这个数字设置为1,虽然完成故障转移所需的时间会变长,但是可以保证每次只有1个Slave处于不能处理命令请求的状态。

sentinel parallel-syncs my mymaster 1

我们可以看到主为192.168.1.100,从为192.168.1.115,接下来验证故障切换功能:




当我们关闭主时,master自动变为192.168.1.115,我们重新启动192.168.1.115时,发现192.168.1.115已经变为slave服务器,至此哨兵模式的故障切换完成(可在主从上同时部署哨兵)。

附加:

   登陆redis的命令:

bin/redis-cli -h 192.168.1.100 -p 6379 -a pwd@123

bin/redis-cli -h 192.168.1.115 -p 6380 -a pwd@123

bin/redis-cli -h 192.168.1.100 -p 6379 -a pwd@123 info replication

 

bin/redis-cli -h 192.168.1.115 -p 6380 -a pwd@123 info replication





### Redis 主从复制与哨兵模式配置教程 #### 一、Redis 安装 为了确保后续操作顺利,在开始之前需完成 Redis 的安装。 1. **上传、解压、重命名** 将下载好的 Redis 文件包上传至服务器并解压缩,随后根据需求对其进行重命名以便于管理[^1]。 2. **安装 GCC 环境** 编译 Redis 源码前要确认已安装好 GCC 开发工具链,这一步对于编译过程至关重要。 3. **编译源码** 使用 `make` 命令来编译 Redis 源代码,这是构建软件的标准流程之一。 4. **进行安装** 执行 `make install` 来正式安装 Redis 到指定路径下,使服务能够正常运行。 5. **修改配置文件 redis.conf** 对默认配置做出适当调整以适应实际应用场景的需求,比如设置绑定地址、端口号等参数。 ```bash # 修改后的部分配置项示例 bind 0.0.0.0 port 6379 daemonize yes logfile "/var/log/redis_6379.log" dir /data/redis/ ``` #### 二、Redis 主从复制搭建 主从架构可以提高系统的读取性能和数据冗余度。具体做法如下: 1. 创建用于存放不同实例配置及相关日志的独立目录结构,便于管理和维护各个节点之间的关系。 2. 在每台机器上分别启动多个 Redis 实例作为 Master 和 Slave,并通过编辑各自的 `redis.conf` 文件指明角色身份及其关联信息(如 masterauth 密码认证)。 3. 设置 Slave 节点指向对应的 Master 地址和服务端口,从而建立连接实现同步更新操作。 ```conf slaveof <master-ip> <master-port> ``` 当客户端向 Master 发起写请求时,Master 会记录这些变更并通过命令传播机制告知所有与其相连的 Slaves 进行相同的操作处理,以此保持两者间的数据一致性[^3]。 #### 三、配置 Redis 的哨兵模式 哨兵系统负责监控整个集群状态变化情况,自动检测故障发生位置并执行必要的恢复措施,保障业务连续性和稳定性。 1. 同样先准备好专门存储 Sentinel 配置文档和其他资源材料的空间环境。 2. 接下来依据官方模板编写或手动输入相应选项到 `sentinel.conf` 中定义监视目标对象以及通知方式等内容。 ```conf # sentinel.conf 示例片段 sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 180000 ``` 上述设定意味着至少要有两个投票同意才能判定某主机不可达进而触发切换动作;而超时时间则决定了等待响应的最大时限长度[^2]。 3. 最后依次开启各处部署完毕的服务进程即可让整套方案投入实战测试阶段,验证其有效性及可靠性水平如何。 --- 一旦某个 Master 出现异常停止工作的情形之下,Sentinel 组件便会迅速介入评估当前形势并向其他存活成员发起询问收集意见达成共识之后挑选出新的领导者继续承担对外提供访问接口的任务职能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值