热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

CentOS系统搭建Redis集群(1主2从3哨兵)

这里我们采用的集群整体架构就是主从结构+哨兵(sentinel),实现容灾的自动切换,如下图所示:一个主节点(master)可拥有多个从节点(slave),从节点实现对主节点的复制

这里我们采用的集群整体架构就是主从结构+哨兵(sentinel),实现容灾的自动切换,如下图所示:

在这里插入图片描述

一个主节点(master)可拥有多个从节点(slave),从节点实现对主节点的复制,保证数据同步。

而哨兵(sentinel)则对各节点进行监控,主要包括主节点存活检测、主从运行情况检测等,一旦主节点宕机,哨兵可自动进行故障转移 (failover)、主从切换。

接下来就开始搭建这样一个集群,首先是主从结构,然后是哨兵模式

接下来搭建 Redis 1主2从集群


Redis 集群搭建

配置如下

主机配置

bind:0.0.0.0
port:6379
protected-mode:no
daemonize:yes
logfile:./redis.log

从机配置

bind:0.0.0.0
port:6380
protected-mode:no
daemonize:yes
logfile:./redis.log
replicaof 127.0.0.1 6379


  • bind:0.0.0.0

    Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问。如果想指定限制访问,可设置对应的 ip。



  • port:6379

    监听端口默认为6379,想改其他也行



  • protected-mode:no

    关闭保护模式,可以外部访问



  • daemonize:yes

    设置为后台启动。



  • logfile:./redis.log

    redis 日志文件,生成后在 bin 目录下可找到。



  • replicaof 127.0.0.1 6379

    指定当本机为 slave 服务时,设置 master 服务的IP地址及端口,在 redis 启动的时候会自动跟 master 进行数据同步,所以两台从机都这样配置即可。



配置完之后,启动 Redis 集群

[root@localhost bin]# ./redis-server redis.conf
[root@localhost bin]# ./redis-server slave_1.conf
[root@localhost bin]# ./redis-server slave_2.conf

查看集群信息

[root@localhost bin]# ./redis-cli -p 6379
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=70,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=70,lag=0
master_failover_state:no-failover
master_replid:c7a5b3dcb54f241ebd42765e2f7ac998cbc6dead
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:70
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:70
127.0.0.1:6379> exit
[root@localhost bin]# ./redis-cli -p 6380
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_read_repl_offset:346
slave_repl_offset:346
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:c7a5b3dcb54f241ebd42765e2f7ac998cbc6dead
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:346
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:346

主从验证

127.0.0.1:6379> set hello codeman
127.0.0.1:6380> get hello
127.0.0.1:6381> get hello

哨兵集群搭建

配置文件如下

//端口默认为26379。
port:26379
//关闭保护模式,可以外部访问。
protected-mode:no
//设置为后台启动。
daemonize:yes
//日志文件。
logfile:./sentinel.log
//指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。
sentinel monitor mymaster 127.0.0.1 6379 2
//当在Redis实例中开启了requirepass,这里就需要提供密码。
//sentinel auth-pass mymaster pwdtest@2019
//这里设置了主机多少秒无响应,则认为挂了。
sentinel down-after-milliseconds mymaster 3000
//主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
snetinel parallel-syncs mymaster 1
//故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000

启动3个哨兵

[root@localhost bin]# 。、
[root@localhost bin]# ./redis-sentinel etc/sentinel_2.conf
[root@localhost bin]# ./redis-sentinel etc/sentinel_3.conf

查看哨兵信息

[root@localhost bin]# ./redis-cli -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
127.0.0.1:26379> exit

容灾切换

模拟主机宕机,关闭 redis 服务

[root@localhost bin]# ./redis-cli -p 6379
127.0.0.1:6379> shutdown
not connected> exit

查看其它服务的集群信息

[root@localhost bin]# ./redis-cli -p 6380
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6381,state=online,offset=39247,lag=0
master_failover_state:no-failover
master_replid:d04cdf0ec6da075a5c5290f5de60c7b8d62e5d06
master_replid2:c7a5b3dcb54f241ebd42765e2f7ac998cbc6dead
master_repl_offset:39247
second_repl_offset:22621
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:39247
127.0.0.1:6380> exit

重新启动 6379 主节点,发现主节点已经变成从节点了

[root@localhost bin]# ./redis-cli -p 6379
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_read_repl_offset:75831
slave_repl_offset:75831
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:d04cdf0ec6da075a5c5290f5de60c7b8d62e5d06
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:75831
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:57994
repl_backlog_histlen:17838
127.0.0.1:6379> exit
[root@localhost bin]# ./redis-cli -p 6380
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=81858,lag=1
slave1:ip=127.0.0.1,port=6379,state=online,offset=81725,lag=1
master_failover_state:no-failover
master_replid:d04cdf0ec6da075a5c5290f5de60c7b8d62e5d06
master_replid2:c7a5b3dcb54f241ebd42765e2f7ac998cbc6dead
master_repl_offset:81858
second_repl_offset:22621
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:81858

了解更多可扫码关注公众号

在这里插入图片描述



推荐阅读
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 本文详细介绍了如何在CentOS 6.5系统上安装和配置Redis 3.0.6,包括必要的环境准备、软件包下载、编译安装及基本功能测试。 ... [详细]
  • 一家位于长沙的知名网络安全企业,现面向全国诚聘高级后端开发工程师,特别欢迎具有一线城市经验的技术精英回归故乡,共创辉煌。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 本文详细介绍了如何使用Heartbeat构建一个高可用性的Apache集群,包括安装、配置和测试步骤。 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • 本文探讨了服务器系统架构的性能评估方法,包括性能评估的目的、步骤以及如何选择合适的度量标准。文章还介绍了几种常用的基准测试程序及其应用,并详细说明了Web服务器性能评估的关键指标与测试方法。 ... [详细]
  • IA64架构下常见编程陷阱探讨
    本文深入探讨了IA64架构中常见的一个编程错误案例,该案例揭示了当开发者试图绕过编译器的某些限制时可能遇到的问题。通过具体分析IA64架构的特点及其对全局变量处理的方式,本文旨在为开发者提供避免此类问题的有效建议。 ... [详细]
  • 本文详细介绍了 Node.js 中 OS 模块的 arch 方法,包括其功能、语法、参数以及返回值,并提供了具体的使用示例。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
author-avatar
总是生活在记忆中_873
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有