Redis主从配置及通过Keepalived实现Redis自动切换高可用

[日期:2014-07-23] 来源:Linux社区  作者:fuquanjun [字体: ]
 

一:环境介绍:

Master: 192.168.1.4

Slave: 192.168.1.5

Virtural IP Address (VIP): 192.168.1.253

二:设计思路:

当 Master 与 Slave 均运作正常时, Master负责服务,Slave负责Standby;

当 Master 挂掉,Slave 正时, Slave接管服务,同时关闭主从复制功能;

当 Master 恢复正常,则从Slave同步数据,同步数据之后关闭主从复制功能,恢复Master身份,于此同时Slave等待Master同步数据完成之后,恢复Slave身份。

然后依次循环。

需要注意的是,这样做需要在Master与Slave上都开启本地化策略,否则在互相自动切换的过程中,未开启本地化的一方会将另一方的数据清空,造成数据完全丢失。

三:安装配置前准备工作

1.在主服务器192.168.1.4上面做下面操作

echo "192.168.1.4 test01" >> /etc/hosts

echo "192.168.1.5 test" >> /etc/hosts

2.在从服务器192.168.1.5上面做下面操作

echo "192.168.1.4 test01" >> /etc/hosts

echo "192.168.1.5 test" >> /etc/hosts

四:主服务器配置redis

1.下载安装redis软件包

wget http://download.redis.io/releases/redis-2.8.12.tar.gztar xf redis-2.8.12.tar.gz

cd redis-2.8.12

make && make install

cd src/

cp redis-server redis-cli redis-benchmark redis-check-aof redis-check-dump /usr/local/bin

cd /usr/local/bin

ls -ll

然后将源码中的 redis.conf 复制到 /etc/redis.conf

cp /root/redis-2.8.12/redis.conf /etc/redis.conf

修改 /etc/redis.conf里面可以把  daemonize no 修改为daemonize yes

就可以默认在后台执行redis-server了。

再制作一个 init.d 的启动脚本:

vim /etc/init.d/redis-server

#!/usr/bin/env bash

#

# redis start up the redis server daemon

#

# chkconfig: 345 99 99

# description: redis service in /etc/init.d/redis \

#            chkconfig --add redis or chkconfig --list redis \

#            service redis start  or  service redis stop

# processname: redis-server

# config: /etc/redis.conf

PATH=/usr/local/bin:/sbin:/usr/bin:/bin

REDISPORT=6379

EXEC=/usr/local/bin/redis-server

REDIS_CLI=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis.pid

CONF="/etc/redis.conf"

#make sure some dir exist

if [ ! -d /var/lib/redis ] ;then

mkdir -p /var/lib/redis

mkdir -p /var/log/redis

fi

case "$1" in

status)

ps -A|grep redis

;;

start)

if [ -f $PIDFILE ]

then

echo "$PIDFILE exists, process is already running or crashed"

else

echo "Starting Redis server..."

$EXEC $CONF

fi

if [ "$?"="0" ]

then

echo "Redis is running..."

fi

;;

stop)

if [ ! -f $PIDFILE ]

then

echo "$PIDFILE does not exist, process is not running"

else

PID=$(cat $PIDFILE)

echo "Stopping ..."

$REDIS_CLI -p $REDISPORT SHUTDOWN

while [ -x ${PIDFILE} ]

do

echo "Waiting for Redis to shutdown ..."

sleep 1

done

echo "Redis stopped"

fi

;;

restart|force-reload)

${0} stop

${0} start

;;

*)

echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2

exit 1

esac

chmod o+x /etc/init.d/redis-server

chkconfig --add redis-server

service redis-server start

--------------------------------------分割线 --------------------------------------

Ubuntu 14.04下Redis安装及简单测试 http://www.linuxidc.com/Linux/2014-05/101544.htm

Redis集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htm

Ubuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis http://www.linuxidc.com/Linux/2013-06/85816.htm

Redis系列-安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3安装Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

Redis配置文件redis.conf 详解 http://www.linuxidc.com/Linux/2013-11/92524.htm

CentOS 6.3下Haproxy+Keepalived+Apache配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现WEB群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Keepalived+Haproxy配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

Haproxy+Keepalived构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

--------------------------------------分割线 --------------------------------------

五:从发服务器配置redis

从服务器,配置一样,只不过 修改/etc/redis.conf 中

slaveof <masterip> <masterport>修改为

slaveof 192.168.1.4 6379

然后开启从服务器的redis服务。

start redis-server start

六:进行redis主从测试

#主服务器

redis-cli -p 6379 set hello world

#从服务器

redis-cli -p 6379 get hello

"world"

#主服务器

redis-cli -p 6379 set hello world2

#从服务器

redis-cli -p 6379 get hello

"world2"

redis-cli -p 6379 set hello world

(error) READONLY You can't write against a read only slave.

成功配置主从redis服务器,由于配置中有一条从服务器是只读的,所以从服务器没法设置数据,只可以读取数据。

Redis主从配置及通过Keepalived实现Redis自动切换高可用的更多相关文章

  1. mysql mha 主从自动切换 高可用

    mha(Master High Availability)目前在MySQL多服务器(超过二台),高可用方面是一个相对成熟的解决方案. 一,什么是mha,有什么特性 1. 主服务器的自动监控和故障转移 ...

  2. Redis主从配置详细过程

    Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构.下面楼主简单的进行一下配置. 1.上面安装 ...

  3. redis主从配置及主从切换 转

    redis主从配置及主从切换 转自 http://blog.sina.com.cn/s/blog_67196ddc0101h8v0.html (2014-04-28 17:48:47) 转载▼   分 ...

  4. 通过哨兵机制实现Redis主从配置以及java调用

    Redis版本:3.0.7 操作环境:Linux 一.redis 主从配置的作用是什么 redis主从配置,配置master 只能为写,slave只能为读,在客户端对poolconnect请求时候,, ...

  5. Redis主从配置和哨兵监控配置——服务器端环境搭建

    一:介绍 公司用到的redis框架,主要分为cluster的缓存集群和sentinel中的哨兵主从.这种的选用方式一般需要更具业务场景来做区分,两种框架的配置图为:右图为哨兵主从框架和cliuster ...

  6. redis主从配置+sentinel哨兵

    redis主从配置+sentinel哨兵 1:编译环境准备 1.1环境确认 Redis是一个开源.支持网络.基于内存.键值对存储数据库,使用ANSI C编写.所以在搭建Redis服务器时需要C语言的编 ...

  7. Linux中redis主从配置

    假设要在6380开启redis 1.添加配置文件:复制redis.conf为redis_6380.conf 2.修改配置文件:修改redis_6380.conf中port.pidfile 3.防火墙: ...

  8. Redis 主从配置密码以及哨兵

    目录: Redis 主从介绍 哨兵机制 Redis 主从配置 环境 安装 启动服务 检查主从状态 测试数据同步 默认是读写分离的 Redis Sentinel 配置 主Redis宕机测试 配置多个哨兵 ...

  9. 5.redis主从配置

    Redis的主从复制 1.什么是主从复制 持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据 ...

随机推荐

  1. Knockout.js(一):简介

    Knockout是一款很优秀的JavaScript库,通过应用MVVM模式使JavaScript前端UI简单化.任何时候你的局部UI内容需要自动更新,KO都可以很简单的帮你实现,并且非常易于维护. K ...

  2. 将springboot配置文件中的值注入到静态变量

    SpringBoot配置文件分为.properties和.yml两种格式,根据启动环境的不同获取不同环境的的值. spring中不支持直接注入静态变量值,利用spring的set注入方法注入静态变量 ...

  3. Erlang学习记录(二)——基本数据类型

    Erlang可以说和我以前接触过的语言都大不相同,这个从它的类型定义就可以看出来...反正学起来觉得既不熟悉,也不亲切,我估计在用Erlang写应用的时候,整个编程思路都要变一下了.不过存在即是合理的 ...

  4. Html 事件列表

    Html 事件列表 一般事件:onClick HTML: 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击onDblClick HTML: 鼠标双击事件onMouseDown HTML: 鼠标上的按 ...

  5. nginx 域名跳转 Nginx跳转自动到带www域名规则配置、nginx多域名向主域名跳转

    nginx 域名跳转 Nginx跳转自动到www域名规则配置,如果设置使 mgcrazy.com域名在用户访问的时候自动跳转到 www.mgcrazy.com呢?在网上找了好多资料都没有一个完整能解决 ...

  6. (转)探索C++的秘密之详解extern "C",这就是为什么很多.lib被我们正确调用确总是无法解析的。

    (转载,绝对的有用) lib被我们正确调用确总是无法解析.这是C++编译和C编译的区别 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C&qu ...

  7. volitale最经典理解

    volatile跟Java的内存模型有关,非volatile变量时,平常情况,线程执行时会将变量从主内存加载到线程工作内存,建立一个副本,在某个时刻写回. valatile指的每次都读取主内存的值,有 ...

  8. Java8新语言特性

    Java8简明指南 欢迎来到Java8简明指南.本教程将一步一步指导你通过所有新语言特性.由短而简单的代码示例,带你了解如何使用默认接口方法,lambda表达式,方法引用和可重复注解.本文的最后你会熟 ...

  9. Maven项目管理:SpringMVC+Mybatis+Velocity整合笔记

    Maven创建项目 略…具体过程可参考用Maven创建第一个web项目 配置Spring MVC 导入Spring MVC 需要的包在pom.xml 文件下加入: 123456789101112 &l ...

  10. ubuntu中文设置方法

    1.首先打开ubuntu设置(右上角的齿轮),或者直接在左面找到设置,如下图所示. 2.然后点[language support]设置,如下图所示. 3.在弹出的窗口再点击[install]设置操作, ...