一:介绍

公司用到的redis框架,主要分为cluster的缓存集群和sentinel中的哨兵主从。这种的选用方式一般需要更具业务场景来做区分,两种框架的配置图为:右图为哨兵主从框架和cliuster的集群框架。sentienl的集群框架,适用于redis的key值都属于热点数据,访问量大,并且redis的key值数量不同,这样在一个key的访问量巨大的时候,可以分流到其他从的机器上。而集群则适用于key值较多的环境,其策略上,通过对key的一个特定算法,落到某一天固定的机器上,提供了key的查询速度。类似于数据库的分库分表。

二: 搭建单台redis服务

无论是从那种框架,都需要先搭建redis单台服务,并在此基础上进行扩展

在redis官网下载 redis-4.0.10.tar.gz 并解压 指定的目录,我在解压之前 先建了一个 redis目录 将都在这个目录下操作

tar -zxvf redis-4.0.9.tar.gz

进入到 redis/redis-4.0.9 中,对安装redis

执行 

如果出现错误,可以先安装 gcc ,apt-get install gcc

等编译成功后,进入/redis/redis-4.0.9/src/ 执行 ./redis-server 中即可

其他的详细安装过程,网上博客比较多,就不多说

三:主从服务搭建

搭建主从之前,需要先看一下 https://www.cnblogs.com/leeSmall/p/8398401.html 对理解主从和哨兵有很好对帮助

由于我们只有单台机器,所以这里搭建对是伪主从,通过调整修改端口号,来达到启动不同对redis服务

所以我们只需要修改vim /redis/redis-4.0.9/redis.conf 即可,但是为了方便起见,我们复制这个文件,建立三个不同对conf

等conf配置完成,我们只需要通过 ./redis-server redis-n.conf 就可以启不同的redis服务

3.1 修改配置

先复制 cp /redis/redis-4.0.9/redis.conf /redis/master-slave/redis-mater-6369.conf  和  redis-slave-6368.conf 、redis-slave-6367.conf,其结构如下所示

主redis-master-6369.conf的修复:

# 注视掉 这个,就可以通过ip远程访问

# bind 127.0.0.1

port 6369

requirepass "123456"  //修改redis的密码

pidfile "redis/master-slave/redis-pid/redis_6369.pid"

从服务器 redis-slave-6368.conf

# bind 127.0.0.1

port 6368

pidfile "redis/master-slave/redis-pid/redis_6368.pid"

requirepass "123456"  //修改redis的密码

slaveof 127.0.0.1 6369 //主服务器的地址

masterauth "123456"  //主redis的密码

从服务器 redis-slave-6367.conf 和上面的一样 就不做介绍了

3.2 启动服务器

为了方便启动,通过书写一个脚本,一键启动,启动的顺序是先启动主redis 在启动从redis,并定向输出日志到log里面

#!/bin/sh
echo "启动redis 主从集群" redis/redis-4.0.9/src/redis-server redis/master-slave/redis-master-6369.conf >> logs/redis-log/redis-server.log & redis/redis-4.0.9/src/redis-server redis/master-slave/redis-slave-6368.conf >> logs/redis-log/redis-server.log & redis/redis-4.0.9/src/redis-server redis/master-slave/redis-slave-6367.conf >> logs/redis-log/redis-server.log & echo "redis 启动成功"

chmod +x 这个文件 变成可执行文件

3.3 查看启动状态

通过 redisl-cli -h 127.0.0.1 -a 1234567 -p 6369 连接redis 在通过info查看,可以看到6369是master 另外两个是从服务器,此时主从服务器搭建完成,

出现这种错误 ​ 是标示你的密码输入错了

搭建好之后 可以通过set get一些key值来检测状态

四,哨兵的搭建

哨兵的搭建和步骤三比较类似

在redis/redis-4.0.9 的文件中 有一个 sentienl.conf  也是只需要把这个文件复制成两份,进行修改即可

修改的内容如下

sentienl-26369.conf 、sentienl-26368.conf 两个哨兵

port 26369 //修改端口

protected-mode no //关闭保护默认,可以远程访问

sentinel monitor mymaster 172.20.139.237 6369 2

//监控主节点的IP地址端口,sentinel监控的master的名字叫做mymaster,2代表,当集群中有2个sentinel认为master死了时,才能真正认为该master已经不可用了

sentinel auth-pass mymaster 12345678  //哨兵连接主redis的密码

sentinel config-epoch mymaster 2  //故障转移时最多可以有2从节点同时对新主节点进行数据同步

sentinel leader-epoch mymaster 2

sentinel failover-timeout mymasterA 180000 //故障转移超时时间180s,

五,启动哨兵

修改刚刚启动主从的命令,加入启动哨兵的命令

#!/bin/sh
echo "启动redis 主从集群"
/home/luffyu/tools/redis/redis-4.0.9/src/redis-server /home/luffyu/tools/redis/master-slave/redis-master-6369.conf >> /home/luffyu/logs/redis-log/redis-server.log &
/home/luffyu/tools/redis/redis-4.0.9/src/redis-server /home/luffyu/tools/redis/master-slave/redis-slave-6368.conf >> /home/luffyu/logs/redis-log/redis-server.log &
/home/luffyu/tools/redis/redis-4.0.9/src/redis-server /home/luffyu/tools/redis/master-slave/redis-slave-6367.conf >> /home/luffyu/logs/redis-log/redis-server.log &
echo "redis 启动成功" echo "启动哨兵"
redis/redis-4.0.9/src/redis-sentinel redis/redis-sentinel/sentinel_26368.conf >> logs/redis-log/redis-sentinel.log &
redis/redis-4.0.9/src/redis-sentinel redis/redis-sentinel/sentinel_26369.conf >> logs/redis-log/redis-sentinel.log &
echo "哨兵 启动成功"

检测哨兵是否成功,通过ps -ef | grep "redis" 查看redis的启动状况

这个时候 强行 kill -9 9146 杀掉之前的主redis 节点,也是就是6369的节点

你会发现,另外的之前的两个从节点,6367 或者 6368 被选举成主节点

六:通过 redis 来测试连接

 public static void main(String[] args) {
Set<String> sentinels = new HashSet<String>();
sentinels.add(new HostAndPort("172.20.139.237", 26369).toString());
sentinels.add(new HostAndPort("172.20.139.237", 26368).toString());
JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels);
System.out.println("Current master: " + sentinelPool.getCurrentHostMaster().toString()); Jedis master = sentinelPool.getResource();
master.auth("luffyu123");
master.set("username","cczz"); Jedis master2 = sentinelPool.getResource();
master2.auth("luffyu123"); String value = master2.get("username");
System.out.println("username: " + value);
master2.close();
sentinelPool.close();
sentinelPool.destroy();
}

参考博客:

https://www.cnblogs.com/leeSmall/p/8398401.html

https://blog.csdn.net/RobertoHuang/article/details/70766809

https://www.cnblogs.com/qlong8807/p/5893422.html

Redis主从配置和哨兵监控配置——服务器端环境搭建的更多相关文章

  1. Redis实战——redis主从备份和哨兵模式实践

    借鉴:http://redis.majunwei.com/topics/sentinel.html     https://blog.csdn.net/u011784767/article/detai ...

  2. Redis入门很简单之一【简介与环境搭建】

    Redis入门很简单之一[简介与环境搭建] 博客分类: NoSQL/Redis/MongoDB redisnosqlmemcached缓存中间件  [Redis简介] <一>. NoSQL ...

  3. spring集成redis——主从配置以及哨兵监控

    Redis主从模式配置: Redis的主从模式配置是非常简单的,首先我们需要有2个可运行的redis环境: master node : 192.168.56.101 8887 slave node: ...

  4. 02.Redis主从集群的Sentinel配置

    1.集群环境 1.Linux服务器列表 使用4台CentOS Linux服务器搭建环境,其IP地址如下: 192.168.110.100 192.168.110.101 192.168.110.102 ...

  5. Redis主从同步、哨兵、集群

    什么是主从同步(复制) 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器.前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点 ...

  6. Redis主从原理及哨兵模式

    1.Redis主从搭建 主从的搭建很简单,主节点设置连接密码,从节点的配置上主节点的ip和端口,以及密码,一般从节点我们都设置只读模式. 主节点配置: 主节点密码: requirepass xxx 从 ...

  7. AlwaysOn可用性组测试环境安装与配置(一)--SQL群集环境搭建

    一.测试环境介绍 1. 宿主使用工作站(HYPR-V)基本配置如下: 处理器:Intel(R) Core(TM) i5-4470 CPU @ 3.20GHz 3.20GHz 内存(RAM):8.00G ...

  8. 一、redis系列之基础知识与centos下环境搭建

    1. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用. Redis不仅仅支持简单的ke ...

  9. Redis的简单介绍及在Windows下环境搭建

    简单介绍 1,Redis是什么 最直接的还是看官方的定义吧. Redis is an open source (BSD licensed), in-memory data structure stor ...

随机推荐

  1. 20190423-Vscode与Sass不得不说的秘密(>^ω^<)

    这是乱七八糟的前言:emmm,今天倔强的点,是关于Vscode使用easySass插件时,不安装ruby环境,直接使用插件编译时,不进行设置,分音是会转译为Css文件的= =,神坑的后知后觉才发现是因 ...

  2. 禁用了传说中的PHP危险函数之后,Laravel的定时任务不能执行了?

    虽然已是 2018 年,但网上依然流传着一些「高危 PHP 函数,请一定要禁用!」的标题党文章(搜索关键字:一些需要禁用的PHP危险函数). 这些文章的内容简单直接,给出 php.ini 的 disa ...

  3. Vue开发插件

    (一)Vue.js的插件应该有一个公开方法:install. 这个方法的第一个参数是Vue构造器,第二个参数是一个可选的选项对象,一般是如下操作: MyPlugin.install = functio ...

  4. Nginx日志常用统计分析命令

    IP相关统计 统计IP访问量(独立ip访问数量) awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时间段的IP访问量(4-5点) gr ...

  5. Android开发支付集成——支付宝集成

    微信支付传送门:https://www.cnblogs.com/dingxiansen/p/9209159.html 一.支付宝支付 1. 支付宝支付流程图 2. 集成前准备 去蚂蚁金服注册应用获取a ...

  6. MFC俄罗斯方块

    经典俄罗斯方块游戏 源码百度云链接 链接:https://pan.baidu.com/s/14frk2EuFoiRCzudol2Xgvg提取码:syzk GitHub https://github.c ...

  7. 码云代码托管平台与TortoiseSVN的使用

    1.到https://gitee.com/进行注册,然后登陆 可以发现可以将项目设为私有 2.下载tortoisesvn,一路next安装即可 3.项目创建 4.下载项目 5.创建文件并提交 6.如何 ...

  8. mssql2008 r2 修改默认端口

    1.点击“开始”-“所有程序”-“Microsoft SQL Server 2008R2”-“配置工具”-“SQL Server配置管理器” 2.在打开的“SQL Server配置管理器”窗口中,在左 ...

  9. anki server 错误与解决

    anki 客户端 转载请注明出处 :http://www.cnblogs.com/qq-757617012/ 1.无法同步 是否突然停电,导致程序损坏(提示被防火墙或杀毒软件阻止)     anki客 ...

  10. extjs 中比较常见且好用的监听事件

    ComboBox listeners:{ expand:function(){ //此函数是,点击下拉框展开的时候事件 }, select:function(com, record, index){ ...