8、redis的主从复制架构

在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave),如图所示。

使用主从复制这种模式,实现node01作为主节点,node02与node03作为从节点,并且将node01所有的数据全部都同步到node02与node03服务器

第一步:node02与node03服务器安装redis

node02与node03执行以下命令安装依赖环境

yum -y install gcc-c++

node02与node03上传redis压缩包

在node02与node03服务器上面上传redis压缩包,然后进行解压

将安装包上传到/export/softwares路径下

cd /export/softwares

tar -zxvf redis-3.2.8.tar.gz -C ../servers/

node02与node03服务器安装tcl

node02与node03服务器执行以下命令在线装TCL

yum 
-y  install  tcl

node02与node03服务器编译redis

node02与node03执行以下命令进行编译redis

执行以下命令进行编译:

cd /export/servers/redis-3.2.8/

make MALLOC=libc   或者使用命令  make  进行编译

make test && make install

node02与node03服务器修改redis配置文件

node02服务器修改配置文件命令如下

执行以下命令修改redis配置文件

cd /export/servers/redis-3.2.8/

mkdir -p /export/servers/redis-3.2.8/logs

mkdir -p /export/servers/redis-3.2.8/redisdata

vim redis.conf

bind node02

daemonize yes

pidfile /var/run/redis_6379.pid

logfile
"/export/servers/redis-3.2.8/logs/redis.log"

dir /export/servers/redis-3.2.8/redisdata

slaveof node01 6379

node03服务器修改配置文件命令如下

执行以下命令修改redis配置文件

cd /export/servers/redis-3.2.8/

mkdir -p /export/servers/redis-3.2.8/logs

mkdir -p /export/servers/redis-3.2.8/redisdata

vim redis.conf

bind
node03

daemonize yes

pidfile /var/run/redis_6379.pid

logfile "/export/servers/redis-3.2.8/logs/redis.log"

dir /export/servers/redis-3.2.8/redisdata

slaveof
node01 6379

第二步、启动node02与node03机器的redis服务

node02执行以下命令启动redis服务

cd  /export/servers/redis-3.2.8/src

redis-server 
../redis.conf

node03执行以下命令启动redis服务

cd  /export/servers/redis-3.2.8/src

redis-server 
../redis.conf

启动成功便可以实现redis的主从复制,node01可以读写操作,node02与node03只支持读取操作。

9、redis当中的Sentinel架构

  Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

例如:

在Server1 掉线后:

升级Server2 为新的主服务器:

第一步:三台机器修改哨兵配置文件

三台机器执行以下命令修改redis的哨兵配置文件

cd /export/servers/redis-3.2.8

vim sentinel.conf

# 配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,192.168.11.128代表监控的主服务器,6379代表端口,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。

#修改bind配置,每台机器修改为自己对应的主机名

bind
node01

#配置sentinel服务后台运行

daemonize
yes

#修改三台机器监控的主节点,现在主节点是node01服务器

sentinel monitor mymaster node01 6379 2

# sentinel auth-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码

# sentinel auth-pass <master-name>
<password>

第二步:三台机器启动哨兵服务

cd /export/servers/redis-3.2.8

src/redis-sentinel sentinel.conf

第三步:node01服务器杀死redis服务进程

使用kill  -9命令杀死redis服务进程,模拟redis故障宕机情况

过一段时间之后,就会在node02与node03服务器选择一台服务器来切换为主节点

第四步:redis的sentinel模式代码开发

详见代码

Update(stage3):第1节 redis组件:8、主从复制架构;9、Sentinel架构的更多相关文章

  1. Update(stage3):第1节 redis组件:10、redis集群

    10.redis集群 1.redis集群的介绍 Redis 集群是一个提供在多个Redis节点之间共享数据的程序集. Redis 集群并不支持同时处理多个键的 Redis 命令,因为这需要在多个节点间 ...

  2. Update(stage3):第1节 redis组件:7、持久化

    7.redis的持久化 由于redis是一个内存数据库,所有的数据都是保存在内存当中的,内存当中的数据极易丢失,所以redis的数据持久化就显得尤为重要,在redis当中,提供了两种数据持久化的方式, ...

  3. Update(stage3):第1节 redis组件:4、安装(略);5、数据类型(略);6、javaAPI操作;

    第三步:redis的javaAPI操作 操作string类型数据 操作hash列表类型数据 操作list类型数据 操作set类型的数据 详见代码

  4. Update(stage3):第1节 redis组件:1 - 3、web发展历史以及redis简介

    Redis课程教案 1. NoSQL数据库的发展历史简介 1.web系统的变迁历史 web1.0时代简介 基本上就是一些简单的静态页面的渲染,不会涉及到太多的复杂业务逻辑,功能简单单一,基本上服务器性 ...

  5. 基于async/non-blocking高性能redis组件库BeetleX.Redis

    BeetleX.Redis是基于async/non-blocking模式实现的高性能redis组件库,组件支持redis基础指令集,并封装更简便的List,Hashset和Subscribe操作.除了 ...

  6. Node.js与Sails~redis组件的使用

    有段时间没写关于NodeJs的文章了,今天也是为了解决高并发的问题,而想起了这个东西,IIS的站点在并发量达到200时有了一个瓶颈,于是想到了这个对高并发支持比较好的框架,nodeJs在我之前写出一些 ...

  7. laravel集成workerman,使用异步mysql,redis组件时,报错EventBaseConfig::FEATURE_FDS not supported on Windows

    由于laravel项目中集成了workerman,因业务需要,需要使用异步的mysql和redis组件. composer require react/mysql composer require c ...

  8. Egret入门学习日记 --- 第二十篇(书中 9.1~9.3 节 内容 组件篇)

    第二十篇(书中 9.1~9.3 节 内容 组件篇) 第八章中的内容. 以上都是基本的Js知识,我就不录入了. 直接来看 第9章. 开始 9.1节. 以上内容告诉你,Egret官方舍弃了GUI,使用了E ...

  9. Vue2.0 【第二季】第7节 Component 组件 props 属性设置

    目录 Vue2.0 [第二季]第7节 Component 组件 props 属性设置 第7节 Component 组件 props 属性设置 一.定义属性并获取属性值 二.属性中带' - '的处理方式 ...

随机推荐

  1. docker dial unix /var/run/docker.sock: connect: permission denied

    Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker. ...

  2. 微信小程序 scroll-view 左右横向滑动没有效果(无法滑动)问题

    小程序组件 scroll-view 中分别有上下竖向滑动和左右横向滑动之分,在这次项目中刚好需要用到横向滑动,但在测试过程中发现横向滑动没有了效果(静止在那里没移动过),经调试发现: 1.scroll ...

  3. MP4转mp3

    python实现: 依赖: glob,pydub "Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not wo ...

  4. 如何预测股票分析--k-近邻

    在上一篇中,我们学习了线性回归,这一次来看看k近邻的表现 K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:在 ...

  5. 【网易官方】极客战记(codecombat)攻略-地牢-祸之火焰

    关卡连接: https://codecombat.163.com/play/level/banefire 绕着火焰跳舞,否则你的骨头下次就会被烧着 默认代码 # 食人魔看上去又大又慢,这是你的机会. ...

  6. 编程道拓扑bcd.top 0x01/ 开局第一篇: 随便聊聊/ 随笔

    0x01 开局 编程道拓扑(bcd.top)是一个前端从业者的思考和总结, 如果你喜欢, 欢迎关注! 作者是一个前端从业者, 本系列会总结作者在工作和学习中的一些思考, 会有具体的技术点, 也会有关于 ...

  7. spring 的异步处理

    1.先解析几个类的用法 1.1  java.lang.annotation.Annotation @Target(ElementType.FIELD) @Retention(RetentionPoli ...

  8. 项目中vuex的加入

    1, 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象.当应用变得非常复杂时,store 对象就有可能变得相当臃肿. 为了解决以上问题,Vuex 允许我们将 store 分割成模块(modu ...

  9. mysql 数据库中的模式替换

    1, REPLACE 使用 -UPDATE tbl_name SET field_name = REPLACE(field_name,old_str,new_str) WHERE conditions ...

  10. 单机架设传奇服务器第47课:定时器OnTimer功能详解

    传奇定时器OnTimer功能详解(泡点.时间触发.任务活动) 定时器功能,是服务端中非常常见的一种功能,常见如:泡点脚本.赌博脚本,任务活动指定时间刷怪,时间触发一些都需要用到OnTimer功能,定时 ...