haproxy简明配置

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 简介介绍haproxy的配置方法

haproxy是一款优秀的负载均衡软件,安装配置也非常简单,通常安装Linux发行版自带的haproxy即可,无需自行编译。

安装方法

ubuntu:apt install haproxy

CentOS:dnf(yum) install haproxy

配置文件

通过apt或者dnf安装的haproxy,配置文件默认在/etc/haproxy下,编译该目录下的haproxy.conf

global                                     # 全局配置。   log         127.0.0.1 local2 debug      # 定义全局的 syslog 服务器,最多可以定义两个。chroot      /var/lib/haproxy            # 更改当前目录并为启动进程设置超级用户权限,从而提高安全性。   pidfile     /var/run/haproxy.pid        # 将 HAProxy 进程的 PID 写入 pidfile。   maxconn     4000# 每个 HAProxy 进程所接受的最大并发连接数。   user        haproxy                     # 同 UID 参数。   group       haproxy                     # 同 GID 参数,建议使用专用用户组。   nbproc      40# 在后台运行时创建的进程数。在启动多个进程转发请求时,确保该值足够大,保证 HAProxy 不会成为瓶颈。   daemon                                  # 让 HAProxy 以守护进程的方式工作于后台,等同于命令行参数“-D”的功能。当然,也可以在命令行中用“-db”参数将其禁用。   stats socket /var/lib/haproxy/stats     # 统计信息保存位置。defaults                                   # 默认配置。   log global                              # 日志继承全局配置段的设置。   retries 2# 向上游服务器尝试连接的最大次数,超过此值便认为后端服务器不可用。   timeout connect  2s                     # HAProxy 与后端服务器连接超时时间。如果在同一个局域网内,可设置成较短的时间。   timeout client 30000s                   # 客户端与 HAProxy 连接后,数据传输完毕,即非活动连接的超时时间。   timeout server 30000s                   # 服务器端非活动连接的超时时间。listen admin_stats                         # frontend 和 backend 的组合体,此监控组的名称可按需进行自定义。   bind 0.0.0.0:3999                       # 监听端口。   mode http                               # 监控运行的模式,此处为 `http` 模式。   option httplog                          # 开始启用记录 HTTP 请求的日志功能。   maxconn 10# 最大并发连接数。   stats refresh 30s                       # 每隔 30 秒自动刷新监控页面。   stats uri /haproxy                      # 监控页面的 URL。   stats realm HAProxy                     # 监控页面的提示信息。   stats auth admin:pingcap123             # 监控页面的用户和密码,可设置多个用户名。   stats hide-version                      # 隐藏监控页面上的 HAProxy 版本信息。   stats  admin if TRUE                    # 手工启用或禁用后端服务器(HAProxy 1.4.9 及之后版本开始支持)。listen db-cluster                        # 配置 database 负载均衡。   bind *:4000                             # 浮动 IP 和 监听端口。   mode tcp                                # HAProxy 要使用第 4 层的传输层。   option tcplog
   log-format "%ci:%cp [%t] %b/%si:%sp %Tw/%Tc/%Tt %B %ts %ac/%fc/%bc/%sc/%rc %sq/%bq"   balance leastconn                       # 连接数最少的服务器优先接收连接。`leastconn` 建议用于长会话服务,例如 LDAP、SQL、TSE  等,而不是短会话协议,如 HTTP。该算法是动态的,对于启动慢的服务器,服务器权重会在运行中作调整。#tcp-request content accept if { src -f /etc/haproxy/white_ip_list }#tcp-request content reject   server db-1 192.168.0.1:4000 check inter 2000 rise 2 fall 3# 检测 4000 端口,检测频率为每 2000 毫秒一次。如果 2 次检测为成功,则认为服务器可用;如果 3 次检测为失败,则认为服务器不可用。   server db-2 192.168.0.2:4000 check inter 2000 rise 2 fall 3   server db-3 192.168.0.3:4000 check inter 2000 rise 2 fall 3listen redis                               # 配置 database 负载均衡。   bind *:6379                             # 浮动 IP 和 监听端口。   mode tcp                                # HAProxy 要使用第 4 层的传输层。   option tcplog
   log-format "%ci:%cp [%t] %b/%si:%sp %Tw/%Tc/%Tt %B %ts %ac/%fc/%bc/%sc/%rc %sq/%bq"   balance leastconn                       # 连接数最少的服务器优先接收连接。`leastconn` 建议用于长会话服务,例如 LDAP、SQL、TSE  等,而不是短会话协议,如 HTTP。该算法是动态的,对于启动慢的服务器,服务器权重会在运行中作调整。#tcp-request content accept if { src -f /etc/haproxy/white_ip_list }#tcp-request content reject   server redis-1 192.168.0.4:6379 check inter 2000 rise 2 fall 3   server redis-2 192.168.0.5:6379 check inter 2000 rise 2 fall 3

systemd启动脚本

[Unit]
Description=HAProxy Load Balancer
Documentation=man:haproxy(1)
Documentation=file:/usr/share/doc/haproxy/configuration.txt.gz
After=network-online.target rsyslog.service
Wants=network-online.target
[Service]
EnvironmentFile=-/etc/default/haproxy
EnvironmentFile=-/etc/sysconfig/haproxy
Environment="CONFIG=/etc/haproxy/haproxy.cfg""PIDFILE=/run/haproxy.pid""EXTRAOPTS=-S /run/haproxy-master.sock"ExecStartPre=/usr/sbin/haproxy -Ws-f$CONFIG-c-q$EXTRAOPTSExecStart=/usr/sbin/haproxy -Ws-f$CONFIG-p$PIDFILE$EXTRAOPTSExecReload=/usr/sbin/haproxy -Ws-f$CONFIG-c-q$EXTRAOPTSExecReload=/bin/kill -USR2$MAINPIDKillMode=mixed
Restart=always
SuccessExitStatus=143Type=notify
# The following lines leverage SystemD's sandboxing options to provide# defense in depth protection at the expense of restricting some flexibility# in your setup (e.g. placement of your configuration files) or possibly# reduced performance. See systemd.service(5) and systemd.exec(5) for further# information.# NoNewPrivileges=true# ProtectHome=true# If you want to use 'ProtectSystem=strict' you should whitelist the PIDFILE,# any state files and any other files written using 'ReadWritePaths' or# 'RuntimeDirectory'.# ProtectSystem=true# ProtectKernelTunables=true# ProtectKernelModules=true# ProtectControlGroups=true# If your SystemD version supports them, you can add: @reboot, @swap, @sync# SystemCallFilter=~@cpu-emulation @keyring @module @obsolete @raw-io[Install]
WantedBy=multi-user.target

启、停haproxy

# 设置/取消开机自启动systemctl enable/disable haproxy
# 启/停systemctl start/stop haproxy
# 查看状态systemctl status haproxy
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
存储 关系型数据库 数据库
用Patroni配置PostgreSQL高可用集群
Patroni是Zalando开发的数据库高可用管理软件,用于编排和自动化PostgreSQL集群的管理过程。Patroni 需要一系列其他组件的支持,通过利用第三方分布式一致性软件,组建并实现数据库高可用方案。
用Patroni配置PostgreSQL高可用集群
|
存储 NoSQL 关系型数据库
PostgreSQL列存扩展hydra简单测试
Hydra是一款PostgreSQL的扩展,为PostgreSQL增加了列存引擎,使得PostgreSQL的olap性能大幅提升,本文介绍Hydra基本的使用方法。
|
缓存 负载均衡 关系型数据库
Pgpool-II实现高可用+读写分离+负载均衡(一)---- 规划及安装
Pgpool-II是一款工作在PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件。提供了连接池、复制、负载均衡、限制过多连接、看门狗、查询缓存等功能。
|
JavaScript
【JS用法】js判断字符串是否包含某个字符串
【JS用法】js判断字符串是否包含某个字符串
818 0
|
Apache 数据安全/隐私保护
HAProxy的高级配置选项-ACL篇之域名重定向案例
这篇文章介绍了HAProxy的ACL(访问控制列表)功能,特别是如何基于域名进行重定向的高级配置选项,并通过实战案例展示了如何配置ACL规则以实现基于特定域名的HTTP重定向。
262 6
HAProxy的高级配置选项-ACL篇之域名重定向案例
|
XML API Android开发
Android 自定义View 之 圆环进度条
Android 自定义View 之 圆环进度条
300 0
|
运维 监控 NoSQL
【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊
Redis 的哨兵模式(Sentinel)是一种用于实现高可用性的机制。它通过监控主节点和从节点,并在主节点故障时自动进行切换,确保集群持续提供服务。哨兵模式包括主节点、从节点和哨兵实例,具备监控、通知、自动故障转移等功能,能显著提高系统的稳定性和可靠性。本文详细介绍了哨兵模式的组成、功能、工作机制以及其优势和局限性,并提供了单实例的安装和配置步骤,包括系统优化、安装、配置、启停管理和性能监控等。此外,还介绍了如何配置主从复制和哨兵,确保在故障时能够自动切换并恢复服务。
|
Python
pandas库明明安装成功了,为什么总是导入错误?
pandas库明明安装成功了,为什么总是导入错误?
1392 4
|
机器学习/深度学习 运维 Linux
lspci总结
lspci总结
|
算法 网络协议 数据建模
【计算机网络】—— IP协议及动态路由算法(上)
【计算机网络】—— IP协议及动态路由算法(上)
770 0

热门文章

最新文章