HA(High available)-Keepalived高可用性集群

 

Keepalived 是一个基于VRRP虚拟路由冗余协议来实现的WEB 服务高可用方案,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP),类似于工作在3,4,5层的交换机软件。利用其来避免单点故障

keepalived 软件期初设计专为解决LVS负载均衡软件设计的。用来管理和监控LVS集群系统中的各个服务节点的状态,后来加入可以实现高可用的vrrp功能,因此keeplived软件不仅可以管理LVS软件外还可以,作为其他服务(Nginx Haproxy mysql等的高可用解决方案)的软件。
keepalived 功能:

1.管理LVS负载均衡软件。

2.实现对lVS集群节点健康检查功能(healthcheck).

3作为系统网络服务的高可用功能(failover)

配置服务原理以web服务为例 :一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服 务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。


keepalived和heartbeat区别

 

Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);

Heartbeat是基于主机或网络服务的高可用方式;

keepalived的目的是模拟路由器的双机[前端]

heartbeat的目的是用户service的双机[服务]

lvs的高可用建议用keepavlived

业务的高可用用heartbeat


VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。

VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。 Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
测试环境如下
两台物理服务器和一个虚拟服务器(vip):
master:redhat 6.5 eth1  192.168.1.105
backup: redhat 6.5 eth1  192.168.1.106
vip: 192.168.1.100


测试环境的网络图如下:

+---------------------------VIP(192.168.1.100)----------------------+  

|                                                                                              |

|                                                                                              |

Server[master]<----------------keppalived------------------>server[BACKUP]

 eth0:192.168.1.105                                                      eth0:192.168.1.106


节点A 192.168.1.105(主节点), 节点B 192.168.1.106(备用节点),虚拟IP(对外提供服务的IP 192.168.1.100)
在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。
当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。
keepalived的原理可以这样简单理解:
keepalived安装在两台物理服务器上,并相互监控对方是否在正常运行。
当节点A正常的时候:节点A上的keepalived会将下面的信息广播出去:
192.168.1.100 这个IP对应的MAC地址为节点A网卡的MAC地址
图中的其它电脑如客户端和NodeB会更新自己的ARP表,对应192.168.8.100的MAC地址=节点A网卡的MAC地址。
当节点A发生故障的时候,节点B上的keepalived会检测到,并且将下面的信息广播出去:
192.168.1.100 这个IP对应的MAC地址为节点B网卡的MAC地址
图中的其它电脑如客户端会更新自己的ARP表,对应192.168.1.100的MAC地址=节点B网卡的MAC地址。


配置如下:

>/etc/keepalived/keepalived.conf 清除原配置文件内容。

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

1335234172@qq.com

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id wyl01

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 55

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.100/24 dev eth0 label eth0:1

}

}

保存退出。


配置备节点,主备节点配置大致相同,只需更改:

router_id wyl01

state MASTER

priority 100

为:

router_id wyl02

state BACKUP

priority 99

保存即可。


说明:

! Configuration File for keepalived

global_defs {

   notification_email {

     1335234172@qq.com

   }

   notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id wyl01   id为wyl01必须唯一,不同的keepalived.conf此处的ID必须唯一

}

vrrp_instance VI_1 {  实例名为VI_1,相同实例的备节点要和这个名字相同。

state MASTER  节点状态为MASTER 备节点状态应该为BACKUP

    interface eth0 通讯接口为eth0

    virtual_router_id 55  实例ID为55 keepalived.conf 里唯一。

    priority 100  优先级为100,备节点的优先级必须比这个低

    advert_int 1    通讯检查时间间隔为1s

    authentication {

        auth_type PASS  PASS为认证类型,此参数主备节点必须相同

        auth_pass 1111  密码1111 准备节点必须相同

    }

    virtual_ipaddress {

                192.168.1.100/24 dev eth0 label eth0:1

    }

}

虚拟ip即vip为192.168.1.100,子网掩码为24,绑定接口为eth0 别名为eth0:1 次参数准备节点相同


启用服务主备keepalived ,和nginx :

/etc/init.d/keepalived start

service nginx start

查看备节点ip :ip arrd |grep eth0:1

显示有记录,查看备节点显示无此记录

如果备节点中出现eth0:1说明keepalived 配置不正常。高可用裂脑了,可逐步排除。

浏览器访问192.168.1.100 显示正常。


测试主备切换

停到主节点,理论:切换到备服务

service keepalived stop

查看备节点ip :ip addr |grep eth0:1

备节点显示正常,浏览器测试:ok


测试2

重新开启主节点 理论:备接节点vip失效,主节点重新接管。

service keepalived start

查看主节点ip 浏览器访问

显示正常。

查看备节点ip

ip显示正常。

Keepalived 主备单实例实验完结。


keepalived 双实例双主模式配置

keepalived 双主模式原理 :A业务在wyl01上是主模式。在wyl02上是备模式。而B业务,在wyl01上是备模式,在wyl02上是主模式。配置只需要在单实例的基础上增加一个vrrp_instance VI_2实例即可。

在wyl01上配置如下:

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

1335234172@qq.com

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id wyl01

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 55

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.100/24 dev eth0 label eth0:1

}

}

vrrp_instance VI_2 {

     state BACKUP

     interface eth0

     virtual_router_id 55

     priority 99

    advert_int 1

    authentication {

    auth_type PASS

     auth_pass 1111

     }

     virtual_ipaddress {

192.168.1.10/24 dev eth0 label eth0:2

  }

}

保存退出即可。


在wyl02配置如下:

vim /etc/keepalived/keepalived.conf

 ! Configuration File for keepalived

 global_defs {

notification_email {

 1335234172@qq.com

 }

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id wyl02

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 55

priority 99

advert_int 1

authentication {

auth_type PASS

 auth_pass 1111

     }

virtual_ipaddress {

192.168.1.100/24 dev eth0 label eth0:1

  }

}

vrrp_instance VI_2 {

     state MASTER

     interface eth0

     virtual_router_id 55

     priority 100

    advert_int 1

    authentication {

    auth_type PASS

     auth_pass 1111

     }

     virtual_ipaddress {

192.168.1.10/24 dev eth0 label eth0:2

  }

}

保存退出即可。

启动keeplived服务测试成功。


RRP虚拟路由冗余协议简介

路由中VRRP工作工作原理:
虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,

1.路由器开启VRRP功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为主用路由器,优先级低的成为备用路由器。主用路由器定期发送VRRP通告报文,通知备份组内的其他路由器自己工作正常;备用路由器则启动定时器等待通告报文的到来。

2。在抢占方式下,当主用路由器收到VRRP通告报文后,会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级,则成为主用路由器;否则将保持备用状态。(在非抢占方式下,只要主用路由器没有出现故障,备份组中的路由器始终保持主用或备用状态,备份组中的路由器即使随后被配置了更高的优先级也不会成为主用路由器。)

3.如果备用路由器的定时器超时后仍未收到主用路由器发送来的VRRP通告报文,则认为主用路由器已经无法正常工作,此时备用路由器会认为自己是主用路由器,并对外发送VRRP通告报文。备份组内的路由器根据优先级选举出主用路由器,承担报文的转发功能。
VRRP它是通过竞选机制将路由的任务交给某台VRRP路由器的。实现虚拟路由功能的。
VRRP 采用多播的方式默认多播地址:224.0.0.18.实现高可用之间通讯的。


keepalived 工作原理

keepalived是通过vrrp进行通信的,vrrp通过竞选机制来确定主备的,主的优先级高于备。因此工作中主会优先获得所有资源。备节点处于等待状态。当主宕掉后,备节点收不到报文就会重新参与竞选,优先级最高的则接管主节点的资源。顶替主节点对外 服务。
在keeplived服务对之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包文时,就会启动相关服务接管资源。保证业务的连续性。

HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级的更多相关文章

  1. Nginx+keepalived 脚本安装主从双机热备自动切换解决方案

    Nginx+keepalived 脚本安装主从双机热备自动切换解决方案 2013-07-02 19:24:13 标签:filesnginx keepalived 原创作品,允许转载,转载时请务必以超链 ...

  2. ansible自动部署Keepalived实现Nginx服务双机热备

    脚本实现通过ansible-playbook自动化安装Keepalived和配置,主要解决问题如下: Keepalived自动化安装: keepalived_vrid配置,自动根据vip获取最后一段作 ...

  3. 使用keepalived监控tomcat 达到双机热备

    通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务. 当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.下面来以keepalived结合to ...

  4. KeepAlived+HaProxy+MyCat+Percona双机热备PXC集群

    一.搭建PXC集群 1.环境:centos7+PXC5.7.21+mycat1.6.5 2.卸载mariadb rpm -qa | grep mariadb* yum -y remove mariad ...

  5. spark、standalone集群 (2)集群zookeeper 热备

     测试 cmd     spark-examples-1.6.0-hadoop2.6.0.jar   spark 2.0以后  就没有这个 jar.需要下载 ./bin/spark-submit -- ...

  6. keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群

    本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可 ...

  7. 物联网架构成长之路(9)-双机热备Keepalived了解

    1. 前言 负载均衡LB,高可用HA,这一小结主要讲双机热备方案保证高可用.这里选择Keepalived作为双机热备方案,下面就对具体的配置进行了解.2. 下载Keepalived wget http ...

  8. oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)

    Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...

  9. 两台linux利用heartbeat+drbd 完美实现双机热备

    一直想做基于linux的双机热备,一直没有时间和机会.一直以为只要做双机热备的实验就必须两台机器外接一个存储.甚至一个月以前在学习keepalived的时候还在琢磨keepalvied去掉哪些条件可以 ...

随机推荐

  1. 【bzoj1798】维护序列

    线段树维护两个标记. *0的操作在实质上没有任何影响. #include <cstdio> #include <cctype> #define rep(i,a,b) for ( ...

  2. (Python)导出指定文件夹中as文件的完全限定类名

    AS3程序在编译的过程中,有一个特点是这样的,不管是项目中的类,还是标准库或者第三方库的类,编译的时候只会把用到的那些类文件编译进去,也就是说,某一些类,只要没有被主程序引用到,那这个文件是不会被编译 ...

  3. UIScrollView 原理详解

    转载此文章原因:web页面在ipad的app中总是有橡皮筋效果,使用iscroll虽然能解决橡皮筋想过,但是滚动层内的元素事件都无法触发.故同安卓和ios一样使用后台解决...红色的为解决方案.. S ...

  4. GCC选项 –I,-l,-L

    -I:指定第一个寻找头文件的目录 -L:指定第一个寻找库文件的目录 -l:表示在库文件目录中寻找指定的动态库文件 例: gcc –o hello hello.c –I /home/hello/incl ...

  5. 找做IT的男朋友会不会没有隐私

    找做IT的男朋友会不会没有隐私你不觉得自己在网上不断的“秀”啊,“晒”啊的行为才是根本所在吗?你应该怕自己的这种行为才对吧-—————————————————————————————————————— ...

  6. Documentum常见问题11-xplore全文检索时找不到相关内容

    最近帮助同事处理了一个关于全文检索的问题,随手记录下来供以后参考. 问题一 某些Cabinet下的文件可以全文检索到,但某些Cabinet下的数据全文检索不成功. 新建了一个Docbase-AADCT ...

  7. 微信JS-SDK DEMO页面和示例代码

    <?php require_once "jssdk.php"; $jssdk = new JSSDK("yourAppID", "yourApp ...

  8. C语言基础--循环 递归打印乘法表

    for循环打印乘法表: #include <stdio.h> // for循环打印乘法表 int main(int argc, const char * argv[]) { //矩形 ; ...

  9. Android调用相册拍照控件实现系统控件缩放切割图片

    android 下如果做处理图片的软件 可以调用系统的控件 实现缩放切割图片 非常好的效果 今天写了一个demo分享给大家 package cn.m15.test; import java.io.By ...

  10. O365 "打开或关闭脚本"功能

    博客地址:http://blog.csdn.net/FoxDave 自定义功能是 SharePoint Online 最具吸引力的功能之一,因为它使管理员和用户可以调整网站和页面的外观以满足组织目 ...