用法

Backend 配置域名

HAProxy 版本1.6开始支持域名解析功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
resolvers mynameservers
nameserver ns1 10.96.0.10:53 # 配置DNS服务器地址,ns1为服务器代号,可自定义
parse-resolv-conf # 加载主机/etc/resolve.conf文件内的DNS配置信息
resolve_retries 3
timeout resolve 1s
timeout retry 1s
hold other 10s
hold refused 10s
hold nx 10s
hold timeout 10s
hold valid 5s
hold obsolete 10s

frontend keystone-admin_front
mode http
http-request del-header X-Forwarded-Proto
option httplog
option forwardfor
http-request set-header X-Forwarded-Proto https if { ssl_fc }
bind 0.0.0.0:5000
default_backend keystone-admin_back

backend keystone-admin_back
mode http
default-server init-addr none resolvers mynameservers # 初始域名后端解析地址为空,启动后从DNS服务器获取后端ip后更新解析地址
server keystone-admin keystone-api.openstack.svc.cluster.local:5000 check inter 2000 rise 2 fall 5

请求重定向

1
2
3
4
5
# 将所有访问9999端口的请求重定向至指定地址
frontend demo
mode http
bind 0.0.0.0:9999
redirect location http://keystone.openstack.svc.cluster.local

日志管理

HAProxy将对应级别的log发送至指定日志服务器,默认为rsyslog日志服务

  • HAProxy配置文件
1
2
global
log 127.0.0.1 local2 info # 使用本机local2进行日志记录(可选范围local1 ~ 7),生产环境不推荐开启日志,增加IO负担
  • rsyslog配置文件:/etc/rsyslog.conf ,修改后重启 rsyslog 服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
...

# Provides UDP syslog reception
$ModLoad imudp # HAProxy基于udp方式发送日志消息,需要加载支持udp协议的模块
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
...

# Everybody gets emergency messages
# *.emerg :omusrmsg:*
*.emerg /var/log/messages # rsyslog默认将严重消息发送至终端,HAProxy后端不可用为严重消息。这里将消息记录至文件内
...

# Haproxy log
local2.* /var/log/haproxy.log # 将local2的日志记录入文件
...

参考文档