zoukankan      html  css  js  c++  java
  • keepalived配置文件解析系列之(一)keepalived简介及配置文件介绍

    一、 keepalived简介

      为后端服务器提供健康检查(keepalived)和为负载均衡器提供失败切换(fail over)从某种意义上构成了服务器负载均衡(SLB, server load balance)的 一部分。以LVS(Linux  Virtual Server, 可参考项目主页http://www.linuxvirtualserver.org/)为代表的软件负载均衡服务器,以高性价比的方式解决了众多企业的需求。 而LVS + keepalived是常见的一种部署方式。

      健康检查和失败切换是keepalived(可参考项目主页http://www.linuxvirtualserver.org/)的两大核心功能。 所谓的健康检查, 就是采用tcp三次握手, icmp请求, http请求, udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活;而失败切换主要是应用于配置了主备模式的负载均衡器, 利用VRRP(虚拟路由冗余协议, 可参考RFC文档http://tools.ietf.org/html/rfc5798) 维持主备负载均衡器的心跳, 当主负载均衡器出现问题时, 由备负载均衡器承载对应的业务, 从而在最大限度上减少流量损失, 并提供服务的稳定性。

      LVS和keepalived都是开源的项目, 这意味着若有自己的个性化需求的话,可以基于两者进行二次开发, 从而以高性价比的方式解决相应的负载均衡的需求。

     二、 keepalived的配置文件介绍

      下面介绍的是keepalived的配置文件的格式, 以便为接下来从代码级别上分析配置文件的解析过程做准备。可以从源码的keepalived\etc\keepalived/keepalived.conf找到下面摘录的一段配置文件内容。 本文关注的是不是配置文件各选项的内容的含义, 而是该配置文件的特点和如何解析这样关键字分层的配置文件。 

    ! Configuration File for keepalived
    global_defs {
    notification_email {
    acassen@firewall.loc
    … …
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    }
    vrrp_instance VI_1 {
    state MASTER
    … …
    authentication {
    auth_type PASS
    … …
    }
    }
    virtual_server 192.168.200.100 443 {
        delay_loop 6
    … …
    real_server 192.168.201.100 443 {
    weight 1
    SSL_GET {
    url {
    path /
    digest ff20ad2481f97b1754ef3e12ecd3a9cc
    }
    connect_timeout 3
    … …
    }
    }
    }
    #include newfile
    include filename.conf

      如上所示, keepalived采用关键字分层的方式来组织配置文件, 在上面摘取的配置文件片段中,共有4层关键字,位于第零层的关键字有:global_defs, vrrp_instance,  vritual_server等, 位于第一层的关键字有:notification_email, state, delay_loop, real_server等, 位于第二层的关键字有weight, SSL_GET, 位于第三层的关键字有url等, 位于第四层的关键字有path, digest等。若把位于同一层的关键字组织成一个列表(或者叫向量vector), 则该列表具有这样的特性:它的每一个元素都是一个关键字, 而该关键字可能指向下一层的关键字列表,如此反复。

      keepalived的配置文件还支持include的用法, 可以在当前配置文件中用include newconf的方式包含下一个配置文件, 且下一个配置文件里面也可以用include包含下下一个配置文件。而且一个配置文件里面也可以用多个include语句包含多个配置文件进行。此外, keepalived还支持在传递配置文件名字时, 采用包含正则表达式的记法, 如:你可以传递一个”*.conf”作为配置文件的名字, 对应的是解析当前目录下所有以.conf结尾的文件。

    三、如何解析配置文件

      如上所述, keepalived在配置文件解析方面拥有非常灵活的方式, 采用关键字分层(每层的关键字数量不限,且关键字的层次也不限制)的方法进行组织一个配置文件, 且支持include语句和正则表达式记法的配置文件名, 要怎么设计才可以实现这样的功能? keepalived是用C语言实现的, 不像python等拥有很多封装好的库可以使用。 具体的解析过程在接下来的文章里面会进行具体地分析。

  • 相关阅读:
    【60.97%】【BZOJ 1925】 [Sdoi2010]地精部落
    【14.06%】【hdu 5904】LCIS
    【50.40%】【BZOJ 4553】[Tjoi2016&Heoi2016]序列
    【52.55%】【BZOJ 4520】K远点对
    洛谷——P2446 [SDOI2010]大陆争霸
    Python模块之re
    Docker从入门到实战
    分析增加站点权重的四大切入点(转载)
    远程桌面连接不上|windows server 2003 sp2 termdd.sys(转载)
    不同服务器数据库之间的数据操作(转载)
  • 原文地址:https://www.cnblogs.com/quiet/p/2404826.html
Copyright © 2011-2022 走看看