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. Java数组转集合之Arrays.asList()用法

    Arrays.asList()用法 使用Arrays.asList()的原因无非是想将数组或一些元素转为集合,而你得到的集合并不一定是你想要的那个集合. 而一开始asList的设计时用于打印数组而设计 ...

  2. 2019-2020-2 20174314王方正 《网络对抗》 Exp0 Kali安装

    本博旨记录安装Kali的具体步骤. 一.Vmware的安装 略. 二.Vmware的配置 选择[文件]-[新建虚拟机]. 出现新建虚拟机导向,按照以下图示配置每一步.

  3. js实现Set

    class MySet { constructor(params) { if (typeof params[Symbol.iterator] !== 'function') { throw new T ...

  4. Windows使用nmake和Makefile编译c++

    今天在本地看到一个lsd_1.6的源文件,不知道什么时候看LSD时下载的,里面只有一个Makefile和源文件. 想到在Linux下可以只用一个make命令就可以得到可执行程序,在Windows下是不 ...

  5. angular 页面中引入静态 PDF 文件

    在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件 常用的几种PDF预览代码片段如下: 方法一: <object type="application/pdf" ...

  6. 网站复制工具:HTTrack

    HTTrack简介: HTTrack是Kali中内置的工具,主要用于克隆网站.渗透测试人员可以利用它来在自主可控制的环境中查看该网站的完整内容:所有离线文件.同时可以利用该网站的副本来开发假冒的钓鱼网 ...

  7. mysql 隔离性与隔离级别

    提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务.最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱. 转账过程具体到程序里会有一系列的操作,比如 ...

  8. 记一道简单的re--BUUctf reverse1

    1.首先拖进ida里,看到了左面一百多function...还是shift+f12 查看敏感字符串吧 2.发现了这两个比较可疑的字符串,然后双击this is the right flag 进入到了他 ...

  9. Centos6.10-FastDFS-Tracker-Nginx示例配置

    nginx 安装过程<详见> 1.进入工作目录 cd /usr/local/nginx/conf 2.创建子目录 mkdir configs 3.创建storage代理配置 cd conf ...

  10. 01hive基础操作

    一. Hive基础概念 我自己本人一开始学习Hive的时候,最大的疑问就是hive和hbase到底有什么区别?(因为自己本身学校课程设置问题有了解到一丢丢hbase的知识) 所以先甩一篇博客提供给跟我 ...