本项目采用主从架构,一主两从一个哨兵。在x.x.x.69上部署主节点,在70上部署从节点1和哨兵节点,在71上部署从节点2。

准备:

1、首先上传redis文件到三台linux上,目录/home/sysadm/redis   本次使用redis-3.2.8版本

2、在根目录/下创建u04目录,在u04下创建redis目录,用于安装redis软件。

在根目录下我们创建u04目录,普通用户没有权限,需要使用root账户。

然后将文件夹归属分配给sysadm账户和对应的账号组。

先su root

再mkdir u04

chown -R sysadm:sysadm u04

总结:

Redis的解压目录以及编译目录:  /home/sysadm/redis/redis-3.2.8

Make的路径是: ` /home/sysadm/redis/redis-3.2.8/src '(进入解压后的redis-3.2.8目录后直接make后生成的目录)

Redis的安装目录:make install PREFIX= /u04/redis

安装:

首先在x.x.x.69上安装主节点。

一、安装gcc环境。默认centos系统自带gcc。(如果已安装gcc,则第一步可以省略)

[sysadm@linux ~]# yum install gcc-c++

二、解压缩

[sysadm@linux redis]$ tar -zxvf redis-3.2.8.tra.gz

三、编译redis 进入redis-3.2.8目录  cd /home/sysadm/redis/redis-3.2.8

[sysadm@linux redis-3.2.8]# make

四、安装redis

[sysadm@linux redis-3.2.8]# make install PREFIX=/u04/redis

至此安装完毕。

我们到/u04/redis下面发现多了个bin的目录。这个就是redis的安装目录。如下图:

我们将原来解压的redis的目录下的配置文件copy一份到/u04/redis下面用于启动redis的配置文件。

[sysadm@linux redis-3.2.8]# cp /home/sysadm/redis/redis-3.2.8/redis.conf  /u04/redis

修改配置文件:

[sysadm@linux redis]$ vim redis.conf

①:注释掉bind

②:将保护模式关闭

③:启动后台进程,守护进程改为yes

④:pidfile可以不用修改

(

如果要同时在同一台机器上安装多个redis的服务器,最好把这个修改了:

如:pidfile “/var/run/redis_6379.pid”   pidfile “/var/run/redis_6380.pid”    pidfile “/var/run/redis_6381.pid”

)

再在70和71上安装从节点1和2

步骤和在69上安装一样,

配置文件修改也一样。

不过配置文件要多修改一个地方:将redis.conf的slaveof配置成下面的:

也就是说从机配置完后会一直监听主机的端口,当主机的有数据写入时从机会同时将数据拷贝一份到本机上

启动测试:

启动69上的主节点,再启动70和71上的从节点:

nohup  /u04/redis/bin/redis-server  /u04/redis/redis.conf  >/u04/redis/redisStart.log  2>&1  &

登陆上69linux连接主节点:

/u04/redis/bin/redis-cli -h x.x.x.69 -p 6379

输入命令:INFO replication 查看节点状态:69为主节点,有两个从节点70和71

部署哨兵:

哨兵的作用就是对Redis的系统的运行情况的监控,它是一个独立进程。它的功能有2个:

1、  监控主数据库和从数据库是否运行正常;

2、  主数据出现故障后自动将从数据库转化为主数据库;

登录70节点。

在/u04的同级目录创建redis-sentinel目录,

将/u04/redis下的bin目录copy到redis-sentinel目录下一份:

同时将/home/sysadm/redis/redis-3.2.8目录下的sentinel.conf也拷贝过来一份。

################

修改sentinel.conf配置文件:

①:sentinel monitor gjywmaster x.x.x.69 6379 1

②:由于上面将mymaster改成了gjywmaster,所以这个配置文件中的所有的mymaster都要改成gjywmaster。如:

sentinel failover-timeout gjywmaster 180000

说明:

gjywmaster:监控主数据的名称,自定义即可,可以使用大小写字母和“.-_”符号

x.x.x.69:监控的主数据库的IP

6379:监控的主数据库的端口

1:最低通过票数

③:同时要将sentinel.conf中的protected-mode 改成no,默认是注释掉的。否则java客户端链接不上。

启动哨兵进程:

nohup  /u04/redis-sentinel/bin/redis-sentinel   /u04/redis-sentinel/sentinel.conf  >/u04/redis-sentinel/sentinelStart.log   2>&1   &

可以在/u04/redis-sentinel/ sentinelStart.log这个文件中查看sentinel的日志情况。

在同一台机器上部署:

如图:要是在同一台机器上部署的话,我们只需要将redis的安装目录bin拷贝两份bin6380、bin6381,以及拷贝两份redis.conf成redis6380.conf和redis6381.conf就行。

然后将redis6380.conf和redis6381.conf里面的port改成6380和6381,同时改一下pidfile。

启动:

nohup /u04/redis/bin/redis-server /u04/redis/redis.conf >/u04/redis/redisStart.log 2>&1 &

nohup /u04/redis/bin6380/redis-server /u04/redis/redis6380.conf >/u04/redis/redis6380Start.log 2>&1 &

nohup /u04/redis/bin6381/redis-server /u04/redis/redis6381.conf >/u04/redis/redis6381Start.log 2>&1 &

哨兵配置同样的。

测试:

让69上的主节点down掉,然后看sentinel.log日志文件,然后登陆到70上查看主从配置信息。Info replication

然后再启动69上的主节点。

启动顺序

先启动69上的主节点,再启动70和71上的从节点

再启动70上的sentinel 哨兵。

Java工具类的编写:

在spring中配置jedisSentinel。

http://sumory.com/2014/08/15/spring-redis-sentinel/

https://www.cnblogs.com/wangweiNB/p/5620845.html(多个sentinel配置)

可以使用springboot来进行快速搭建项目测试。

链接:

Redis.conf文件的说明:https://www.cnblogs.com/zhoujinyi/p/5565647.html

哨兵的配置文件说明:https://blog.csdn.net/u011784767/article/details/77994046?locationNum=6&fps=1

https://www.cnblogs.com/wangweiNB/p/5620845.html

redis的保护模式:redis3.2之后新加入的特性

https://blog.csdn.net/csdn_ds/article/details/72550898

https://blog.csdn.net/sukexiaozi/article/details/52022449

附 从别的地方找来的关于sentinel的日志文件的说明:

从数据库宕机

kill掉2826进程后,30秒后哨兵的控制台输出:

2989:X 05 Jun 20:09:33.509 # +sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379

说明已经监控到slave宕机了,那么,如果我们将3380端口的redis实例启动后,会自动加入到主从复制吗?

2989:X 05 Jun 20:13:22.716 * +reboot slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379

2989:X 05 Jun 20:13:22.788 # -sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379

可以看出,slave从新加入到了主从复制中。-sdown:说明是恢复服务。

主库宕机

哨兵控制台打印出如下信息:

2989:X 05 Jun 20:16:50.300 # +sdown master taotaoMaster 127.0.0.1 6379  说明master服务已经宕机

2989:X 05 Jun 20:16:50.300 # +odown master taotaoMaster 127.0.0.1 6379 #quorum 1/1

2989:X 05 Jun 20:16:50.300 # +new-epoch 1

2989:X 05 Jun 20:16:50.300 # +try-failover master taotaoMaster 127.0.0.1 6379  开始恢复故障

2989:X 05 Jun 20:16:50.304 # +vote-for-leader 9059917216012421e8e89a4aa02f15b75346d2b7 1  投票选举哨兵leader,现在就一个哨兵所以leader就自己

2989:X 05 Jun 20:16:50.304 # +elected-leader master taotaoMaster 127.0.0.1 6379  选中leader

2989:X 05 Jun 20:16:50.304 # +failover-state-select-slave master taotaoMaster 127.0.0.1 6379 选中其中的一个slave当做master

2989:X 05 Jun 20:16:50.357 # +selected-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ taotaoMaster 127.0.0.1 6379  选中6381

2989:X 05 Jun 20:16:50.357 * +failover-state-send-slaveof-noone slave 127.0.0.1:6381 127.0.0.1 6381 @ taotaoMaster 127.0.0.1 6379  发送slaveof no one命令

2989:X 05 Jun 20:16:50.420 * +failover-state-wait-promotion slave 127.0.0.1:6381 127.0.0.1 6381 @ taotaoMaster 127.0.0.1 6379   等待升级master

2989:X 05 Jun 20:16:50.515 # +promoted-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ taotaoMaster 127.0.0.1 6379  升级6381为master

2989:X 05 Jun 20:16:50.515 # +failover-state-reconf-slaves master taotaoMaster 127.0.0.1 6379

2989:X 05 Jun 20:16:50.566 * +slave-reconf-sent slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379

2989:X 05 Jun 20:16:51.333 * +slave-reconf-inprog slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379

2989:X 05 Jun 20:16:52.382 * +slave-reconf-done slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379

2989:X 05 Jun 20:16:52.438 # +failover-end master taotaoMaster 127.0.0.1 6379 故障恢复完成

2989:X 05 Jun 20:16:52.438 # +switch-master taotaoMaster 127.0.0.1 6379 127.0.0.1 6381  主数据库从6379转变为6381

2989:X 05 Jun 20:16:52.438 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6381  添加6380为6381的从库

2989:X 05 Jun 20:16:52.438 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ taotaoMaster 127.0.0.1 6381  添加6379为6381的从库

2989:X 05 Jun 20:17:22.463 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ taotaoMaster 127.0.0.1 6381 发现6379已经宕机,等待6379的恢复

可以看出,目前,6381位master,拥有一个slave为6380.

接下来,我们恢复6379查看状态:

2989:X 05 Jun 20:35:32.172 # -sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ taotaoMaster 127.0.0.1 6381  6379已经恢复服务

2989:X 05 Jun 20:35:42.137 * +convert-to-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ taotaoMaster 127.0.0.1 6381  将6379设置为6381的slave

小结:

本教程只是介绍了一下,redis主从的搭建过程。Redis的具体的使用以及redis中的一些概念,redis的高阶使用并没有介绍,大伙如果有兴趣可以自行去找资料学习。

推荐本书:redis入门指南(第二版) 李子骅

redis主从架构的搭建的更多相关文章

  1. Redis主从架构搭建和哨兵模式(四)

    一主一从,往主节点去写,在从节点去读,可以读到,主从架构就搭建成功了 1.启用复制,部署slave node wget http://downloads.sourceforge.net/tcl/tcl ...

  2. Redis 主从架构搭建

    引言 准备搭建的是主从架构( Master/Slave )中的一主两从模式:其中 Master 为 Redis 的主服务器,主要负责写操作,两个 Slave 为 Redis 的从服务器,主要负责读操作 ...

  3. Redis 主从集群搭建及哨兵模式配置

    最近搭建了redis集群及哨兵模式,为方便以后查看特此记录下来: 1.Redis安装 2.主从架构 2.1 Redis主从架构图 2.2Redis主从结构搭建 Redis集群不用安装多个Redis,只 ...

  4. 10.Redis 主从架构

    作者:中华石杉 Redis 主从架构 单机的 redis,能够承载的 QPS 大概就在上万到几万不等.对于缓存来说,一般都是用来支撑读高并发的.因此架构做成主从(master-slave)架构,一主多 ...

  5. redis主从架构,分片集群详解

    写在前面:这篇笔记有点长,如果你认真看完,收获会不少,如果你只是忘记了相关命令,请翻到末尾. redis的简单介绍: 一个提供多种数据类类型储存,整个系统都在内存中运行的, 定期通过异步的方式把数据刷 ...

  6. redis主从集群搭建及容灾部署(哨兵sentinel)

    Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 ...

  7. 采用redis 主从架构的原因

    如果系统的QPS超过10W+,甚至是百万以上的访问,则光是Redis是不够的,但是Redis是整个大型缓存架构中,支撑高并发的架构非常重要的环节. 首先,你的缓存中间件.缓存系统,必须能够支撑起10w ...

  8. redis主从集群搭建

    一.安装redis 首先登陆官网下载压缩包,我安装的是最新版本5.X,下载地址http://download.redis.io/releases/redis-5.0.2.tar.gz. 进入文件所在目 ...

  9. redis主从架构宕机问题手动解决

    1    主机宕机 1.  设置端口6379是主机,端口6380是从机,全部都正常启动 2.  验证在6379写入数据,在6380也能得到数据 3.  现在将6379主机停掉,模拟主机宕机 4.  由 ...

随机推荐

  1. OpenStack系列

    一.概述 云计算介绍 OpenStack各组件详解和通信流程 二.keystone系列 三.glance系列 四.nova系列 虚拟化介绍 kvm介绍 五.neutron系列 六.horizon系列 ...

  2. 佣金百万so easy!阿里云推广联盟喊你来赚钱

    淘客速来,佣金百万so easy!阿里云推广联盟喊你来赚钱 阿里云CPS推广阶梯返佣活动火热升级! 坐享15%佣金!一笔成交即有奖励!最高奖励2000元! 超高客单价.高转化率.高佣金! 招募淘客推广 ...

  3. chengfa

    public class ddddd{ public static void main(String[] args) { ; ; i <= m; i++) { ; j <= i; j++) ...

  4. 生命不息学习不止,前端js学习笔记(一)

    引言 从毕业到年已经整整7年,期间一直从事.net开发做c/s从 c# 转到 wpf 而后又开始做b/s 用silverlight,从最开始的arcgis engine 到后来的silverlight ...

  5. 求n的元素的最大最小值

    public static int[] maxMin(int a[]) { int[] res = new int[2]; int len = a.length; if (len <= 0) { ...

  6. Visio2010新建E-R图

    visio2010没有内置E-R图的模板,需要自己配置模具.步骤如下: 1.文件->新建->基本流程图->右键菱形->添加到新模具->命名为E-R图. 2.更多形状-&g ...

  7. 【Leetcode】【Medium】Remove Duplicates from Sorted List II

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

  8. 【Leetcode】【Medium】Maximum Product Subarray

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  9. 设计模式:享元(FlyWeight)模式

    设计模式:享元(FlyWeight)模式 一.前言     享元(FlyWeight)模式顾名思义,既是轻量级的,原因就是享元,共享元素,这里的元素指的是对象.如何共享对象,那就是在检测对象产生的时候 ...

  10. php 汉字转拼音函数

    function Pinyin($_String, $_Code='UTF8'){ //GBK页面可改为gb2312,其他随意填写为UTF8 $_DataKey = "a|ai|an|ang ...