Keepalived 使用指南
Keepalived 使用指南
1. 简介
负载均衡是虚拟服务的一种好的处理方案。当设计一种负载均衡的拓扑时一定要考虑到如下两点:
真实服务器的可用性使用健康检测机制。
负载均衡器的可用性使用故障转移协议。
负载均衡真实服务,提供了一个全局的高可用虚拟服务。为增加负载均衡服务的可用性,需要检测每个真实服务器节点的状态。这个问题可以通过使用健康检测框架来操作一个服务器池来解决。
另一方面,当使用一个负载均衡器director,对虚拟服务引入了一个故障节点。因负载均衡器的高可用性必须被处理,使用专用的路由协议对director的故障转移/虚拟化。
Keepalived解决这两个问题:一方面,增加一个强壮和健壮的监控检测框架;另一方面,实现了一个热待机协议。这两个框架可以处理lvs框架来操作lvs真实服务器池,对lvs真实服务池的操作可以通过增加或者删除基于健康检测的真实服务器来完成。
2. 术语

LVS 代表了linux virtual Server. LVS 是linux 内核内嵌的一个负载均衡工具。更多信息参考工程主页:http://www.linux-vs.org. LVS作为一个网桥(通过nat)来负载均衡TCP/UDP流。LVS路由器组件如下:
- WAN 接口。可以被所有用户访问到的以太网接口控制器。
- LAN接口。管理所有负载均衡服务器的以太网接口控制器。
- linux内核。内核内嵌了最新的LVS,并且当作路由器的操作系统。
关键词:
LVS组件:
VIP: 可以被所有用户访问的虚拟IP,所有的用户通过这个IP访问服务器。
真实服务器:应用服务部署在真实的服务器上,处理用户的请求。上图中的web server1 和webserver2 即是。
服务器池:一组真实服务器。
虚拟服务器:被应用访问的服务器池地址。
虚拟服务: 关联到VIP的TCP/UDP服务。
VRRP 组件:
VRRP:虚拟路由器冗余协议是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台。
VRRP实例:a thread manipulating vrrpv2 specific set of ip addresses。
一个VRRP实例可以作为一个或者多个VRRP实例的备份。
IP地址拥有者:用户IP地址作为真实接口地址的VRRP实例。
主机状态:一种VRRP实例状态,当VRRP实例处于这种状态就可以认为关联此实例的IP地址负责处理发送的请求。
备机状态:一种VRRP实例状态,当当前的处于主机状态的VRRP实例宕机时,处于该状态的VRRP实例有能力处理发送来的请求。
真实负载均衡器:运行一个或者多个VRRP实例的一个LVS director。
虚拟负载均衡器:一组真实负载均衡器。
被同步实例:一个将要被同步的VRRP实例,被监控的VRRP实例。
通知:发送给处于一组处于主机状态的VRRP实例的一个简单VRRPv2包的名称。
3. 软件架构
3.1 全局和局部

软件架构涉及4个linux 内核组件:
- LVS核心框架:Kernel2.2使用setsockopt,kernel 2.4使用setsockopt netfilter。
- IPCHAINS 框架:kernel 2.2 LVS NAT架构使用内部的IPCHAINS 包装器来发送MASQ链到内核。这个仅仅在linux 2.2内核上运行。在kernel 2.4 ipvs代码使用netfilter call来处理特定的NAT规则。
- Netlink接口:对于热待机协议(VRRP),我们使用netlink接口来设置/去除VRRP的VIP.
- 组播:对于VRRP部分,通告被发送到组播组。
3.2软件设计

下面将阐述keepalived软件的内部实现组件。Keepalived使用一个基于中央I/O复用器的多线程框架。2个主要的组件如下:
健康检测工作线程:每个健康检测被注册到全局的调度框架。这些工作线程在keepalived 健康检测框架下执行健康检测。健康检测框架当前执行3个检测:
TCP检测:应用第三层检测。
HTTP GET:检测一个远程http服务器的html 内容完整性。
SSL GET:检测一个远程SSL服务器的html内容完整性。
混合检测:应用用户定义的完整性检测。
VRRP 包分发器:解服用特定I/O来处理VRRP实例的响应。
这两个主要组件使用到下面的底层primitives
SMTP通知:一个SMTP包装器使用异步数据流处理。这个primitive使得keepalived可以发送邮件通知。
IPVS框架:LVS NAT,DR&TUN等。
Netlink:提供VRRP VIP操作。
组播:使用多播来发送VRRP通告。
IPCHAINS框架,如上所述。
SYSLOG: 所有后台通知消息使用syslog后台来记录。
4. 健康检测框架
如上《略》
为了director故障转移,keepalived实现了VRRP协议。这个协议可以这样简洁的描述为:
虚拟路由器冗余协议(VRRP)是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台。控制虚拟路由器 IP 地址的 VRRP 路由器称为主路由器,它负责转发数据包到这些虚拟 IP 地址。一旦主路由器不可用,这种选择过程就提供了动态的故障转移机制,这就允许虚拟路由器的 IP 地址可以作为终端主机的默认第一跳路由器。使用 VRRP 的好处是有更高的默认路径的可用性而无需在每个终端主机上配置动态路由或路由发现协议。 VRRP 包封装在 IP 包中发送。[ 引用自rfc2338]。
5. Keepalived 配置语法
配置文件分为三个部分:
5.1 全局定义的语法

5.2 虚拟服务器定义语法

5.3 VRRP实例定义语法

Keepalived 使用指南的更多相关文章
- JAVAEE——宜立方商城03:Nginx负载均衡高可用、Keepalived+Nginx实现主备
1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...
- JAVAEE——宜立方商城03:商品类目选择、Nginx端口或域名区分虚拟机、Nginx反向代理、负载均衡、keepalived实现高可用
1. 学习计划 第三天: 1.商品类目选择(EasyUI的tree实现) 2.图片上传 a) 图片服务器FastDFS(Nainx部分) 2. 商品类目选择 2.1. 原型 2.2. 功能分析 展示商 ...
- linux下实现keepalived+nginx高可用
1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...
- haproxy动态增减主机与keepalived高级应用
一:本文将详细介绍haproxy的配置使用以及高级功能的使用,比如通过haproxy进行动态添加删除负载集群中的后端web服务器的指定主机,另外将详细介绍keepalived的详细配置方法.配置实例及 ...
- 浅谈web网站架构演变过程
前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 阶 ...
- 【架构】浅谈web网站架构演变过程
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- (转)web网站架构演变
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- web网站架构
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- 浅谈web网站架构演变过程(转)
前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 阶 ...
随机推荐
- Revit中如何将视图过滤器传递到其它项目
在Revit中采用过滤器控制视图显示,利用过滤器给图元着色,利用过滤器控制视图显示或隐藏等,那么,在不同的项目中是否每次都要设置相同的过滤器,其实,Revit提供了这么一种在不同项目传递信息的方式,在 ...
- java 发送带Basic Auth认证的http post请求
构造http header private static final String URL = "url"; private static final String APP_KEY ...
- Python中使用自定义类class作为海量数据结构时内存占用巨大的问题
最近碰到处理一个二十多兆的文件时内存蹭蹭的吃掉四百多兆,吓死宝宝了. 无奈毕竟接触python时间有限,还没有完整的看过python的一些基础知识,我想一个合格的pythoner应该不会碰到这个问题. ...
- blueImp/jQuery file upload 的正确用法(限制上传大小和文件类型)
这个插件太出名了,几乎能完成所有能想象的到的效果,包括进度条.拖拽.甚至现在已经完美支持图片视频等的处理,三个字形容就是屌爆了.最近在做上传这一部分,发现网上对于上传文件大小的限制和类型检测等的方法都 ...
- Mysql编码, Mysql编码流程, Mysql编码顺序, Mysql编码原理, Mysql编码修改依据
编码查看方式以及解释说明: 需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -u root –p,之后两次输入root用户的密码),查看数据库的 ...
- Linux每天定时重启Tomcat服务
1:查看crond 服务状态(确认Linux任务计划服务开启) service crond status crond (pid 1937) is running... 2:编写重启Tomcat的sh ...
- leveldb - sstable格式
整体上,sstable文件分为数据区与索引区,尾部的footer指出了meta index block与data index block的偏移与大小,data index block指出了各data ...
- hadoop错误之ClassNotFoundException
http://www.cnblogs.com/kaizhangzhang/p/3495438.html 在win7下运行hadoop-1.1.2 worldcount代码的时候出现下面的错误,折腾了差 ...
- 单源最短路径算法---Dijkstra
Dijkstra算法树解决有向图G=(V,E)上带权的单源最短路径问题,但是要求所有边的权值非负. 解题思路: V表示有向图的所有顶点集合,S表示那么一些顶点结合,从源点s到该集合中的顶点的最终最短路 ...
- 在Windows2008系统中利用IIS建立FTP服务器
一.服务器管理器 1.2008的系统使用服务器管理器,选择角色,因为我之前已经开启了IIS服务器角色,所以我现在只要添加角色服务即可,如果你没有开启过的话,直接添加角色即可. 2.选择WEB服 ...