Coder Social home page Coder Social logo

puppet-redis's Introduction

#redis

####Table of Contents

  1. Overview - What is the graphite module?
  2. Setup - The basics of getting started with redis
  3. Usage - The class and defined types available for configuration
  4. Limitations - OS compatibility, etc.
  5. Contributing to the graphite module

##Overview

This module installs and makes basic configs for multiple redis instances on the same node. It installs redis from source. (http://redis.io/) It also can configure the monitoring server Sentinel.

##Setup

What redis affects:

  • packages/configuration to compile and install redis from source
  • services/configuration files to run multiple redis and sentinels

###Beginning with redis

To just compile and install redis binaries. As default the latest stable release will be used.

  class { 'redis::install': }

To install a specific redis version use the following parameters. Most of the time you will only need redis_version.

  class { 'redis::install':
  	redis_version     => '2.8.8',
	redis_build_dir   => '/opt',
	redis_install_dir => '/usr/bin'
  }

###Run multiple instances on same host

As example run two redis instances on port 6379 and 6380.

node 'redis.my.domain' {

  # install latest stable build.
  class { 'redis::install': }

  redis::server {
    'instance1':
      redis_memory    => '1g',
      redis_ip        => '0.0.0.0',
      redis_port      => 6379,
      redis_mempolicy => 'allkeys-lru',
      redis_timeout   => 0,
      redis_nr_dbs    => 16,
      redis_loglevel  => 'notice',
      running         => true,
      enabled         => true
  }

  redis::server {
    'secondRedis':
      redis_memory    => '112m',
      redis_ip        => '0.0.0.0',
      redis_port      => 6380,
      redis_mempolicy => 'allkeys-lru',
      redis_timeout   => 0,
      redis_nr_dbs    => 2,
      redis_loglevel  => 'info',
      running         => true,
      enabled         => true
  }
}

###Setting up sentinel with two monitors

You can create multiple sentinels on one node. But most of the time you will want to create a sentinel with one or more monitors configured.

node 'sentinel.my.domain' {

  # install latest stable build.
  class { 'redis::install': redis_version => '2.8.8' }

  redis::sentinel {'clusters':
    monitors => {
      'mymaster' => {
        master_host             => '127.0.0.1',
        master_port             => 6378,
        quorum                  => 2,
        down_after_milliseconds => 30000,
        parallel-syncs          => 1,
        failover_timeout        => 180000
      },
      'securetRedisCluster' => {
        master_host             => '10.20.30.1',
        master_port             => 6379,
        quorum                  => 2,
        down_after_milliseconds => 30000,
        parallel-syncs          => 5,
        failover_timeout        => 180000,
        auth-pass => 'secret_Password',
        notification-script => '/tmp/notify.sh',
        client-reconfig-script => '/tmp/reconfig.sh'
      }
    }
  }

##Usage

###Classes and Defined Types

This module compiles and installs redis with the class redis::install. The redis service(s) are configured with the defined type redis::server.

####Class: redis::install

This class downloads, compiles and installs redis. It does not configure any redis services. This is done by defimed type redis::server.

Parameters within redis::install:

#####redis_version

The redis version to be installed. By default, the latest stable build will be installed.

#####redis_build_dir

Default is '/opt/' (string) The dir to store redis source code. This will result in a directoy like '/opt/redis-2.8.8/'

#####redis_install_dir

Default is '/usr/bin' (string). The dir to which the newly built redis binaries are copied.

####Defined Type: redis::server

Used to configure redis instances. You can setup multiple redis servers on the same node. See the setup examples.

**Parameters within redis::server

#####redis_name

Name of Redis instance. Default: call name of the function.

#####redis_memory

Default is '100mb' (string). Sets amount of memory used. eg. 100mb or 4g.

#####redis_ip

Default is '127.0.0.1' (string). Listen IP of redis.

#####redis_port

Listen port of Redis. Default: 6379

#####redis_mempolicy

Algorithm used to manage keys. See Redis docs for possible values. Default: allkeys-lru

#####redis_timeout

Default: 0

#####redis_nr_dbs

Number of databases provided by redis. Default: 1

#####redis_dbfilename

Name of database dump file. Default: dump.rdb

#####redis_dir

Default is '/var/lib' (string) Path for persistent data. Path is <redis_dir>/redis_<redis_name>/.

#####redis_log_dir

Default is '/var/log' (string). Path for log. Full log path is <redis_log_dir>/redis_<redis_name>.log.

#####redis_loglevel

Loglevel of Redis. Default: 'notice' (string)

#####running

Configure if Redis should be running or not. Default: true (boolean)

#####enabled

Configure if Redis is started at boot. Default: true (boolean)

####Defined Type: redis::sentinel

Used to configure sentinel instances. You can setup multiple sentinel servers on the same node. And you can configure multiple monitors within a sentinel. See the setup examples.

**Parameters within redis::sentinel

#####sentinel_name

Name of Redis instance. Default: call name of the function.

#####sentinel_port

Listen port of Redis. Default: 6379

#####sentinel_log_dir

Default is '/var/log' (string). Path for log. Full log path is sentinel_log_dir/sentinel_sentinel_name.log.

#####monitors

Default is

{
  'mymaster' => {
    master_host             => '127.0.0.1',
    master_port             => 6379,
    quorum                  => 2,
    down_after_milliseconds => 30000,
    parallel-syncs          => 1,
    failover_timeout        => 180000,
    ### optional
    auth-pass => 'secret_Password',
    notification-script => '/var/redis/notify.sh',
    client-reconfig-script => '/var/redis/reconfig.sh'
  },
}

Hashmap of monitors.

#####running

Configure if Redis should be running or not. Default: true (boolean)

#####enabled

Configure if Redis is started at boot. Default: true (boolean)

##Limitations

This module is tested on CentOS 6.5 and Debian 7 (Wheezy) and should also run without problems on

  • RHEL/CentOS/Scientific 6+
  • Debian 6+
  • Ubunutu 10.04 and newer

##Contributing

Echocat modules are open projects. So if you want to make this module even better, you can contribute to this module on Github.

puppet-redis's People

Contributors

dwerder avatar huandu avatar pulyaevskiy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.