目录
一、haproxy基本知识
1.HAproxy概述
HAproxy是一款基于HTTP和TCP的应用代理开源软件,主要提供高可用性以及负载均衡功能。如基于internet的连接服务和基于web的应用服务。通过负载均衡算法,HAproxy能够接收数以万计的访问请求并将其转发到后端服务器池中进行处理。所有控制节点配置。
2.HAproxy特点
-
HAproxy的请求调度器(Sxheduler)决定了后端服务器中每个服务器接收和处理的请求量,在没有权重的情况下,调度器为每台服务器分配相同的数量请求。
-
HAproxy允许用户自定义多个代理,并为每个代理提供负载均衡,代理由一个前端和一个或多个后端构成,前端定义了代理监听的ip地址(vip)和端口,同时还需要在前端定义中关联与其相应的后端,而在HAproxy中,后端主要用于定义服务器池和负载均衡算法。
3.HAproxy支持的高可用模式
-
Active/Active模式(双活模式):当服务器配置为主/主模式时,全部节点都同时运行相同服务并同时接收访问请求,如果其中一个节点故障,则该节点的访问请求被转移到其他任一正常节点,整个过程客户端的服务请求不会中断。
-
Active/Passive模式(主备模式):当服务器部署主/备模式时,只有一个节点运行服务并接受请求,当此节点故障时,备节点服务会被激活,后续的请求会被转发到备节点上,整个过程中客户端请求会有短暂中断。
-
Host Standby模式(热备模式):当服务器配置为热备模式时,所有的节点都同时运行相同的服务,但只有一个节点在想赢客户端的访问请求,其余节点没有客户端的访问请求,当接受请求的节点故障时,客户端访问请求被无缝切换至运行相同服务的正常节点继续处理,整个过程客户端的服务请求不会中断。
-
Mixed模式(混合模式):混合模式通常用在由多个子服务组成的服务组件中,即将服务组件的服务模式配置成上述几种高可用模式组合。
-
Single Node模式(单节点模式):即服务仅在一个节点上运行,这类服务通过pacemaker来管理,如果pacemaker检测到其故障则重启它,整个过程也会有相对较长时间的中断。
二、haproxy配置
1.全局配置
全局配置段中,用户为HAProxy常用的全局变量配置了参数,这些参数通常是进程级别并与操作系统相关的参数,并在全局先顶了HAproxy的工作特性,需要改的参数有maxconn和log,具体配置如下。
global
chroot /var/lib/haproxy
daemon
group haproxy
user haproxy
maxconn 4000
pidfile /var/run/haproxy.pid
log 127.0.0.1 local0
全局配置注解:
1.daemon:指定HAproxy以后台进程的形式运行。
2.group:运行HAproxy的用户属组,此处为HAproxy。
3.maxconn:HAproxy代理允许的最大并行连接数,此处是4000,默认为2000。
4.user:运行HAproxy的用户,此处为HAproxy。
5.pidfile:HAproxy的进程文件,此处为/var/run/haproxy.pid。
log:设置HAproxy运行日志的输出设备,默认为本机的/var/log/syslog。
2.默认配置
默认(default)配置段设置的参数会被haproxy.cfg的其他配置段继承,同时这些配置段也可以写default配置段的参数值,通常情况下,用户可以将具有共性的参数放到default段进行统一配置,然后再到各个配置段中进行个性修改,常见的值如下:
defaults
mode http
log global
maxconn 4000
option redispatch
option httplog
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout check 10s
默认配置注解如下:
1.mode:指定HAproxy实例使用的连接协议,即源请求到后端服务器之间的连接协议,可能值为http和tcp。对于基于http的web应用服务,通常使用http模式,对于其他应用服务,通常使用tcp模式。
2.log:指定日志,此处继承global的配置。
3.option:日志记录选项,httplog表示记录与http会话相关的各种属性值,包括http请求、会话状态、连接数、源地址以及连接时间等。dontlognull表示不记录空会话连接日志。
4.retries:连接失败后重新尝试请求连接数的次数,超过设置的次数将认为连接失败。
5.timeout:设置各种请求、连接、响应的超时时间,单位为s或ms。
6.http-request:等待客户端http请求的时间,此处等待10秒。
7.queue:设置删除连接和客户端收到503或服务不可用等提示信息的等待时间,此处等待时间为1毫秒。
8.connect:设置等待服务器连接成功的时间,此处等待为10秒。
9.client:设置客户端处于非活动状态,即不发送数据也不接收数据的时间,此处为1毫秒。
server:设置服务器超时时间,即允许服务器处于即不接收也不发送数据的非活动时间,此处为1毫秒。
3.前端代理配置
前端配置段和后端配置段可以分开配置,也可以合在一起配置,合在一起配置集体如下,以dashboard为例:
# horizon服务
listen dashboard_cluster
bind 0.0.0.0:80
balance source
option tcpka
option httpchk
option tcplog
server dashboard部署服务器1的ip dashboard部署服务器1的ip:8080 check inter 2000 rise 2 fall 5
server dashboard部署服务器2的ip dashboard部署服务器2的ip:8080 check inter 2000 rise 2 fall 5
注解如下
1.listen:前端的监听名称,可自行设置。
2.bind:指定前端监听的ip和port。
3.balance:指定负载均衡的算法。
4.timeout server 90s:后端服务器最大等待时间,超过此时间则认为服务器不可用,如果出现超时,可以将此值调大。
5.server:指定后端的真实服务。
6.inter 2000:指对其他app进行健康检查的时间间隔。
7.rise 2:表示对其他app发起2此健康检查,均正确,则表示其他app都正常。
8.fall 5:对其他app连续5词健康检查都失败,则认为其他app故障。
4.日志配置
此安装步骤在每个控制节点均要执行。
-
haproxy.cnf配置
-
将haproxy.cfg中的log 127.0.0.1 local0中的127.0.0.1设置为每个节点的ip地址。
-
配置/etc/rsyslog.conf
-
将$ModLoad imudp 以及$UDPServerRun 514注释掉。
-
文件最后添加 local0.* /var/log/haproxy/haproxy.log。
-
配置/etc/sysconfig/rsyslog
-
将文件中的SYSLOGD_OPTIONS=""改为SYSLOGD_OPTIONS="-r -m 0 -c 2"
-
重启rsyslog和haproxy服务。
三、haproxy安装
1.安装包
此安装步骤在每个控制节点均要执行
-
安装
-
yum install haproxy httpd -y
-
启动服务
-
systemctl restart haproxy.service
2.haroxy配置监控页面
此安装步骤在每个控制节点均要执行,全局配置、默认配置、前端页面配置如上节所讲配置。
# haproxy监控页
listen stats
bind 0.0.0.0:1080
mode http
log 127.0.0.1 local0 err
stats enable
stats uri /
stats realm OpenStack\ Haproxy
stats auth admin:admin
stats refresh 30s
stats show-node
stats show-legends
stats hide-version
3.访问
http://vip:1080