文档章节

搭建Redis Sentinel集群

shelltea
 shelltea
发布于 2016/06/20 19:50
字数 1091
阅读 1.5K
收藏 19

行业解决方案、产品招募中!想赚钱就来传!>>>

如果使用Docker,推荐:https://github.com/shelltea/redis-sentinel-docker

下载Redis

当前最新版本为3.2.1

cd /opt
wget http://download.redis.io/releases/redis-3.2.1.tar.gz
tar zxf redis-3.2.1.tar.gz
ln -s redis-3.2.1 redis
cd redis
make
yum install tcl
make test

服务器

  • 100.31 master
  • 100.32 slave0
  • 100.33 slave1

配置

redis.conf

复制一份配置:cp redis.conf redis-100.31-6379.conf 修改以下配置:

修改前 修改后
bind 127.0.0.1 #bind 127.0.0.1
protected-mode yes protected-mode no
daemonize no daemonize yes
logfile "" logfile "/var/log/redis-100.31-6379.log"
dir ./ dir "/usr/local/redis-data"
appendonly no appendonly yes

100.32和100.33的配置需要增加以下配置:

修改前 修改后
slaveof 192.168.100.31 6379

并注意修改日志文件名

sentinel.conf

复制一份配置:cp sentinel.conf sentinel-100.31-26379.conf 修改或增加以下配置:

修改前 修改后
sentinel monitor mymaster 127.0.0.1 6379 2 sentinel monitor mymaster ${master ip} 6379 2
sentinel down-after-milliseconds mymaster 30000 sentinel down-after-milliseconds mymaster 3000
protected-mode no
daemonize yes
logfile "/var/log/redis-sentinel-100.31-26379.log"

100.32和100.33的配置同上,但需要注意修改日志文件名

启动

启动Redis

在三台服务器上分别启动Redis

/usr/local/redis-3.2.1/src/redis-server /usr/local/redis-3.2.1/redis-100.31-6379.conf
/usr/local/redis-3.2.1/src/redis-server /usr/local/redis-3.2.1/redis-100.32-6379.conf
/usr/local/redis-3.2.1/src/redis-server /usr/local/redis-3.2.1/redis-100.33-6379.conf

查看日志:

tail -100f /var/log/redis-100.31-6379.log
tail -100f /var/log/redis-100.32-6379.log
tail -100f /var/log/redis-100.33-6379.log

启动Redis Sentinel

在三台服务器上分别启动Redis Sentinel

/usr/local/redis-3.2.1/src/redis-sentinel /usr/local/redis-3.2.1/sentinel-100.31-26379.conf
/usr/local/redis-3.2.1/src/redis-sentinel /usr/local/redis-3.2.1/sentinel-100.32-26379.conf
/usr/local/redis-3.2.1/src/redis-sentinel /usr/local/redis-3.2.1/sentinel-100.33-26379.conf

查看日志:

tail -100f /var/log/redis-sentinel-100.31-26379.log
tail -100f /var/log/redis-sentinel-100.32-26379.log
tail -100f /var/log/redis-sentinel-100.33-26379.log

自启动

Redis自启动

将下面的脚步写入/etc/rc.d/init.d/redis并执行chmod +x /etc/rc.d/init.d/redis

#!/bin/sh
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=6379
EXEC=/usr/local/redis-3.2.1/src/redis-server
CLIEXEC=/usr/local/redis-3.2.1/src/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/usr/local/redis-3.2.1/redis-100.31-${REDISPORT}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

注意脚本中的配置文件路径

然后执行

chkconfig redis on
chkconfig --add redis
chkconfig --list redis

之后就可以用service redis start/stop对Redis进行控制

Redis Sentinel自启动

将下面的脚步写入/etc/rc.d/init.d/redis-sentinel并执行chmod +x /etc/rc.d/init.d/redis-sentinel

#!/bin/sh
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
# Redis Sentinel startup script

REDISPORT=26379
EXEC=/usr/local/redis-3.2.1/src/redis-sentinel
CLIEXEC=/usr/local/redis-3.2.1/src/redis-cli

PIDFILE=/var/run/redis.pid
CONF="/usr/local/redis-3.2.1/sentinel-100.31-${REDISPORT}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis Sentinel server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis Sentinel stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

注意脚本中的配置文件路径

然后执行

chkconfig redis-sentinel on
chkconfig --add redis-sentinel
chkconfig --list redis-sentinel

之后就可以用service redis-sentinel start/stop对Redis Sentinel进行控制

问题汇总

The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

To fix this warning you have to set a new config to /etc/rc.local so that the setting will persist upon reboot

$~: sudo nano /etc/rc.local
Add this:

sysctl -w net.core.somaxconn=65535
When you reboot the next time, the new setting will be to allow 65535 connections instead of 128 as before.

WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf

WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.

This is also simple to fix by just running the recommended command as stated in the warning.

echo never > /sys/kernel/mm/transparent_hugepage/enabled
Go to /etc/rc.local

$~: sudo nano /etc/rc.local
Add this:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
Now this will be persistent upon reboot as well.

参考

shelltea

shelltea

粉丝 5
博文 4
码字总数 2087
作品 0
朝阳
程序员
私信 提问
加载中
请先登录后再评论。
用vertx实现高吞吐量的站点计数器

工具:vertx,redis,mongodb,log4j 源代码地址:https://github.com/jianglibo/visitrank 先看架构图: 如果你不熟悉vertx,请先google一下。我这里将vertx当作一个容器,上面所有的圆圈要...

jianglibo
2014/04/03
4K
3
集群存储系统--YFS

YFS集群存储系统由多个元数据服务器(MDS)、多个块数据服务器(CDS)和多个客户端(client)互联组成集群; 数据被分成64M固定大小的数据块(Chunk),每个数据块在CDS本地以常规文件的形式...

匿名
2013/02/19
1.8K
0
工作流管理系统--Pegasus WMS

Pegasus (飞马座)工作流管理系统包括一套技术标准工作流程应用程序中执行帮助许多不同的环境中,包括桌面、校园集群、网格、云。它弥补了科学领域和执行环境通过自 动映射到分布式资源的高层工...

匿名
2013/02/24
5.3K
0
PHP框架--XiunoPHP

XiunoPHP 是一款面向高负载应用的 PHP 开发框架,PHPer 通过它可以快速的简单的开发出高负载项目。 XiunoPHP 前身名为 Xiuno Framework,更名后版本号从 v1.0 开始计算。已经经过了多年的实际...

匿名
2013/03/20
2.5K
0
Redis 分片实现--Redis Shard

redis-shard 是 Redis 分区的 Python API ,基于对 key 和 key tag 进行 CRC32 checksum 计算,可参考文章 http://antirez.com/post/redis-presharding.html . 该项目由知乎网开发。 使用限制...

匿名
2012/10/24
5.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

叮! Q币派送中,快来看看你中奖了吗?

中奖名单新鲜出炉啦! 大家好 为了感谢大家一直以来对我们公众号的关注和支持 D妹来给大家发!奖!品!了! 是哪几位幸运鹅 能把这30Q币收入囊中? 赶紧过来康康吧! 也欢迎各位后续多多分享...

腾讯云DNSPod
今天
0
0
Qt音视频开发5-vlc事件订阅

一、前言 事件订阅可以拿到文件长度、播放进度、播放状态改变等信息,vlc的事件订阅机制封装的比较友好,只需要先创建一个事件管理器,然后逐个订阅自己感兴趣的需要的事件,不感兴趣的可以不...

飞扬青云
刚刚
0
0
酒精和药物影响下出现交通事故的频率

导读: 在酒精或药物影响下驾驶,已被认为是与发生潜在交通事故和出现严重伤亡结果相关的关键因素[1]。2016年,美国酒驾事故导致10,497人死亡,占当年交通事故死亡总人数的28%,其死亡总人数...

科研菌
昨天
0
0
高可用高并发的 9 种技术架构!

来源:androidchina http://www.androidchina.net/7928.html 1、分层 分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一...

Java技术栈
2分钟前
0
0
联盟链要对区块链做减法

当前联盟链平台在公有链的基础上,对共识机制做调整,去掉公有属性,使得准入可控、效率提升,这实际上是对区块链在做减法。但这是否足够呢? 我们在应用中很快发现,联盟链的使用比较受限制...

FISCO-BCOS开源社区
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部