文档章节

使用keepalived打造redis双机热备

凯文加内特
 凯文加内特
发布于 2015/10/10 09:07
字数 1232
阅读 362
收藏 4
点赞 0
评论 0

redis是非常实用的优秀nosql开源产品,在高并发的服务器环境中,可以作为缓存和队列使用.美中不足的是,到现在为止,redis并没有推出自己的集群方案,对一个完善的生产环境,负载均衡,高可用,主从备份都是必不可少的选项,redis提供了稳定·的主从备份功能,提供了数种持久化策略,在主从备份上也提供了增量备份的功能,现在通过sentinel提供主从热备的功能,可惜功能上并不完善,达不到生产环境的要求。

现在我们选定keepalived作为redis的高可用支持,keepalived不仅可以比较完善的支持redis的高可用,而且作为lvs负载均衡的配套产品,和lvs天然具有较好的配合,对于搭建redis集群有较好的扩展性。

redis和keepalived的安装非常简单,网上大把的文章可以参考,这里就不再赘述,这里按照redis双机主从热备的场景,讲需要注意的几点,网上的很多文章没有讲清楚。

1,lvs和keepalived的关系,lvs起的是负载均衡功能,而keepalived则是高可用(热备)的支持,keeplaived可以单独使用。

2,keepalived通过VIP虚拟ip的绑定转换来打造热备支持,在转化主从身份的过程中,还支持脚本的调用,根据不同的脚本,keepalived可以用于不同的场景要求,可谓功能强

3,centos环境中keepalived的使用需要安装ipvsadm支持。

4,如果负载均衡使用的是nat策略,那么可以不设置linux的arp_ignore(arp组播忽略)选项。

5,/etc/sysconfig/keeaplived 为keepalived的启动脚本,这个可以不用修改,如果keepalived的启动配置不在/etc/keepalived/keepalived.conf下则需要在这里指定配置文件的位置

  /etc/keepalived/keepalived.conf为kaapalived的默认配置文件所在位置

  /var/log/messages中记载了keepalived的启动,vip转化等log信息,至于角色转化过程中的脚本执行日志,由各个脚本自己指定

下面贴出主从的keepalived.conf设置,在centos7下测试通过

主机keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 128.0.0.1
   smtp_connect_timeout 30
   router_id LVS_MASTER
}

vrrp_script chk_redis 
{ 
     script "/usr/local/redis/sh/redis_check.sh 127.0.0.1 6379" 
     interval 2 
     timeout 2
     fall 3
}

vrrp_instance VI_1 {
    state MASTER
    interface eno16777736
    virtual_router_id 60
    priority 100
    advert_int 3
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.72.115
       # 192.168.200.17
       # 192.168.200.18
    }
     track_script {
        chk_redis
    }
    notify_master "/usr/local/redis/sh/redis_master_master.sh 127.0.0.1 192.168.72.128 6379"
    notify_backup "/usr/local/redis/sh/redis_master_slave.sh 127.0.0.1 192.168.72.128 6379"
    notify_fault "/usr/local/redis/sh/redis_fault.sh" 
}

virtual_server 192.168.72.115 6379 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
    sorry_server 127.0.0.1 80
    real_server 192.168.72.11 6379 {
        weight 1
    TCP_CHECK {
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
          connect_port 6379
        }
    }

   real_server 192.168.72.128 6379 {
        weight 1
        TCP_CHECK {
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
          connect_port 6379
        }
    }



}

从机的keepalived.conf配置

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 128.0.0.1
   smtp_connect_timeout 30
   router_id LVS_BACKUP
}

vrrp_script chk_redis 
{ 
     script "/usr/local/redis/sh/redis_check.sh 127.0.0.1 6379" 
     interval 2 
     timeout 2
     fall 3
}

vrrp_instance VI_1 {
    state BACKUP
    interface eno16777736
    virtual_router_id 60
    priority 99
    advert_int 3
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.72.115
       # 192.168.200.17
       # 192.168.200.18
    }
     track_script {
        chk_redis
    }
    notify_master "/usr/local/redis/sh/redis_backup_master.sh 127.0.0.1 192.168.72.11 6379"
    notify_backup "/usr/local/redis/sh/redis_backup_slave.sh 127.0.0.1 192.168.72.11 6379"
    notify_fault "/usr/local/redis/sh/redis_fault.sh" 
}

virtual_server 192.168.72.115 6379 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
    sorry_server 127.0.0.1 80
    real_server 192.168.72.11 6379 {
        weight 1
    TCP_CHECK {
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
          connect_port 6379
        }
    }

   real_server 192.168.72.128 6379 {
        weight 1
        TCP_CHECK {
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
          connect_port 6379
        }
    }



}

请大家注意几点:

1,同一组里的各个机器配置文件中router_id不能相同,很多文章讲这里可以相同是错误的,这个是组中身份的标识。同一个组里的virtual_router_id必须相同,这是组标识。

2,priority是设置优先级别的,主服务器的优先级必须高于从服务器,即这个数字要大些。

3,interface后跟的是网卡名,在centos7中可不叫eth0,最好在配置之前使用ifconfig查看下你的网卡名称。

4,real_server中的weight设置的是负载均衡优先级,如果主从热备的场景下,这里可以设置为相同。

 

keeaplived可以在主从都运行良好的情况下检测主从状态,当主服务器down掉,或者进程意外终止时,先将VIP绑定到从服务器上,然后通过指定的脚本来提升从服务器的应用层面的角色定位,在redis中就是运行slave no one,当主服务器恢复服务后,将VIP恢复绑定至主服务器,然后调用脚本同步主服务器宕机时间中从服务器储存的数据,然后将主服务器redis进程提升为主redis,从服务器redis降格为备份进程。这些功能的实现都是通过主动调用notify_master脚本实现,这个脚本当然可以配置为其他的功能,所以,这就可以使keepalived在很多场合发挥作用。


本文转载自:http://www.cnblogs.com/phpinfo/p/4198715.html

共有 人打赏支持
凯文加内特
粉丝 327
博文 667
码字总数 87615
作品 0
青岛
后端工程师
keepalived 双机热备

1. keepalived 双机热备的原理 首先,要知道 keepalived 有三个模块,分别是core、check和vrrp。其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析,che...

hello_cjq
03/21
0
0
keepalived 配置使用

这里举例一个使用场景 :Keepalived 双机热备 热备又分为两种情况: 第一种情况:服务器层的热备(比如服务器宕机、keepalived宕、网络不同,这个主要针对ip及keepalived) 第二种情况:应用...

LANTIANFEIYING
2016/06/27
0
0
RabbitMQ负载均衡(3)——Keepalived+HAProxy实现高可用的负载均衡

试想下如果前面配置的HAProxy主机192.168.0.9突然宕机或者网卡失效,那么虽然RabbitMQ集群没有任何故障,但是对于外界的客户端来说所有的连接都会被断开,结果将是灾难性的。确保负载均衡服务...

u013256816
2017/08/14
0
0
Oracle HA双机主备基于共享存储模式并利用keepalived管理实现高可用

HA概述 HA(High Available)即由两台计算机组成并对外提供一组相同的服务,也叫做一主一备模式。正常情况下由主服务器提供服务,备服务器处于待机备用,备机可以随时接替主服务器的工作。也就...

HMLinux
04/15
0
0
LVS+Keepalived高可用群集

LVS+Keepalived高可用群集 目录 第一部分 环境准备 第二部分 使用Keepalived搭建双机热备 第三部分 配置Web节点服务器 第四部分 测试LVS+Keepalived高可用群集 第一部分 环境准备 一:调度器...

leeleeming
05/11
0
0
postgresql 高可用集群搭建资料

多种方案,含zookeeper方案 :PostgreSQL 流行 HA 方案 1. 自己实现高可用集群 有实例 有讲解!postgresql 高可用集群搭建 :PostgreSQLHAwithprimarystandby_2vip 2. pgpool 实现高可用集群...

刘阳0292
2017/10/12
0
0
Nginx+keepalived双机热备+负载均衡 ???待续

keepalived+nginx双机热备+负载均衡 最近因业务扩展,需要将当前的apache 转为nginx(web), 再在web前端放置nginx(负载均衡)。同时结合keepalived 对前端nginx实现HA。 nginx进程基于于Maste...

一枚Sir
2014/07/25
0
2
一步步实现redis+sentinel双机热备

前言 前些天一直在忙线上环境部署的事情,初步想的是,nginx(keepalive双机热备)+3(tomcat)+2redis(双机热备),但是后来由于阿里云服务器经典网络不提供虚拟IP,无法使用keepalive,ngi...

OSC一霸
2016/10/09
1K
8
linux服务器 keepalived双机热备实例

操作系统: CentOS 6.5 keepalived软件版本:keepalived-1.2.13 Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能,判断LVS负载调度器、节点服务器...

睿睿学IT
2016/03/09
0
0
JedisSentinelPool的相关配置与操作

前面文章《一步步实现redis+sentinel双机热备》中已经分享了如何配置使用redis自带监听程序sentinel实现双机热备,这篇文章将继续分享,客户端程序需要做哪些调整。 Spring配置文件 Redis配置...

OSC一霸
2016/10/10
733
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
13分钟前
0
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
18分钟前
0
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
33分钟前
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
40分钟前
0
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
48分钟前
0
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
49分钟前
0
0
安装tensorflow-XXX报错

报错: tensorflow-0.5.0-cp27-none-linux_x86_64.whl is not a supported wheel on this platform. 解决: wget https://bootstrap.pypa.io/get-pip.py sudo python2.7 get-pip.py sudo p......

Yao--靠自己
51分钟前
0
0
JVM学习手册(一):JVM模型

一直从事JAVA开发,天天和JVM打交道,仔细想想对JVM还真的不是特别了解,实在是不应该.周六看了许多资料,也算有点心得,记录一下。 JVM内存模型分为5个区域:方法区,堆,虚拟机栈,本地方法栈,程序计...

勤奋的蚂蚁
今天
0
0
转行零基础该如何学Python?这些一定要明白!

转行零基础学Python编程开发难度大吗?从哪学起?近期很多小伙伴问我,如果自己转行学习Python,完全0基础能否学会呢?Python的难度到底有多大?今天,小编就来为大家详细解读一下这个问题。...

猫咪编程
今天
2
0
205. Isomorphic Strings - LeetCode

Question 205. Isomorphic Strings Solution 题目大意:判断两个字符串是否具有相同的结构 思路:构造一个map,存储每个字符的差,遍历字符串,判断两个两个字符串中相同位置字符的差是否相同 Ja...

yysue
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部