博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
keepalived配置文件解析系列之(一)keepalived简介及配置文件介绍
阅读量:5926 次
发布时间:2019-06-19

本文共 2220 字,大约阅读时间需要 7 分钟。

一、 keepalived简介

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

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

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

转载于:https://www.cnblogs.com/quiet/archive/2012/03/18/2404826.html

你可能感兴趣的文章
高阳:数据决策的艺术
查看>>
今儿个咱说说《不安全的直接对象引用》!
查看>>
Base64开发者须知
查看>>
提升体验,微软在 VSCode 中引入了 Python 语言服务器
查看>>
HTML5 天气预报应用
查看>>
CSS进阶篇--fontAwesome代替网页icon小图标
查看>>
RDIFramework.NET — 基于.NET的快速信息化系统开发框架 — 系列目录 ...
查看>>
Linux基础命令---arping
查看>>
2018年阿里云NoSQL数据库大事盘点
查看>>
对Javascript“闭包”的简单理解
查看>>
07.Java类加载问题
查看>>
原创C#多数据库组件(SQL+Oracle+MySQL)及用户操作手册|CSFramework.DB.dll ...
查看>>
Flask 教程 第二十章:加点JavaScript魔法
查看>>
APT案例之点击事件
查看>>
专访熊节:编程其实是个社会活动
查看>>
转义符与运算符
查看>>
深入解析:从源码窥探MySQL优化器
查看>>
使用Volley传输网络数据
查看>>
mysql优化
查看>>
论如何安心过大年-MySQL巡检篇
查看>>