`
kavy
  • 浏览: 866087 次
  • 性别: 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

分享到:
评论

相关推荐

    Linux中Keepalived服务器的搭建

    keepalived服务器集群应用,本实验建立在本空间《Keepalived+nginx负载/反向代理tomcat之-Keepalived》已有环境之上。关于TUN模式仅仅论述其原理。本实验关于服务器IP地址和指定网关的步骤省略,但要记得配置。

    第三十三章:Keepalived应用部署1

    二、设计原理 三、案例:Keepalived实现双机热备 一、keepalived概述:概述:keepalived起初为Lvs设计的一款强大的辅助工具,保证Lv

    lvs+keepalives部署.txt

    Layer3,4,5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下: Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果...

    HA-service-with-keepalived:1062 LSA

    Keepalived原理Keepalived的实现基于VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议),而VRRP是为了解决静态路由的高可用。 VRRP的基本架构如图所示:VRRP简介(转发机制) VRRP 将可以承担网关...

    linux集群应用实战

    第1讲 iscsi的概念、组成和工作原理 课程目标:了解iscsi的组成和工作原理。 课程内容: iscsi的概念。 iscsi的组成。 iscsi的工作原理。 第2-3讲 基于iscsi的ip san存储系统 课程目标: 能熟练搭建基于iscsi...

    系统架构设计-负载均衡和高可用(Apache反向代理多种模式/KEEPALIVED+LVS)

    目录: 负载均衡技术介绍 什么是负载均衡? 负载均衡算法原理 负载均衡应用模式 高可用的系统设计 什么是系统高可用性? 高可用的模式 系统高可用设计 ...高可用方案及实践 ... Keepalived +LVS 高可用应用集群

    Java思维导图xmind文件+导出图片

    应用容灾及机房规划 系统动态扩容 分布式架构策略-分而治之 从简到难,从网络通信探究分布式通信原理 基于消息方式的系统间通信 理解通信协议传输过程中的序列化和反序列化机制 基于框架的RPC通信技术 ...

    高性能Linux服务器构建实战:运维监控、性能调优与集群应用

    Web应用篇详细介绍了Nginx、Varnish和Memcached这三款Linux服务器上极为常用的Web应用软件的安装、配置、管理、使用方法、工作原理和性能调优技巧。数据备份与恢复篇首先讲述了开源备份软件bacula的使用与管理技巧,...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    1.3 Nginx的模块与工作原理 1.4 Nginx的安装与配置 1.4.1 下载与安装Nginx 1.4.2 Nginx配置文件的结构 1.4.3 配置与调试Nginx 1.4.4 Nginx的启动、关闭和平滑重启 1.5 Nginx常用配置实例 1.5.1 虚拟...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    31-heartbeat和keepalived的应用场景区别.avi 32-heartbeat服务生产环境下维护要点.avi 33-heartbeat服务生产环境维护FAQ.avi 第十三部 MySQL高可用工具drbd实战(18节) 01-drbd服务介绍.avi 02-drbd的工作原理...

    linux tcp keepalive存活代码设置

    原理是:对于一个已经建立的tcp连接。如果在keepalive_time时间内双方没有任何的数据包传输,则开启keepalive功能的一端将发送 eepalive数据包,若没有收到应答,则每隔keepalive_intvl时间再发送该数据包,发送...

    MySQL数据库的高可用方案总结

    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法发...

Global site tag (gtag.js) - Google Analytics