前面配置负载均衡的示例中,使用了一个简单的配置文件

 

global

daemon

maxconn 256

defaults

mode http

timeout connect 5000ms

timeout client 50000ms

timeout server 50000ms

frontend http-in

bind *:7000

default_backend neo4j

backend neo4j

server s1 127.0.0.1:8080 maxconn 32 

server s2 127.0.0.1:8081 maxconn 32 

listen admin

bind *:7080

stats enable

 

通过这个配置文件,我们来了解一下HAProxy配置文件结构

 

HAProxy配置文件主要由5个部分组成:

 

(1)global 部分

 

全局配置参数,属于进程级的配置,通常和操作系统配置有关

 

(2)defaults 部分

 

默认参数的配置部分,在此部分设置的参数值,默认会自动引用到下面的frontend、backend和listen部分中,如果在下面部分中也配置了与defaults部分一样的参数,那么defaults参数自动被覆盖

 

(3)frontend 部分

 

用于设置接收用户请求的前端虚拟节点,frontend可以根据ACL规则直接指定要使用的后端backend

 

(4)backend 部分

 

用于设置集群后端服务集群的配置,也就是用来添加一组真实服务器,以处理前端用户的请求

 

(5)listen 部分

 

此部分是frontend部分和backend部分的结合体。在HAProxy 1.3版本之前,HAProxy的所有配置选项都在这个部分中设置。为了保持兼容性,HAProxy新的版本仍然保留了listen组件的配置方式。目前在HAProxy中,两种配置方式任选其一即可

 

详细参数说明

 

global

daemon

maxconn 256

 

daemon:设置HAProxy进程进入后台运行。这是推荐的运行模式

 

maxconn:设定每个HAProxy进程可接受的最大并发连接数

 

defaults

mode http

timeout connect 5000ms

timeout client 50000ms

timeout server 50000ms

 

mode:设置HAProxy实例默认的运行模式,主要有tcp、http

 

tcp模式:在此模式下,工作在4层,客户端和服务器端之间将建立一个全双工的连接,不会对七层报文做任何类型的检查,默认为tcp模式

 

http模式:在此模式下,工作在7层,客户端请求在转发至后端服务器之前将会被深度分析

 

timeout connect:成功连接到一台服务器的最长等待时间,默认单位是毫秒

 

timeout client:连接客户端发送数据时最长等待时间,默认单位是毫秒

 

timeout server:服务器端回应客户端数据发送的最长等待时间,默认单位是毫秒

 

frontend http-in

bind *:7000

default_backend neo4j

 

定义了一个名为“http-in”的前端虚拟节点

 

bind:此选项只能在frontend和listen部分进行定义,用于定义一个或几个监听的套接字

 

bind的使用格式为: bind [<address>:<port_range>] interface <interface>

 

address为可选选项,其可以为主机名或IP地址,如果将其设置为“*”或“0.0.0.0”,将监听当前系统的所有IPv4地址。port_range可以是一个特定的TCP端口,也可是一个端口范围,interface为可选选项,用来指定网络接口的名称

 

default_backend:指定默认的后端服务器池,也就是指定一组后端真实服务器,而这些真实服务器组将在backend段进行定义

 

backend neo4j

server s1 127.0.0.1:8080 maxconn 32 

server s2 127.0.0.1:8081 maxconn 32 

 

这个部分通过backend关键字定义了一个名为neo4j的后端真实服务器组

 

server:这个关键字用来定义多台后端真实服务器,不能用于defaults和frontend部分。

 

使用格式为:server <name> <address>[:port] [param*]

 

<name>:为后端真实服务器指定一个名称,随便定义一个即可

 

<address>:后端真实服务器的IP地址或主机名

 

<port>:指定连接请求发往真实服务器时的目标端口。在未设定时,将使用客户端请求时的同一端口

 

[param*]:为后端服务器设定的一系列参数

 

listen admin

bind *:7080

stats enable

 

listen定义了一个名为“admin”的实例,其实就是定义了一个HAProxy的监控页面

 

bind 指定一个或几个监听的套接字

 

stats enable 设置为开启状态