`
kavy
  • 浏览: 887993 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Keepalived工作原理及应用

 
阅读更多

  对于Linux而言,搭建高可用性集群服务器环境的方案丰富多彩,因为有太多优秀的机制性软件供我们选择。今天我们来认识keepalived。 

        Keepalived简介:keepalived是一款失效转发机制的软件, 它的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。 

        Keepalived工作原理: 


        图中主服务器和备服务器都装了keepalived软件,将keepalived配置成Master的便成了主服务器,将keepaliv-ed配置成BACKUP的自然就成了备服务器。主备服务器都通过keepalived绑定有相同的虚拟ip,外界就是利用这个虚拟ip与服务器进行交互的。正常情况下只有主服务器work,当主服务器宕机或者出现其他故障时Keepalived会将work转移到备服务器上,虚拟ip依然有效。当主服务器修复好了备用服务器会自动将work权利重新交给主服务器。 

        Keepalived的作用:通过它的工作原理我们可以看出keepalived的作用:防止单点,故障转移一步到位,丝毫不影响外界与服务器之间的交互,对我们搭建高可用性的集群服务器有一定的帮助。 

        Keepalived安装配置:跟多数软件一样,keepalived也有源码安装、apt-get安装等多种安装方式。我用的是偷懒式的安装方式。(主备服务器用同样的安装方式) 
        安装:apt-get install keepalived //如果机器的外围配置没问题的话,这种安装方会非常的顺利。 
        配置:最重要的步骤当然是配置。keepalived的核心配置文件是keepalived.conf, 为了方便配置我们可以将它cp至/etc/keepalived/,下面展示的是配置成功的keep- alived.conf文件的部分,/etc/keepalived/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 192.168.200.1 
   smtp_connect_timeout 30 
   router_id LVS_DEVEL 


vrrp_instance VI_1 { 
    state MASTER  // 这里决定本服务器是主还是备 
    interface eth0 
    virtual_router_id 51 
    priority 100 
    advert_int 1 
    authentication { 
        auth_type PASS 
        auth_pass 1111 
    } 
    virtual_ipaddress {  // 这里就是神奇的虚拟ip了,可以是一个或多个 
        192.168.20.16 
        192.168.20.17 
        192.168.20.18 
    } 

……

…… 

        后面的配置信息没有手动配置过,也没有研究过,就不写了。 需要说明的是,备份服务器上的配置文件跟主服务器上的配置文件并没有太大的差别。我仅仅是将MASTER改写成了SLAVE。当然,配置文件千变万化,它跟性能或者功能扩展都是直接挂钩的。 
        说明:想对参数进行理解,请参考此博客:http://blog.myspace.cn/e/406528085.htm  
        源码安装keepalived参照此博客:http://doc.chinaunix.net/linux/201003/442056.shtml

 
        启动或者停止keepalived服务: /etc/init.d/keepalived start、restart、stop。只要提示OK并且运行到后台就表示启动成功了。当然主从都得启动。 
       说明:keepalived的配置模式除了MASTER<—>SLAVE外,还可以配置成MASTER<—>MASTER。 

        Keepalived测试: 
主服务器:192.168.20.213(名称:root@serv3) 
备服务器:192.168.20.214(名称:root@ubuntu-server211) 
确定主从都起好keepalived服务后,在主服务器做如下测试: 
        一, 看看它们的工作机制:虚拟ip切换及work切换 
----213(MASTER)的信息: 
root@serv3:~# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 
    link/ether 00:16:ec:bc:2e:92 brd ff:ff:ff:ff:ff:ff 
    inet 192.168.20.213/24 brd 192.168.20.255 scope global eth0 
    //下面这片蓝色的ip都是配置在keepalived中虚拟ip。可以看到,keepalived服务启动后它们已经成功的绑定在了网卡上。 
    inet 192.168.20.16/32 scope global eth0 
    inet 192.168.20.17/32 scope global eth0 
    inet 192.168.20.18/32 scope global eth0 
    inet6 fe80::216:ecff:febc:2e92/64 scope link 
       valid_lft forever preferred_lft forever 
root@serv3:~# 

----214(SLAVE)的信息: 
root@ubuntu-server211:~# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
    // 虽然在214上的keepalived也绑定了跟213相同的虚拟ip,不过作为SLAVE角色的214是不会跟MASTER的213一起工作的,所以此时网卡上并没有绑定虚拟ip 
    link/ether 00:25:11:e6:44:95 brd ff:ff:ff:ff:ff:ff 
    inet 192.168.20.214/24 brd 192.168.20.255 scope global eth0 
    inet6 fe80::225:11ff:fee6:4495/64 scope link 
       valid_lft forever preferred_lft forever 
root@ubuntu-server211:~# 

----我们将213(MASTER)的keepalived服务停掉,再来看ip a 
root@serv3:~# /etc/init.d/keepalived stop 
* Stopping keepalived keepalived                                                                                                     [ OK ] 
root@serv3:~# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000    
    //当213(MASTER)上的keepalived服务停止之后,绑定在213上的虚拟ip也消失了。 
    link/ether 00:16:ec:bc:2e:92 brd ff:ff:ff:ff:ff:ff 
    inet 192.168.20.213/24 brd 192.168.20.255 scope global eth0 
    inet6 fe80::216:ecff:febc:2e92/64 scope link 
       valid_lft forever preferred_lft forever 
root@serv3:~# 

----213(MASTER) keepalived 停止后来看看 214(SLAVE)上面的ip a信息 
root@ubuntu-server211:~# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
    inet 127.0.0.1/8 scope host lo 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
    link/ether 00:25:11:e6:44:95 brd ff:ff:ff:ff:ff:ff 
    inet 192.168.20.214/24 brd 192.168.20.255 scope global eth0 
    //发现了吗!虚拟ip已经跑在了214(SLAVE)上,因为213(MASTER)的keepalived此时处于停止状态。 
    inet 192.168.20.16/32 scope global eth0 
    inet 192.168.20.17/32 scope global eth0 
    inet 192.168.20.18/32 scope global eth0 
    inet6 fe80::225:11ff:fee6:4495/64 scope link 
       valid_lft forever preferred_lft forever 
root@ubuntu-server211:~# 

----当213(MASTER)修复好了,启动keepalived时,它们之间的work状态又会切换过来。 

        二,看看它对正常业务的影响

        以访问两台机器上的glassfish服务器为例,Glassfish经常用来当作是web或者ejb项目的应用服务器。用Windows机器(192.168.20.19)当作客户端通过虚拟ip访问glassfish。 
----213(MASTER) 214(SLAVE)的keepalived服务都启动正常时。 



----当213(MASTER)的keepalived或者glassfish服务停止时。 


----当214(SLAVE)的keepalive服务也停止时 


测试结论:证明了keepalived工作原理的真确性。 

测试过程中其中有两个虚拟ip跟本地同事的开发用Pc ip相同,所以访问不了。因为http默认访问的是本地的ip地址,而本地ip地址却没有开glassfish服务。这种问题在配置keepalived的时候是可以避免的,杜绝虚拟ip跟本地ip相同。 

 

http://liuanhuaming.iteye.com/blog/833655

分享到:
评论

相关推荐

    keepalived配置及典型应用案例

    【标题】"Keepalived配置及典型应用案例"主要涵盖了Keepalived的配置方法和它在实际场景中的应用。Keepalived是一款开源的网络服务高可用性(HA)工具,常用于实现Linux环境下的负载均衡和故障转移。它基于VRRP协议...

    keepalived-2.2.7.tar.gz

    在这个主题中,我们将围绕keepalived-2.2.7版本展开讨论,深入了解其核心功能、工作原理及配置方法。 一、Keepalived概述 Keepalived的设计初衷是为了配合LVS(Linux Virtual Server)工作,提供一种简单而高效的...

    Linux开源集群架构之keepalived应用详解

    ##### 1.2 Keepalived的工作原理 Keepalived基于三层、四层和五层的检测机制来监控服务器状态: - **Layer3(第三层)**:通过发送ICMP数据包(即Ping请求)来检查服务器的IP地址是否可达。如果发现某个IP地址无法...

    keepalived

    #### 四、Keepalived工作原理 Keepalived通过VRRP协议实现高可用性。VRRP是一种选择协议,它允许一组路由器中的一个或多个备份路由器准备好接替主路由器的功能。当主路由器发生故障时,备份路由器会接管主路由器的...

    Keepalived权威指南中文

    本书首先会详细介绍Keepalived的基本概念和架构,包括其核心组件如Health Check(健康检查)、Virtual IP(VIP,虚拟IP)和VRRP的工作原理。Health Check是Keepalived通过定期发送探测请求来确认服务是否正常运行的...

    keepalived 书册

    5. 故障转移框架(VRRP框架)部分详细解释了keepalived在故障转移场景中的角色和工作原理。 6. 安装keepalived部分讲解了如何安装keepalived软件。 7. keepalived配置概要部分详细介绍了全局定义、虚拟服务器定义和...

    mysql_双主+keepalived读写分离.docx

    Keepalived 工作在 IP/TCP 协议栈的 IP 层、TCP 层、及应用层。Layer3 使用 ICMP 数据包来检测服务器的状态,Layer4 主要以 TCP 端口的状态来决定服务器工作正常与否,Layer5 工作在具体的应用层,检查用户设定的...

    keepalived-1.3.4.tar.gz

    在这个主题中,我们将围绕keepalived的1.3.4版本展开讨论,深入了解其核心功能、工作原理以及配置方法。 一、Keepalived的基本概念 Keepalived的诞生是为了补充和增强LVS(Linux Virtual Server)的功能,使其具备...

    Keepalived权威指南中文.pdf

    VRRP的工作原理主要基于以下几点: - **选举机制**:每个VRRP组中的路由器根据配置的优先级进行选举,优先级高的路由器成为主路由器。 - **多播地址**:VRRP使用多播地址224.0.0.18进行通信,路由器通过发送VRRP...

    (带目录版)MySQL LVS+Keepalived+MHA 高可用群集 应用部署操作手册

    #### MHA 架构介绍与工作原理 - **MHA(Master High Availability)概述** - MHA 是一套用于MySQL高可用环境下的故障切换和主从提升方案,由日本开发者youshimaton创建。它能够在0~30秒内自动完成故障切换,并尽力...

    keepalived安装包

    【Keepalived的工作原理】 Keepalived的核心机制是VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)。它创建了一个虚拟路由器角色,由多个真实服务器共享,当主服务器失效时,备份服务器会接管这个...

    Keepalived以及LVS完全使用指南

    Keepalived原理** 4.1 **VRRP的MASTER/BACKUP原理**: - **协议**:VRRP是一种选举协议,确保虚拟路由器的高可用性。 - **Master选举**:根据优先级确定主服务器。 - **主备模式**:主服务器负责转发流量,备...

    LVS负载均衡软件Keepalived高可用:keepalived-2.0.10

    本文将深入探讨Keepalived的核心功能、工作原理以及如何与其他服务如Nginx、Haproxy、MySQL等结合,构建高效、可靠的分布式系统。 首先,Keepalived的核心功能包括健康检查、故障转移和负载均衡。它通过监控服务...

    MySQL LVS+Keepalived+MHA 高可用群集 应用部署操作手册

    **工作原理**: 1. **保存崩溃主服务器上的二进制日志事件**:当检测到主数据库故障时,MHA会尝试从故障主机上保存最新的二进制日志(binlog),以便后续使用。 2. **识别含最新更新的从服务器**:确定哪个从服务器...

    keepalived快速入门

    #### 三、Keepalived的工作原理 - **三层监控**:Keepalived可以在TCP/IP模型的第三层进行监控,主要关注网络层的连通性和可达性。 - **四层监控**:在第四层进行监控时,Keepalived可以检测端口和服务的健康状况...

    keepalived-2.2.2.tar.gz

    本文将深入探讨Keepalived 2.2.2版本的核心特性、工作原理及其在Linux系统中的具体应用。 1. Keepalived的核心功能 Keepalived的主要任务是监控和管理网络服务,当主服务器出现故障时,它可以迅速将流量切换到备用...

    keepalived1.4.3

    【Keepalived 1.4.3 在 CentOS 7.4 上的配置与应用】 Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol)协议实现的...同时,理解 Keepalived 的工作原理和 VRRP 协议是确保系统高可用性的重要基础。

    keepalived安装包以及配置文件.zip

    【标题】"keepalived安装包以及配置文件.zip" 提供了有关keepalived软件的安装包和配置文件,这是一款广泛应用于Linux平台的高可用性(High Availability, HA)解决方案,它主要用于实现负载均衡(Load Balancing)...

    keepalived权威指南

    在本章节中,我们将深入探讨VRRP的工作原理及其在Keepalived中的应用。 ### VRRP概述 VRRP是一种被设计用于增强网络可靠性的协议,它允许一组路由器共享一个虚拟IP地址,从而在主路由器故障时能够无缝地切换到备份...

Global site tag (gtag.js) - Google Analytics