• Redis集群部署


    1.1.1redis简介

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志 型、 Key-Value数据库

    1.1.2redis常见使用场景

    1.会话缓存(Session Cache

    最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的,现在,他们还会这样吗?

    幸运的是,随着 Redis 这些年的改进,很容易找到怎么恰当的使用Redis来缓存会话的文档。甚至广为人知的商业平台Magento也提供Redis的插件。

    2.全页缓存(FPC

    除基本的会话token之外,Redis还提供很简便的FPC平台。回到一致性问题,即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,类似PHP本地FPC。

    再次以Magento为例,Magento提供一个插件来使用Redis作为全页缓存后端。

    此外,对WordPress的用户来说,Pantheon有一个非常好的插件  wp-redis,这个插件能帮助你以最快速度加载你曾浏览过的页面。

    3.队列

    Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作,就类似于本地程序语言(如Python)对 list 的 push/pop 操作。

    如果你快速的在Google中搜索“Redis queues”,你马上就能找到大量的开源项目,这些项目的目的就是利用Redis创建非常好的后端工具,以满足各种队列需求。例如,Celery有一个后台就是使用Redis作为broker,你可以从这里去查看。

     

    1.1.4 redis版本

       redis版本:2.8.6

       操作系统centos6.5

    2.0.0 单机模式安装

    2.1.1软件下载

    wget http://download.redis.io/releases/redis-2.8.6.tar.gz

    2.1.2安装脚本

    以上每台机器分别按照单机版安装redis执行脚本redis_install.sh

    脚本如下

     

    #!/bin/bash
    
    yum -y install gcc make tcl;
    
    cp redis-2.8.6.tar.gz /usr/local/redis-2.8.6.tar.gz;
    
    cd /usr/local/;
    
    tar -xvf redis-2.8.6.tar.gz;
    
    cd redis-2.8.6;
    
    make;
    
    make test;
    
    mkdir  -p  /bestpayserver/data/redis;
    
    mkdir  -p  /bestpayserver/log/;
    
    sed -i 's/^daemonize no/daemonize yes/g'  redis.conf
    
    sed -i 's/^port 6379/port 16379/g' redis.conf
    
    sed -i 's/^logfile ""/logfile /bestpayserver/log/redis.log/g' redis.conf
    
    sed -i 's/^dir .//dir /bestpayserver/data/redis/g' redis.conf
    

      

    2.1.3 软件启动

       # cd  /usr/local/redis-2.8.6/src
    
       # ./redis-server  /usr/local/redis-2.8.6/redis.conf
    

      

    2.1.4 查看redis进程

    # ps -aux |grep redis
    
    Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
    
    root     14134  0.0  0.9 137348  9544 ?        Ssl  10:18   0:18 ./redis-server *:16379                         
    
    root     25042  0.0  0.0 103256   828 pts/0    S+   20:35   0:00 grep redis
    

      

    2.1.5 命令测试

             进入客户端:

             # cd  /usr/local/redis-2.8.6/src
    
             # ./redis-cli –p 16379
    
             set 测试
    
             redis 127.0.0.1:16379> set hello world
    
             OK <---成功
    
             get 测试
    
             redis 127.0.0.1:16379> get hello
    
             "world" <---成功
    

      

    2.2 集群监控搭建

    2.2.1. 机器准备

       主master:192.168.161.233

       从1slave:192.168.161.234

       从2slave:192.168.161.235

       监控机sentinel:192.168.161.236

     

    2.2.2拓扑图

    2.2.3 slave 配置

    # cd  /usr/local/redis-2.8.6
    # echo "slaveof 192.168.161.233 16379" >> redis.conf
    
    

      

    Master上查看集群状态

    [root@centos01 src]# ./redis-cli -h 192.168.161.233 -p 16379 info Replicatio

    Slave上查看集群状态

    [root@centos03 src]# ./redis-cli -h 192.168.161.235 -p 16379 info Replication
    

    2.2.4sentinel监控机配置

    # cd  /usr/local/redis-2.8.6
    # vim sentinel.conf
    

      

    修改一下配置

    sentinel monitor mymaster  192.168.161.233  16379  1
    

      

    其中mymaster为自定义的master名称,后面为master的IP,端口号,最后面的1表示有一个sentinel监控。

       Redis主从系统,除了做数据冗余,开可以做高可用性灾备。Reids提供了Sentinel工具来监控各Master的状态,如果Master异常,则会做主从切换,将slave作为master,将master作为slave。主从切换之后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变。master_redis.conf中会多了一句slaveof的配置,sentinel.conf的监控目标也随之调换,这一点要注意。

    启动监控机:

    #./redis-server /usr/local/redis-2.8.6/sentinel.conf --sentinel &
    

    效果如下:

    在master上查看监控状态

    # ./redis-cli -h 192.168.161.236 -p 26379 info Sentinel
    

      

    效果如下:

    在master  用redis客户断 上查看监控机上 slave状态  

    # ./redis-cli -h 192.168.161.236 -p 26379  sentinel slaves mymaster
    

    3.0.0总结

    3.0.1 主要功能

    Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自懂切换。

    它的主要功能有以下几点

    不时地监控redis是否按照预期良好地运行;

    如果发现某个redis节点运行出现状况,能够通知另外一个进程(例如它的客户端);

    能够进行自动切换。当一个master节点不可用时,能够选举出master的多个slave(如果有超过一个slave的话)中的一个来作为新的master,其它的slave节点会将它所追随的master的地址改为被提升为master的slave的新地址

    3.0.2 Sentinel支持集群

    很显然,只使用单个sentinel进程来监控redis集群是不可靠的,当sentinel进程宕掉后(sentinel本身也有单点问题,single-point-of-failure)整个集群系统将无法按照预期的方式运行。所以有必要将sentinel集群,这样有几个好处:

    即使有一些sentinel进程宕掉了,依然可以进行redis集群的主备切换;

    如果只有一个sentinel进程,如果这个进程运行出错,或者是网络堵塞,那么将无法实现redis集群的主备切换(单点问题);

    如果有多个sentinel,redis的客户端可以随意地连接任意一个sentinel来获得关于redis集群中的信息。

  • 相关阅读:
    对Asp.Net MVC架构的用后感想
    [推荐]MSDN WebCast课程下载工具
    Web系统中关于Postback与页面离开的分辨
    父爱
    Silverlight+RIA Service Required验证失效问题的解决方案
    心情
    IIS32位,64位模式下切换
    每天都要保持编码的习惯
    2008年至今较难忘的一天
    使用SVN+C#.NET保持多台机器的文件同步
  • 原文地址:https://www.cnblogs.com/from-mark/p/5594768.html
Copyright © 2020-2023  润新知