Redis 3.0.7基于Sentinel的高可用安装及配置

在生产场景下都必须做到高可用,否则出现问题就会造成服务停止。这里介绍下Redis的Sentinel功能实现的高可用,当然也有Redis提供的cluster功能。

1.Redis的安装

wget http://download.redis.io/releases/redis-3.0.7.tar.gz
tar zxf redis-3.0.7.tar.gz
cd redis-3.0.7
make
cd src
mkdir -p /usr/local/redis3.0.7/{sbin,data,conf}
scp -r mkreleasehdr.sh  redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-sentinel  redis-server localhost:/usr/local/redis3.0.7/sbin
cp ../redis.conf /usr/local/redis3.0.7/conf/
echo ‘PATH=$PATH:/usr/local/redis3.0.7/sbin‘ >>/etc/profile
source /etc/profile

2.Redis的配置

vim /usr/local/redis3.0.7/conf/redis.conf

(以下为db1的配置,db2的配置只需要增加一行slaveof 192.168.2.241 6379)

#是否以服务方式开启
daemonize no
pidfile /var/run/redis.pid
#端口
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 0
#日志提醒级别
loglevel notice
#日志文件路径
logfile ""
#数据库数量
databases 16
#日志刷新策略(Master禁用)
save 900 1
#说明900秒内1次改动,自动保存一次数据集
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
#以rdb方式存储时是否压缩
rdbcompression yes
#rdb是否校验
rdbchecksum yes
#数据文件名
dbfilename dump.rdb
#数据文件路径
dir /usr/local/redis3.0.7/data
slave-serve-stale-data yes
#从服务器只读
slave-read-only yes
#指定与主数据库连接时需要的密码验证,主库无需设置
#masterauth
#masterauth
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
##启用增量(Master禁用)
appendonly no
#增量日志文件名,默认值为appendonly.aof
appendfilename "appendonly.aof"
#设置对 appendonly.aof 文件进行同步的频率
#always 表示每次有写操作都进行同步,everysec 表示对写操作进行累积,每秒同步一次。
#no表示等操作系统进行数据缓存同步到磁盘,都进行同步,everysec 表示对写操作进行累#积,每秒同步一次
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
#最大可用内存
#maxmemory 2mb
#配置成从服务器
#slaveof 192.168.2.250 6379
#客户端连接访问口令
# requirepass foobared
#限制同时连接的客户数量,防止过多的client导致内存耗尽。如果有足够内存可以不进行#设置
#maxclients 10000

3.Sentinel的配置

vim /usr/local/redis3.0.7/conf/sentinel.conf
port 26379
sentinel monitor master 192.168.2.241 6379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 900000
#sentinel can-failover master yes
sentinel parallel-syncs master 2
# Generated by CONFIG REWRITE
dir "/usr/local/redis3.0.7/conf"
#sentinel client-reconfig-script master /usr/local/redis3.0.7/sbin/vip.sh

4.启动redis-server及redis-sentinel

在db1,db2,db3上分别启动redis-server及redis-sentinel

/usr/local/redis3.0.7/sbin/redis-server /usr/local/redis3.0.7/conf/redis.conf
/usr/local/redis3.0.7/sbin/redis-sentinel /usr/local/redis3.0.7/conf/sentinel.conf

这个时候就已经做好了Redis的主从复制及故障转移,我们客户端的连接就需要修改,因此就涉及到VIP的问题,客户端只要连接VIP的问题,目前VIP的解决方法有

  1. 利用redis-sentinel的sentinel client-reconfig-script参数进行设置
  2. 利用keepalived进行VIP的转移
  3. 利用consul进行服务注册

a.利用redis-sentinel自带的参数进行VIP的配置

在db1,db2的sentinel.conf中加入

sentinel client-reconfig-script master1 /usr/local/redis3.0.7/sbin/vip.sh

然后创建脚本/usr/local/redis3.0.7/sbin/vip.sh

#!/bin/bash
MASTER_IP=$6
LOCAL_IP=‘192.168.2.241‘ #从库修改为192.168.2.242
VIP=‘192.168.2.250‘
NETMASK=‘24‘
INTERFACE=‘eth0‘
if [ ${MASTER_IP} = ${LOCAL_IP} ]; then
         /sbin/ip addr add ${VIP}/${NETMASK} dev ${INTERFACE}
         /sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}
        exit 0
else
         /sbin/ip addr del ${VIP}/${NETMASK} dev ${INTERFACE}
        exit 0
fi
exit 1

在集群启动的时候需要手动添加VIP

/sbin/ip addr add 192.168.2.250/24 dev eth0

使用上面脚本的时候需要注意你的网卡是eth0,否则可能出现VIP无法使用的情况

b.利用keepalived进行VIP的切换

wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz
tar zxf keepalived-1.2.19.tar.gz
cd keepalived-1.2.19
./configure --prefix=/usr/local/keepalived1.2.19 --disable-fwmark
make && make install
ln -s /usr/local/keepalived1.2.19/sbin/keepalived /usr/sbin/
ln -s /usr/local/keepalived1.2.19/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived1.2.19/etc/keepalived/ /etc/keepalived
ln -s /usr/local/keepalived1.2.19/etc/rc.d/init.d/keepalived /etc/init.d/

db1的keepalived配置文件

! Configuration File for keepalived     
global_defs {     
   notification_email {     
     [email protected]     
   }     
   notification_email_from [email protected]     
   smtp_server 127.0.0.1     
   smtp_connect_timeout 10     
   router_id keepalivedha_1     
}     
vrrp_script chk_redis_role {     
    script "/usr/local/redis3.0.7/sbin/redis-cli info | grep role:master >/dev/null 2>&1"     
    interval 1     
    timeout 2     
    fall 2     
    rise 1     
}     
vrrp_sync_group VG_1 {     
    group {     
        VI_1     
    }     
}     
vrrp_instance VI_1 {     
    state BACKUP     
    interface eth0     
    #use_vmac keepalived     
    #vmac_xmit_base     
    smtp_alert     
    virtual_router_id 20    
    priority 100     
    advert_int 1     
    authentication {     
        auth_type PASS     
        auth_pass password     
    }     
    virtual_ipaddress {     
        192.168.2.250
    }     
    track_script {     
        chk_redis_role     
    }     
}

db2的配置文件,只需要将以上文件复制过来并修改下面参数

priority 98

#注意一下interface eth0看下你机器的网卡接口

c.利用consul服务注册

参考:http://dgd2010.blog.51cto.com/1539422/1745314

从上面可以看出以上三种方法:

脚本跟keepalived的形式一样,但是脚本相对轻量,首次启动麻烦,配置简单,依赖于redis-sentinel

keepalived启动简单,排错简便

consul适合大型场景,及云环境没有多余的IP这种情况

以上也适用于2台服务器的场景,也可以不用3台服务器。只需要更改

sentinel monitor master 192.168.2.241 6379 1

后面值更改为1即可

时间: 2024-07-29 23:05:36

Redis 3.0.7基于Sentinel的高可用安装及配置的相关文章

基于Keepalived构建高可用集群配置实例(HA Cluster)

什么是集群 简单的讲集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源.这些单个的计算机系统就是集群的节点(node).一个理想的集群是,用户从来不会意识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统.并且集群系统的管理员可以随意增加和删改集群系统的节点. 关于更详细的高可用集群我们在后面再做详解,先来说说Keepalived Keepalived是什么 Keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbea

Nginx+Keepalived 主备高可用 安装与配置

环境说明:操作系统:CentOS6.7 x86_64Nginx版本:nginx-1.9.7Keepalived版本:keepalived-1.2.24 主nginx + Keepalived :10.219.24.26备nginx + Keepalived :10.219.24.23虚拟IP:10.219.24.100后端tomcat_1:10.219.24.21:8080后端tomcat_2:10.219.24.21:8081 架构与原理: 前端双 Nginx + Keepalived ,Ng

最新Hadoop-2.7.2+hbase-1.2.0+zookeeper-3.4.8 HA高可用集群配置安装

Ip 主机名 程序 进程 192.168.128.11 h1 Jdk Hadoop hbase Namenode DFSZKFailoverController Hamster 192.168.128.12 h2 Jdk Hadoop hbase Namenode DFSZKFailoverController Hamster 192.168.128.13 h3 Jdk Hadoop resourceManager 192.168.128.14 h4 Jdk Hadoop resourceMan

Redis源码阅读(二)高可用设计——复制

Redis源码阅读(二)高可用设计-复制 复制的概念:Redis的复制简单理解就是一个Redis服务器从另一台Redis服务器复制所有的Redis数据库数据,能保持两台Redis服务器的数据库数据一致. 使用场景:复制机制很实用,在客户端并发访问量很大,单台Redis扛不住的情况下,可以部署多台Redis复制相同的数据,共同对外提供服务,提高Redis并发访问处理能力.当然这种通过复制方式部署多台Redis以提高并发处理能力的方式只适用于客户端大部分访问为读数据请求的场景.此外,Redis从2.

CentOS下Redis高可用安装笔记

(WJW)Redis高可用安装笔记 [x] 安装环境介绍: Master: T1 Slave: T2 VIP: 192.168.68.45 [x] 安装Redis(Master,Slave) 注意: 安装redis前flushall的修改 查找src/redis.c文件,把 `{"flushdb",flushdbCommand,1,"w",0,NULL,0,0,0,0,0},` `{"flushall",flushallCommand,1,&qu

MaxCompute,基于Serverless的高可用大数据服务

2019年1月18日,由阿里巴巴MaxCompute开发者社区和阿里云栖社区联合主办的"阿里云栖开发者沙龙大数据技术专场"走近北京联合大学,本次技术沙龙上,阿里巴巴高级技术专家吴永明为大家分享了MaxCompute,基于Serverless的高可用大数据服务,以及MaxCompute低计算成本背后的秘密. 以下内容根据演讲视频以及PPT整理而成. 一.什么是MaxCompute Big Data in Alibaba首先为大家介绍阿里巴巴大数据技术的一些相关背景.正如下图所示,阿里巴巴

keepalived高可用调度器配置详解

一.VRRP概述 1.VRRP协议 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准.VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及及时在实际第一跳路由器使用失败的情形下仍能够维护路由器间的连通性. 2.vrrp术语 参考:H3C VRRP技术白皮书 虚拟路由

keepalived 高可用调度器配置

一.vrrp 概述 1.VRRP协议 虚拟路由冗余协议,是IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议. VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混 乱,准许主机使用单路由器,及时在在实际第一跳路由器使用失败的情形下仍能够维护路由器 间的连通性. 2.VRRP基本术语 3.VRRP工作原理  4.VRRP的主要功能 1.master 路由器的选择功能 2.master 路由器的状态通告 3.VRRP 认证功能 5.VRRP高可用工

使用HeartBeat实现高可用HA的配置过程详解

使用HeartBeat实现高可用HA的配置过程详解 一.写在前面 HA即(high available)高可用,又被叫做双机热备,用于关键性业务.简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至B机器继续提供服务.常见的实现高可用的开源软件有 heartbeat 和 keepalived. 这样,一台 web 服务器一天24小时提供web服务,难免会存在 web 服务挂掉或服务器宕机宕机的情况,那么用户就访问不了服务了,这当然不是我们期望