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等拥有很多封装好的库可以使用。 具体的解析过程在接下来的文章里面会进行具体地分析。

  • 相关阅读:
    无限维
    黎曼流形
    why we need virtual key word
    TOJ 4119 Split Equally
    TOJ 4003 Next Permutation
    TOJ 4002 Palindrome Generator
    TOJ 2749 Absent Substrings
    TOJ 2641 Gene
    TOJ 2861 Octal Fractions
    TOJ 4394 Rebuild Road
  • 原文地址:https://www.cnblogs.com/quiet/p/2404826.html
Copyright © 2011-2022 走看看