分类目录归档:HAProxy

Nginx、LVS、HAProxy负载均衡软件的优缺点详解

Nginx、LVS、HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。

一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。

一种是通过硬件来进行进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于Nginx、LVS、HAProxy的基于Linux的开源免费的负载均衡软件,这些都是通过软件级别来实现,所以费用非常低廉。

目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx、HAProxy+Keepalived作负载均衡器;后端采用MySQL数据库一主多从和读写分离,采用LVS+Keepalived的架构。当然要根据项目具体需求制定方案。

继续阅读

Haproxy中的acl的详解

Haproxy 能够从请求报文,响应报文,从客户端或者服务端信息,从表,环境信息等等中提取数据。提取这样的数据的动作我们称之为获取样本。进行检索时,这些样本可以用来实现各种目的,比如作为粘滞表的键,最常用的用途是,根据预定义的模式来进行匹配。访问控制列表(ACL)提供一个灵活方案进行内容切换,或者在从请求,响应,任何环境状态中提取的数据基础之上做出决策。控制列表的原则很简单:

继续阅读

haproxy中与stats相关的配置项

本文主要针对在haproxy中,出现与stats相关的配置项,做统一的配置说明。与stats的相关的众多配置项出现在不同的模块、语法内,主要包括global、bind、server等。

一、global

stats bind-process [ all | odd | even | <number 1-64>[-<number 1-64>] ]

stats socket [<address:port>|<path>] [param*]
unix-bind [ prefix <prefix> ] [ mode <mode> ] [ user <user> ] [ uid <uid> ] [ group <group> ] [ gid <gid> ]

stats timeout <timeout, in milliseconds>

stats maxconn <connections>

haproxy中与ssl相关的配置项

本文主要针对在haproxy中,出现与ca、ssl相关的配置项,做统一的配置说明。与ssl的相关的众多配置项出现在不同的模块、语法内,主要包括global、bind、server等。

继续阅读

Haproxy配置-新手入门篇

这是一篇学习笔记,之前看Haproxy的配置使用,真是一头雾水,有一些配置项,都不知道是做什么用的?更别说灵活配置了,所以这次下定决心,从官方的网站上从头开始看配置文档,因为官方的文档是英文,本人的英文比较烂,在看的过程中做了这个笔记。

继续阅读

Haproxy中DNS的解析配置

默认情况下,Haproxy中的server的配置行是支持 HostName 的,并在 haproxy 中启动后,解析hostName得到IP地址,并将IP地址缓存到 haproxy 整个生命期,但这种情况会出现一个问题,如果后端服务器的hostName的 IP 更改了,无法更新已缓存的 IP 。此时haproxy就无法访问该后端服务器了,本文解决的就是这个问题。在Haproxy增加 DNS的解析设置,并在每次健康检测的时候,解析HostName,并验证。这样一旦后端服务器 HostName 对应的IP 更改了,也能在健康检测的周期内,更新缓存中的IP地址。

继续阅读

Haproxy中的log的设置原理解析

在理解Haproxy的Log设置原理之前,先来了解下Linux中的系统日志服务。系统日志服务和其他服务一样(如web服务nginx、httpd),也有启动、停止、配置等,运行原理这里不详细介绍了。

继续阅读