Keepalived避免无用的failover

标签: keepalived 无用 failover | 发表时间:2015-04-19 00:00 | 作者:
出处:http://blogkun.com

通常情况下,当主挂掉时,从会自动切换为主。当主上的服务恢复时,则会再次抢占成为主,这里就发生了一次不必要的failover。

为了解决上述情况,可以在主的配置中vrrp_instance增加nopreempt。

实验


注意:确保实验机器防火墙不会过滤掉vrrp协议的数据包。

主配置:

    1 ! Configuration File for keepalived
 2 
 3 global_defs {
 4    router_id LVS_DEVEL_TEST
 5 }
 6 
 7 vrrp_script chk_httpd {
 8     script "systemctl status httpd.service > /dev/null 2>&1"
 9     interval 2
10     weight -2
11 }
12 
13 vrrp_instance VI_1 {
14     state MASTER
15     interface eno16777736
16     virtual_router_id 51
17     priority 100
18     nopreempt
19     advert_int 1
20     mcast_src_ip 192.168.213.128
21     track_script {
22         chk_httpd
23     }
24     authentication {
25         auth_type PASS
26         auth_pass 1111
27     }
28     virtual_ipaddress {
29         192.168.213.200
30     }
31 }

从配置:

    1 ! Configuration File for keepalived
 2 
 3 global_defs {
 4    router_id LVS_DEVEL_TEST
 5 }
 6 
 7 vrrp_script chk_httpd {
 8     script "systemctl status httpd.service > /dev/null 2>&1"
 9     interval 2
10     weight -2
11 }
12 
13 vrrp_instance VI_1 {
14     state BACKUP
15     interface eno16777736
16     virtual_router_id 51
17     priority 99
18     advert_int 1
19     mcast_src_ip 192.168.213.129
20     track_script {
21         chk_httpd
22     }
23     authentication {
24         auth_type PASS
25         auth_pass 1111
26     }
27     virtual_ipaddress {
28         192.168.213.200
29     }
30 }

以下是 sudo tcpdump vrrp -i eno16777736命令输出。

正常情况下:

tcpdump vrrp

128挂掉,129切换为主:

tcpdump vrrp

128恢复,并未抢占成为主,仍然是129对外提供服务。

但这里有一个问题,如果此时129挂掉,128不会抢占成为主!为了解决这个问题,可以在129挂掉时,将129上的Keepalived服务停止。如下修改129配置的vrrp_script:

systemctl status httpd.service > /dev/null 2>&1;[ $? -ne 0 ] || systemctl stop keepalived.service

现在,当129挂掉时,128能够抢占成为主,不过再恢复129时,需要重启Keepalived服务:

tcpdump vrrp

相关 [keepalived 无用 failover] 推荐:

Keepalived避免无用的failover

- - 小火箭
通常情况下,当主挂掉时,从会自动切换为主. 当主上的服务恢复时,则会再次抢占成为主,这里就发生了一次不必要的failover. 为了解决上述情况,可以在主的配置中vrrp_instance增加nopreempt. 注意:确保实验机器防火墙不会过滤掉vrrp协议的数据包. 以下是 sudo tcpdump vrrp -i eno16777736命令输出.

failover机制

- - 行业应用 - ITeye博客
通俗地说,即当A无法为客户服务时,系统能够自动地切换,使B能够及时地顶上继续为客户提供服务,且客户感觉不到这个为他提供服务的对象已经更换. 这里的A和B可以存在于各种领域,但一般fail-over特指计算机领域的数据库、应用服务、硬件设备等的失效转移. 【电脑】失效备援 (为系统备援能力的一种, 当系统中其中一项设备失效而无法运作时, 另一项设备即可自动接手原失效系统所执行的工作).

Oracle RAC Failover 详解

- - CSDN博客数据库推荐文章
Oracle  RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是 Failover(故障转移). 它指集群中任何一个节点的故障都不会影响用户的使用,连接到故障节点的用户会被自动转移到健康节点,从用户感受而言, 是感觉不到这种切换.

Keepalived安装

- - CSDN博客架构设计推荐文章
Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,通过配合Nginx可以实现web前端服务的高可用. 安装Keeplived依赖. 安装 openssl. #通知email,根据实际情况配置 { admin@example.com } notification_email_from admin@example.com smtp_server 127.0.0.1 stmp_connect_timeout 30 router_id node1.

配置LVS+Keepalived

- -
lvs说明:目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);. 八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh). 在调度器的实现技术中,IP负载均衡技术是效率最高的. 在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性.

jQuery CDN failover 的方式…

- Tim - Gea-Suan Lin's BLOG
之前有在其他網站上看到 failover 的技巧,但剛剛才發現 jQuery 官方網站上也用上了類似的技巧,將 Google (ajax.googleapis.com) 與 EdgeCast (code.jquery.com) 的 CDN:. 雖然 jQuery 網站上是放在開頭,但放在 HTML 最後面也有一樣的效果….

Redis Cluster的FailOver失败案例分析

- - ITeye博客
      使用redis clusterRC1部署集群,6台机器,每台部署16个实例,每个master使用一个slave,node_timeout为默认值(15s). kill掉其中一个master发现failover完成不了. 通过cluster nodes观察,该节点一直处于pfail状态. 问题出在失败判定上,一直处于PFail,说明完成不了PFail->Fail的转换.

Haproxy+KeepAlived 负载均衡

- - CSDN博客系统运维推荐文章
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现. LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. 还可以使用nginx来实现,不过nginx只工作在7层网络之上. 详细请参考 抚琴煮酒写的“ 软件级负载均衡器(LVS/HAProxy/Nginx)的特点简介和对比”这篇文章,简单很详细,很好.

lvs+keepalived 负载均衡

- - CSDN博客系统运维推荐文章
LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡. LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器. 目前有三种IP负 载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh).

Keepalived+Mysql 高可用方案

- - 数据库 - ITeye博客
Keepalived+Mysql 高可用方案. 安装: 略  Keepalived可从CentOS系统安装包中获得. 建立一个脚本用于在keepalived检测到mysql挂了的时候调用该脚本把keepalived杀死. 当然,在这个文件你也可以加入邮件通知等功能,这里就不列举了.. 配置keepalived.conf.