同一步一步搭建Redis + Keepalived主从大可用的原理(一)

开心一乐

【鱼说:“我连连把眼睁开是为了在您身边无放弃离开。”
历届说:“我整天流淌不知疲倦是为围绕你,好好把您抱紧。”
鼎说:“都他母亲快熟了还这么多废话。” 】

文 /莫菲

提出问题

何以一步一步用Redis-Keepalived实现缓存服务热备方案???

公觉得这是同一篇香港游记?其实并无是。

缓解问题

因为在深圳工作,我不时会时有发生时机错过香港。

1.0 keepalived是什么

keepalived是集群管理中保证集群高可用的一个服务软件,用来严防单点故障。

自第一糟的千奇百怪,到现底多少习惯,总的来说,对香港斯地方发熟悉而陌生。

1.1 Keepalived的规律介绍

什么是Keepalived呢?keepalived观其名可知,保持现有,在网络之中就保在线了,也不怕是所谓的赛可用或热备,用来严防单点故障(单点故障是借助要有一样碰起故障就是会见招致整个系统架构的非可用)的发,那说到keepalived时只好说的一个磋商便是VRRP协议,可以说此协议就是keepalived实现的基本功,那么首先我们来瞧VRRP协议.

深谙的凡为几乎各个一样糟糕错过,都是错过的好像之地方,线路吧还约无二。不管是先前打福田口岸通关,还是今天由深圳湾港通关,都是失去到香港市中心。

1.2 VRRP协议

VRRP协议

仿照了网络的爱侣都晓得,网络在计划之时节要考虑到冗余容灾,包括线路冗余,设备冗余等,防止网络存在单点故障,那以路由器或三层交换机处实现冗余就亮越来越重要,在网络里来只协议就是来开这行之,这个协议就是VRRP协议,Keepalived就是巧用VRRP协议来促成高可用性(HA)的
VRRP协议来同等首文章写的不胜好,大家可一直看这里(记得认真看啊,后面基本都曾经是吧底蕴之了)

帖子地址:http://bbs.ywlm.net/thread-790-1-1.html

光待把服务器当作路由器即可!
每当《VRRP协议》里说道到了虚拟路由器的ID也尽管是VRID在这边比较主要
keepalived完全遵守VRRP协议,包括竞选机制等等

生的是因各级一样糟糕错过,都能够觉察一些休绝雷同的地方。

1.3 Keepalived原理

keepalived也是模块化设计,不同模块复责不同的效益,下面是keepalived的机件

core check vrrp libipfwc libipvs-2.4 libipvs-2.6

  • core:是keepalived的中心,复责主进程的启航暨掩护,全局配置文件的加载解析等
  • check:负责healthchecker(健康检查),包括了各种健康检查方式,以及对应之布的解析包括LVS的安排分析
  • vrrp:VRRPD子进程,VRRPD子进程就是来实现VRRP协议的
  • libipfwc:iptables(ipchains)库,配置LVS会用到
  • libipvs*:配置LVS会用到
    注意,keepalived和LVS完全是两回事,只不过他们担当相互配合而都

原理图片

比如说是自从坐地铁过关换成因为坏巴过关,就发现了事先从未到了之元朗大美的。

1.4 Redis使用keeplived热备设计思路

当 Master 与 Slave 均运作如常时, Master负责服务,Slave负责Standby;
当 Master 挂掉,Slave 正常时,
Slave接管服务,有描绘权限,同时关闭主从复制功能;
当 Master
恢复正常,则于Slave同步数据,同步数据后关闭主从复制功能,恢复Master身份,同时Slave等待Master同步数据就以后,恢复Slave身份。
接下来逐一循环。

新生失去矣尖沙咀又过了维港去香港岛,找到那些早已当TVB荧屏里涌出的场景,发现了半山扶梯,又以为一味香港之意味还是大浓厚的。

1.5 keepalived的布局文件

参考资料:https://my.oschina.net/ydsakyclguozi/blog/515200

keepalived配置文件keepalived.conf ,
里面主要不外乎以下几单布局区域,分别是:

  • global_defs、

关键是布置故障发生常之打招呼对象及机器标识

global_defs {
    notification_email {
        ay@ay.com
        al@ay.com
        ...
    }
    notification_email_from alert@ay.com
    smtp_server smtp.ay.com
    smtp_connect_timeout 30
    enable_traps
    router_id host163
}

notification_email 故障发生常于哪个发邮件通知。

notification_email_from 通知邮件从哪个地方有。

smpt_server 通知邮件的smtp地址。

smtp_connect_timeout 连接smtp服务器的超时时间。

enable_traps 开启SNMP陷阱(Simple Network Management Protocol)。

router_id
标识本节点的字条串,通常为hostname,但无肯定不得是hostname。故障发生常,邮件通知会见为此到。

  • static_ipaddress、static_routes、

static_ipaddress和static_routes区域布局的凡凡依照节点的IP和路由于信息。如果您的机器上已经部署了IP和路由,那么这片只区域可以毫无配置。其实,一般情况下您的机还见面有IP地址及路途由于信息之,因此无必要再当马上片独区域布局。

static_ipaddress {
    10.210.214.163/24 brd 10.210.214.255 dev eth0
    ...
}
static_routes {
    10.0.0.0/8 via 10.210.214.1 dev eth0
    ...
}
  • vrrp_script:用来举行健康检查,当时检查失败时会见用vrrp_instance的priority减少相应的价值。
  • vrrp_instance

vrrp_instance用来定义对外提供服务的VIP区域及其有关属性。

vrrp_rsync_group用来定义vrrp_intance组,使得这组内成员动作一样。举个例子来证明一下那力量:

global_defs {
   router_id redis130
}
vrrp_script chk_redis {
                script "/etc/keepalived/scripts/redis_check.sh"   ###监控脚本
                interval 2                                        ###监控时间
}
vrrp_script chk_redis {
                script "/etc/keepalived/scripts/redis_check.sh"   ###监控脚本
                interval 2                                        ###监控时间
                weight  -10
}
vrrp_instance VI_1 {
        state MASTER                            ###设置为MASTER
        interface eth0                         ###监控网卡
        nopreempt
        virtual_router_id 51
        priority 101                            ###权重值
        authentication {
                     auth_type PASS             ###加密
                     auth_pass 1111            ###密码
        }
        track_script {
                chk_redis                       ###执行上面定义的chk_redis
        }
        virtual_ipaddress {
             192.168.184.131                    ###VIP
        }
        notify_master /etc/keepalived/scripts/redis_master.sh
        notify_backup /etc/keepalived/scripts/redis_backup.sh
        notify_fault  /etc/keepalived/scripts/redis_fault.sh
        notify_stop   /etc/keepalived/scripts/redis_stop.sh
}

notify_master/backup/fault :分别表示切换为主/备/出错时所实行的剧本。

notify
:表示其余一样态切换时都见面调用该脚本,并且该脚论在以上三独本子执行到位之后进展调用,keepalived会自动传递三只参数($1
= “GROUP”|”INSTANCE”,$2 = name of group or instance,$3 = target state
of transition(MASTER/BACKUP/FAULT))。

state
:可以是MASTER或BACKUP,不过当其他节点keepalived启动时会将priority比较坏之节点选举为MASTER,因此该项其实没精神用途。

interface :节点固有IP(非VIP)的网卡,用来发VRRP包。

virtual_router_id :取值在0-255次,用来区别多独instance的VRRP组播。

nopreempt
:允许一个priority比较没有之节点作为master,即使有priority更强的节点启动。

  • virtual_server

热备设计思路

(注:也可以安装排抢占IP模式,即以主设备配置丰富:nopreempt,这样拖掉的Master恢复后,保持Slave身份,不过来Master身份)。

这次因为了叮叮车原本想当铜锣湾生,结果提前在湾仔下车,在小街巷里活动了同一围绕发现,也来那么些事先并未看到底一味香港味道。

1.6 在keepalived+redis的以过程中生四栽情景
  • 1
    一栽是keepalived挂了,同时redis也挂到了,这样的话直接VIP飘走之后,是无欲展开redis数据并的,因为redis挂了,你为无能为力去master上齐,不过会损失已勾勒以master上也还不曾一起到slave上面的及时有些数量。
  • 2
    另一样栽是keepalived挂了,redis没挂,这时候VIP飘走后,redis的master/slave还是尽的照应关系,如果无转之口舌会拿数
    据写入redis
    slave中,从而不见面伙到master上去,这将靠监控脚本反转redis的master/slave关系。这时候就要养一点年华开展多少和
    步,然后反转master/slave。
  • 3
    还产生一样栽是keepalived没挂,redis挂了,这时候根据监察脚本会检测及redis挂了,并且降低keepalived
    master的优先级,同样会导致VIP飘走,情况与次种同等,也是用进行数量并,然后反转当前redis的master/slave关系之。
  • 4
    随后同种植是keepalived没挂,redis也从未挂,大吉大利啊,什么都不用操作。
    本文的实验环境四种植状况尚且严丝合缝,第一种是免需一块数据的,脚本会默认去同数据,但是其实是无会见成之。脚论主要是为此来处理第二以及老三种植情形的。

而且比方之前从没失去过十分水埗,一生地铁站发现异常地方正是锣鼓喧天到异常,鸭寮街之称号果然美妙,我们还当真在那边用好有益于的标价淘到几乎张很正确的CD。

读感悟

出自惠特曼《草叶集》

  • 哪有土,哪里来度,哪里就增长在草。
  • 因为寒冷而打颤的人,最能体味到阳光的温。经历了人生烦恼的丁,最懂生命的难能可贵。
  • 自坐正,观望世界上有的焦虑,所有的压榨和耻辱….看正在,听在,一名不响。
  • 本人任由在于哪,遇到其他意外都设维持自己平衡,面对黑夜,风暴,饥饿,嘲弄,事故,挫败,都如如大树与动物那么坚韧。
  • 自身闻了谈话者的发话,关于始与终的开口,可是我不说话论始与终。
  • 不用与你攀谈,我就需要于相同丁5588葡京线路独自为时,或是独自在夜睡醒时,想在若。
    我会等待,从不怀疑会再次与公遇到。
    自我要是潜心。不错了您。

当,也会见盼不好的地方。

其他

若果发生带动为您同丝丝小快,就深受开心持续传递下去,欢迎转载,点赞,顶,欢迎留下宝贵的意见,多谢支持!

仍有有吃网及炒得火热的旅店,人流过盛导致服务态度急速下降,体验十分糟糕,又或者可能他们身上就是带在点看无从大陆人的态势在吧?

因而更了这样几不行香港底实施后,我意识,如果你失去香港无是为购物,只是单纯想只要环游,想如果体验,想如果感受,那么建议不用挪动大路,要多运动上前大路里面的羊肠小道去看看,去看看居住在那里的人数在举行啊,去啊地方,吃啊事物,过什么的生存,然后您才会跟着慢慢失去深入体会。

旋即说不定便是尖锐体验当地的相同种植途径。

当,如果你于那边有识的人头便还简明了,以上那些探索之手续为都可聊去。

可我或更热爱让自己失去追究。

坐对一个地方充满好奇,我会见惦记在去开掘更多不一致的地方,会想方去找到印象中的那种痛感,两者比对以下,得出去对这个地方的一个记忆。

苟以此记忆是属于自我要好的。

于是当无形中中,身边的爱人都说自颇会旅游,有应声面的问题且见面来咨询我。

只是更了几乎糟糕带人去玩香港的经验过后,我发现,我还真不是一个好导游,又要说,我极其不切合当一个好导游。

身啊导游的轨道是什么?尽最酷或服务好您的孤老。

只是我哪怕带别人去游山玩水,也想去一些自身眷恋去之地方,而当身边人建议去哪里的当儿,我也会以心尖第一时间做出这种举报。

或许是以自身此“导游”本身也当游吧,所以无法真正做到光是服务如不出口其他。

诸如此类想着,我以相当佩服那些事导游行业之总人口矣。

先不说能不负众望对这些风景了如指掌,单就从事不管巨细满足客人就或多或少,我就算觉得其实了得了。因为无论是你遇见什么人,你还得而一致入好性子去比,好像什么还开得到,什么还不曾问题,什么都能也客人解决。

盖自自己虽是以互联网旅游商店工作的,所以时常为会硌到这些导游,也放了众多客人对导游的暖心评价。真的是当,能被一个外人还同一众多陌生人都发自内心地称而仔细、周到、体贴,是项多不爱的事情。

诸如此类想在,我虽为看,从今往后,是得尽善尽美修炼下自己之性情了。

可于这边先立个flag:2018,多吧身边人设想。


无防护365创作训练营  第44龙