日志收集系统之redis高可用集群搭建

    为了搭建日志收集系统LEK,须要搭建一套Redis高可用集群,确保日志正常从各个应用服务器流转到ElasticSeach服务器,最终经过Kabana显示出来。Redis高可用集群采用redis自带的sentinel实现,具备主备和故障转移功能。 c++

1、安装环境说明

两台机器:master(192.168.2.52),slave(192.168.2.53)
操做系统:CentOS 6.5
Redis:2.8.17,下载地址:http://download.redis.io/releases/redis-2.8.17.tar.gz redis

2、安装Redis

  • 安装前准备 服务器

    一、安装c++编译器
    yum install gcc-c++ 架构

    二、安装依赖tcl
    yum install -y tcl 分布式

  • 安装 测试

    一、下载
    wget http://download.redis.io/releases/redis-2.8.17.tar.gz ui

    二、解压
    tar -zxvf redis-2.8.17.tar.gz spa

    三、安装
    先建立一个软连接,而后进入连接目录,安装。 操作系统

    ln -s redis-2.8.17 redis
    cd redis
    make install

    安装完成以后,在/usr/local/bin目录下会出现redis相关的脚本文件(不包含redis-sentinel.sh)。以下图所示: .net

  • 配置

    一、建立相关目录

    redis配置须要指定日志文件、进程id文件、数据文件和数据文件目录,下面建立这些相关目录,以便在下一步进行配置。

    mkdir /var/redis
    cd /var/redis
    mkdir log #存放日志
    mkdir run #存放redis进程文件
    mkdir data #存放备份数据

    此外,还须要建立一个存放配置文件的目录,将redis连接目录中的redis.conf文件拷贝过来。

    mkdir /etc/redis
    cp YOURPATH/redis/redis.conf /etc/redis/

    二、配置文件

    一般须要修改一下配置:

    daemonize yes
    pidfile "/var/redis/run/redis.pid"
    logfile "/var/redis/log/redis.log"
    dir "/var/redis/data"
    dir "/var/redis/data" #这个能够本身定义大小
  • 测试

    启动redis服务 redis-server /etc/redis/redis.conf
    执行简单的存取操做,若是成功,则表示redis服务正常。以下图所示

  • 复制安装
    按照上述步骤,在slave机器上安装好redis服务,redis主备和高可用至少须要两台机器。

3、Redis主备

  • 前提
    master和slave两台机器均已完成Redis安装,且服务能够正常运转。

  • 主备配置
    redis的主备配置比较简单,只须要在从服务的配置文件中指明主服务地址和端口号便可。即修改slave上的redis配置文件:
    slaveof 192.168.2.52 6379

  • 测试
    依次重启redis master,redis slave,在master和slave分别执行以下命令,能够查看主备信息。

    #在master上执行
    redis-cli -h 192.168.2.52 -p 6379 info Replication
    
    #在slave上执行
    redis-cli -h 192.168.2.53 -p 6379 info Replication

    此外还能够进行存取测试,在master上执行set操做,在slave上执行get操做,若是value相等,则证实主备功能正常。由于默认 slave是只读,因此当在slave上执行set操做时,将报错:(error) ERR wrong number of arguments for 'set' command

4、Redis高可用

redis高可用的实现采用redis-sentinel,自Redis2.8版开始,正式提名为Sentinel主从切换方案。Sentinel用于管理多个Redis服务器实例,主要负责3个方面的任务:

  • 监控(Monitoring):Sentinel会不断检测你的主服务器和从服务器是否正常运做

  • 提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel能够经过API向管理员或者其余应用程序发送通知

  • 自 动故障转移(Automatic Failover):当一个主服务器不能正常工做时, Sentinel 会开始一次自动故障迁移操做, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其余从服务器改成复制新的主服务器; 当客户端试图链接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可使用新主服务器代替失效服务器。

Redis Sentinel 是一个分布式系统, 你能够在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪一个从服务器做为新的主服务器。

  1. Redis-sentinel配置

拷贝sentinel的脚本至/usr/local/bin目录 cp src/redis-sentinel /usr/local/bin;

拷贝配置文件sentinel.conf至/etc/redis目录cp sentinel.conf /etc/redis,修改配置文件:

port 26379

# master1
sentinel monitor master1 192.168.2.52 6379 1
sentinel down-after-milliseconds master1 5000
sentinel failover-timeout master1 900000
sentinel parallel-syncs master1 1
  1. 集群测试

启动redis-sentinel服务redis-sentinel /etc/redis/sentinel.conf --sentinel;

执行检测命令redis-cli -h 192.168.2.52 -p 26379 info Sentinel,结果以下,master为192.168.2.52

如今中止52上redis服务redis-cli -h 192.168.2.52 -p 6379 shutdown,再执行检测命令以下,master变成了192.168.2.53

5、总结

本文主要介绍了如何使用redis-sentinel搭建redis高可用集群,理论结合实际演示了集群实现的效果,主备和故障转移。


欢迎转载,请注明出处:http://my.oschina.net/xiaohui249/blog/338517

相关文章
相关标签/搜索