如何安装部署HAProxy?

Linux基础

1 基础知识

1.1 软件的介绍

– HAProxy是一款开源免费、快速、可靠的解决方案
– HAProxy是基于TCP和HTTP协议提供高可用、负载均衡和代理服务

1.2 软件的功能

– 负载均衡
– 高可用
– 代理服务

2 最佳实践

2.1 准备安装环境

2.1.1 系统的基本配置

HostName = haproxy.cmdschool.org
OS = Oracle Linux 9.x x86_64
IPAddress = any

2.1.2 系统的基本配置

如何完成CentOS 7.x的基本服务?

2.2 安装配置HAProxy

2.2.1 安装软件包

dnf install -y haproxy

2.2.2 启动会服务并设置服务自启动

systemctl start haproxy.service
systemctl enable haproxy.service

服务启动后,你需要使用如下命令查看服务器的状态,

systemctl status haproxy.service

然后,你可以使用如下命令查看启动的进程,

pgrep -u haproxy haproxy -a

可见如下输出,

/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf.d -p /run/haproxy.pid

然后,你可以使用如下命令查看倾听的端口,

netstat -antp | grep `pgrep -u haproxy haproxy`

可见如下显示,

tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      5271/haproxy 

2.2.3 简化配置文件

cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.default
vim /etc/haproxy/haproxy.cfg

清理包含范例的配置,简化后的配置如下,

global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

2.3.4 重载服务使配置生效

systemctl reload haproxy.service

2.3 配置HAProxy的日志参数

2.3.1 修改HAProxy的默认配置文件

vim /etc/haproxy/haproxy.cfg

检查以下行处于启动状态,

log         127.0.0.1 local2

2.3.2 重启服务使配置生效

systemctl restart haproxy.service

2.4 配置rsyslog参数

2.4.1 修改日志配置

vim /etc/rsyslog.conf

启用如下配置,

$ModLoad imudp
$UDPServerAddress 127.0.0.1
$UDPServerRun 514

然后,你还需要加入如下日志定义,

echo 'local2.* /var/log/haproxy/haproxy.log' > /etc/rsyslog.d/haproxy.conf

根据以上配置的需求,我们使用如下命令创建日志目录,

mkdir -p /var/log/haproxy/
chown haproxy:haproxy -R /var/log/haproxy/
chmod 775 -R /var/log/haproxy/

2.4.2 重启服务使配置生效

systemctl restart rsyslog.service

然后,你可以使用如下命令查看倾听的端口,

netstat -W -neopa | grep 514 | grep udp

可见如下显示,

udp        0      0 127.0.0.1:514           0.0.0.0:*                           0          54619      6028/rsyslogd        off (0.00/0/0)

2.5 配置循环日志

vim /etc/logrotate.d/haproxy

配置修改如下,

/var/log/haproxy/haproxy.log {
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

参阅文档
===================

官方文档
————————
https://www.haproxy.org/

日志配置文档
——————
https://serverfault.com/questions/645924/haproxy-logging-to-syslog

没有评论

发表回复

Linux基础
Linux下的常用性能分析工具?

1 前言 一个问题,一篇文章,一出故事。 最近笔者需要整理常用的Linux分析工具,于是整理此文。 …

Linux基础
如何排查硬盘读写慢问题?

1 前言 一个问题,一篇文章,一出故事。 最近笔者需要排查硬盘慢引起的问题,于是整理此文。 2 最佳 …

Linux基础
如何tcpdump实时测量网络吞吐量?

1 前言 一个问题,一篇文章,一出故事。 最近笔者需要实时测量网络的吞吐量,于是整理此文。 2 最佳 …