L10 keepalived 基本使用(主备模式)

配置keepalive基本主备模式

配置说明:


要求默认情况下由节点node1提供服务,当节点node1不可用时,由节点node2提供服务(即虚拟IP漂移至节点node2)。

节点node1 192.168.0.20 (主节点)

节点node2 192.168.0.21(备用节点)

虚拟IP(对外提供服务的IP 192.168.0.60

ping node 192.168.0.22(用于节点自身状态监测)

内容:

1,节点node1上的配置文件

2,节点node2配置

3,使用脚本防止脑裂。

4,总结



1,节点node1上的配置文件

注意:centos 6.4(含6.4)以后base提供keepalived安装包,直接使用yum安装即可。

vim /etc/keepalived/keepalived.conf

global_defs {

notification_email {

[email protected]

}

notification_email_from [email protected] host

smtp_server localhost

smtp_connect_timeout 30

router_id  K1

}

默认的配置文件中,使用第三方smtp服务器,但这在现实中几乎没有意义(需要验证的原因),我们将其指定为localhost, 将通知信息的发送交给本地sendmail服务处理。查阅说明文档得知route_id配置是为了标识当前节点,我将其设置为K1。当然两个节点的此项设置可相同,也可不相同。

vrrp_instance VI_1 {

state MASTER   #指定A节点为主节点 备用节点上设置为BACKUP即可

interface eth0   #绑定虚拟IP的网络接口

virtual_router_id 51  #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组

priority 100   #主节点的优先级(1-254之间),备用节点必须比主节点优先级低,优先级数字越大优先级越高。

advert_int 1   #组播信息发送间隔,两个节点设置必须一样

authentication {   #设置验证信息,两个节点必须一致

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.0.60/24 #指定虚拟IP, 两个节点设置必须一样

}

}

vim编辑:当前行到最后一行,开头加#号。

:.,$s/^/#/g

vim取消高亮

:nohl

默认的配置文件中,竟然没有子网掩码,从而导致使用了默认子网掩码255.255.255.255,有可能导致无法从其它机器访问虚拟IP(keepalived虚拟IP无法ping通)所以尽量指定子网掩码/24即可。

按同样的方法配置节点node2并修改配置文件,可将node1节点的配置文件复制到node2节点,并修改以下几项: 
2,节点node2配置

router_id  NodeB

state   BACKUP

priority   99

其它项不必修改。

测试及验证:拔掉节点node1的网线,就发现虚拟IP已经绑定到节点node2上,再恢复node1节点的网线,虚拟IP又绑定回节点node1之上。

启动keepalived,查看网卡信息:排错可以使用日志:/var/log/message.

3,使用脚本防止脑裂。

目的,当两个节点 ,哪个不能ping通网关的时候,必然不会成为主节点。

这种方式存在恼裂的可能,即两个节点实际都处于正常工作状态,但是无法接收到彼此的组播通知,这时两个节点均强行绑定虚拟IP,导致不可预料的后果。 
这时就需要设置仲裁,即每个节点必须判断自身的状态(应用服务状态及自身网络状态),要实现这两点可使用自定义shell脚本实现,通过周期性地检查自身应用服务状态,并不断ping网关(或其它可靠的参考IP)均可。当自身服务异常、或无法ping通网关,则认为自身出现故障,就应该移除掉虚拟IP(停止keepalived服务即可)。

假设节点node1和node2组成主备关系,node1为备用节点,B为主节点,那么当在图标黄叉位置发生网络故障时,节点node1接收不到节点node2的组播通知,将抢占虚拟IP。这时出现的后果就是节点A和节点B均拥有虚拟IP,就可能导致了脑裂。所以我们以网关IP连通性作为参考,可避免此问题产生。

主要借助keepalived提供的vrrp_script及track_script实现:

在keepalived的配置文件最前面加入以下代码,定义一个跟踪脚本: 
vrrp_script check_local { #定义一个名称为check_local的检查脚本

    script "/usr/local/keepalived/bin/check_local.sh" #shell脚本的路径

    interval 5  #运行间隔

}

再在vrrp_instance配置中加入以下代码使用上面定义的检测脚本:

track_script {

check_local

}

我们在/usr/local/keepalived/bin/check_local.sh定义的检测规则是:

1.  自身web服务故障(超时,http返回状态不是200)

2.  无法ping通网关

3.  产生以上任何一个问题,均应该移除本机的虚拟IP(停止keepalived实例即可)

但这里有个小问题,如果本机或是网关偶尔出现一次故障,那么我们不能认为是服务故障。更好的做法是如果连续N次检测本机服务不正常或连接N次无法ping通网关,才认为是故障产生,才需要进行故障转移。另一方面,如果脚本检测到故障产生,并停止掉了keepalived服务,那么当故障恢复后,keepalived是无法自动恢复的。我觉得利用独立的脚本以秒级的间隔检查自身服务及网关连接性,再根据故障情况控制keepalived的运行或是停止。

示例:当192.168.0.22不能PING通,自动取消绑定的VIP。

脚本:

配置ping网关:192.168.0.22

设置其中node2 不能ping通。

这样以后,即使node1主节点故障,node2也不会替代。


4,总结:

1,node1主节点,node2备用节点,node1节点故障,node2成为主节点;

2,为防止脑裂,即node1主节点和node2备节点,因为某种原因比如网络故障,不能彼此交换信息,这样,备用节点node2将也会绑定VIP,如此即node1,node2都绑定了VIP,将造成未知故障,因此使用脚本方式能够自身判断自己的情况,依据脚本判断自身是否替代主节点。

时间: 2024-10-18 05:07:30

L10 keepalived 基本使用(主备模式)的相关文章

【 Keepalived 】Nginx or Http 主-备模式

一.主-备模式: 操作系统:centos 6.4 x64 ka1: 192.168.2.10 ka2: 192.168.2.11 vip: 192.168.2.200 ka1-master服务器配置 [ka1 [email protected]192.168.2.10 ~]#yum install httpd keepalived -y # 这里使用apache代替nginx,效果是一样的,然后直接yum安装keepalived [ka1 [email protected]192.168.2.1

Nginx + Keepalived(主备模式)实现负载均衡高可用浅析

概述 目前关于负载均衡和高可用的架构方案能找到相当多且详尽的资料,此篇是自己学习相关内容的一个总结,防止将来遗忘再次重新查找资料,也避免踩相同的坑. 此次配置的负载均衡与高可用架构:Nginx + Keepalived(主备模式),Nginx 使用反向代理实现七层负载均衡. 众所周知,Nginx 是一款自由的.开源的.高性能HTTP服务器和反向代理服务器,也是一个IMAP.POP3.SMTP代理服务器. 也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行HTTP服务处理,也可以

LVS+Keepalived负载均衡主备

LVS+Keepalived 介绍LVSLVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.目前有三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR):十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq). KeepalviedKeepalived在这里主要用作RealServer的健康状态检查以及LoadBal

keepalived + lvs + nginx 主备配置案例

一.keepalived lvs 集群1.结构2.主备修改内核参数net.ipv4.ip_forward = 1net.ipv4.ip_nonlocal_bind = 1net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2 注:如果遇到提示是缺少包,yum 安装即可 3.启动keepaliv

redis演练(6) redis复制(主备模式)

redis是一款面向分布式的Nosql产品,天生对主备模式有很好的支持,而且配置一套完整的主备模式,非常简单.针对redis,主备模式配置非常简单,但线上意义重大. 主要内容 1.CAP理论 2.简单redis的复制原理 3.redis replaction相关配置参数解析 4.配置星型模型主备模式 5.配置有向无欢模型主备模式 1.研磨redis的复制与集群概念 redis的复制与集群,刚开始我把两者闹了个误会,在不断深入学习过程中及时改正了. 简单区分一下. redis复制:可以理解为把re

centos6上实现双网卡绑定-主备模式

网卡绑定,将多块物理网卡绑定,对外呈现为一块逻辑网卡.这样做的好处一是增加带宽,二是提供冗余增加安全性.一般多用棱块网卡做绑定. 常见的网卡绑定模式有如下三种: mode0:轮询链路 mode1:主备链路 node3:广播链路 绑定后多块网卡对外提供一个ip地址个一个mac地址 本实验中以model1为例进行操作: 第1步: 在/etc/sysconfig/network-scripts/目录下创建绑定网卡文件,如 ifcfg-bond0 第2步; 编辑ifcfg-bond0 DEVICE=bo

Linux RHEL6.4绑定双网卡主备模式

1.查看服务器版本 lsb_release -a 2.然后进入网卡信息目录:cd /etc/sysconfig/network-scripts 3.接着我们要新建一个文件,文件名为ifcfg-bond0,可以通过三种方式来创建. (vi ifcfg-bond0; touch ifcfg-bond0; cp ifcfg-eth0 ifcfg-bond0)这里我选择最后一种 执行 cp ifcfg-eth0 ifcfg-bond0 后在 /etc/sysconfig/network-scripts目

CentOS6.5和CentOS7.0双网卡主备模式配置

双网卡主备模式配置(bond0) 1     简述 通过双网卡设置主备模式,实现当一块网卡宕掉时,另外一块网卡可以自动顶替宕掉的网卡工作,保障网络正常访问. 2     实现 2.1.  查看网卡信息 执行ifconfig -a命令 2.2.  修改网卡配置文件 切换工作目录 cd /etc/sysconfig/network-scripts/ 修改网卡配置文件ifcfg-eth0 ,保证以下几项内容正确: TYPE=Ethernet BOOTPROTO=dhcp ONBOOT=yes MAST

centos7 搭建双网卡bond1(主备模式)实例

前景须知: 在redhat6 中网卡叫bond,在redhat7及centos7中改名team,此处只记录centos7中双网卡主备搭建过程. 应用情景:实现网络的高可用,防止一条网线或交换机故障影响该物理机进行数据交互 此次环境是由于在上线业务之前是没有做Team的 ,现在由于要撤掉交换机过程期间需要将网线连接到另外一台交换机,为了防止数据中断,因此采用Team主备模式,这样断掉一个网卡就不影响业务,测试发现重启网卡时候会有3到4个丢包 环境:centos7  网卡1 ens192  网卡2