极简版 haproxy的搭建步骤

haproxy,搭建,步骤 · 浏览次数 : 17

小编点评

**背景** 四层nginx代理报错。 **解决方案** * 使用 haproxy 配置代替 nginx。 * 下载并安装 haproxy 版本 2.8.0。 * 创建全局配置文件 `/usr/haproxy/haproxy.confglobal`。 * 配置数据库负载均衡 `balance leastconn`。 * 配置服务器连接数限制 `maxconn`。 * 使用 `leastconn` 算法进行连接数分配。 **配置** `/usr/haproxy/haproxy.conf` 文件示例: ``` # Global configuration listen admin_stats bind 0.0.0.0:8080 # Load balancing configuration server tidb-1 192.168.255.xxx:4000 check inter 2000 rise 2 fall 3 server tidb-2 192.168.255.xxx:4000 check inter 2000 rise 2 fall 3 server tidb-3 192.168.255.xxx:4000 check inter 2000 rise 2 fall 3 # Database load balancing balance leastconn # General configuration mode http option httplog # Monitor statistics stats refresh 30s stats uri /haproxy # Rest of the configuration options... ``` **注意** * `stats auth admin:pingcap123` 用于监控前端和后端服务器的用户和密码。 * `leastconn` 算法适用于长会话服务,如 LDAP、SQL、TSE 等。 * `tidb-1`, `tidb-2` 和 `tidb-3` 是数据库服务器的 IP 地址。

正文

背景

发现四层nginx的代理报错.
然后想着换用一下haproxy的配置.
早些时候 看过tidb的一些最佳时间, 这里简单整理一下.

下载

https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-2.8.0.tar.gz

这里下载使用了一个比较新的版本, 可以根据情况自行进行处理. 

安装

yum -y install epel-release gcc systemd-devel
# 国产系统不太需要这些内容
执行编译:
make clean
make -j 8 TARGET=linux-glibc USE_THREAD=1

make PREFIX=/usr/haproxy SBINDIR=/usr/haproxy/bin install
# 路径设置为 /usr/haproxy

cat >/etc/profile.d/haproxy.sh <<EOF
export PATH=/usr/haproxy/bin:$PATH
EOF
# 需要增加用户. 
useradd haproxy
# 添加一个 路径,便于使用.
mkdir -p /var/lib/haproxy 
chown haproxy:haproxy  /var/lib/haproxy -R 
配置文件
可以创建为 /usr/haproxy/haproxy.conf


global                                     # 全局配置。
   log         127.0.0.1 local2            # 定义全局的 syslog 服务器,最多可以定义两个。
   chroot      /var/lib/haproxy            # 更改当前目录并为启动进程设置超级用户权限,从而提高安全性。
   pidfile     /var/run/haproxy.pid        # 将 HAProxy 进程的 PID 写入 pidfile。
   maxconn     4096                        # 单个 HAProxy 进程可接受的最大并发连接数,等价于命令行参数 "-n"。
   nbthread    48                          # 最大线程数。线程数的上限与 CPU 数量相同。
   user        haproxy                     # 同 UID 参数。
   group       haproxy                     # 同 GID 参数,建议使用专用用户组。
   daemon                                  # 让 HAProxy 以守护进程的方式工作于后台,等同于命令行参数“-D”的功能。当然,也可以在命令行中用“-db”参数将其禁用。
   stats socket /usr/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:8080                       # 监听端口。
   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 tidb-cluster                        # 配置 database 负载均衡。
   bind 0.0.0.0:3390                       # 浮动 IP 和 监听端口。
   mode tcp                                # HAProxy 要使用第 4 层的传输层。
   balance leastconn                       # 连接数最少的服务器优先接收连接。`leastconn` 建议用于长会话服务,例如 LDAP、SQL、TSE 等,而不是短会话协议,如 HTTP。该算法是动态的,对于启动慢的服务器,服务器权重会在运行中作调整。
   server tidb-1 192.168.255.xxx:4000 check inter 2000 rise 2 fall 3       # 检测 4000 端口,检测频率为每 2000 毫秒一次。如果 2 次检测为成功,则认为服务器可用;如果 3 次检测为失败,则认为服务器不可用。
   server tidb-2 192.168.255.xxx:4000 check inter 2000 rise 2 fall 3
   server tidb-3 192.168.255.xxx:4000 check inter 2000 rise 2 fall 3

启动脚本为: 
/usr/haproxy/bin/haproxy -f /usr/haproxy/haproxy.conf 

监控

使用 http://ip:8080/haproxy 
用户密码为: 
stats auth admin:pingcap123 

可以进行简单的测试验证. 

监控界面

image

与极简版 haproxy的搭建步骤相似的内容:

极简版 haproxy的搭建步骤

## 背景 ``` 发现四层nginx的代理报错. 然后想着换用一下haproxy的配置. 早些时候 看过tidb的一些最佳时间, 这里简单整理一下. ``` ## 下载 ``` https://src.fedoraproject.org/repo/pkgs/haproxy/haproxy-2.8.

10分钟带你徒手做个Java线程池

摘要:花10分钟开发一个极简版的Java线程池,让小伙伴们更好的理解线程池的核心原理。 本文分享自华为云社区《放大招了,冰河带你10分钟手撸Java线程池,yyds,赶快收藏吧》,作者:冰 河。 Java线程池核心原理 看过Java线程池源码的小伙伴都知道,在Java线程池中最核心的类就是Threa

什么是 x10 开发工具?「GitHub 热点速览」

都听过 10x 工程师,一个人顶得过十个人。但是并不是每个人都是 10x 工程师,但是有些效率工具可能让你变成 2x、3x 的工程师。比如,这周火爆的 3D 游戏引擎 FlaxEngine 有着强大的脚本和即开即用的功能特性,极简只有 2.3 kb 的 JS 工具库 nuejs,还有网页版的 whi...

极简工作流「GitHub 热点速览」

原以为 LLM 很难,但其实可以很简单,比如 Flowise 拖拽拖拽就能出来一个 LLM 流程,非常简单你的 LLM 就可以 run 起来了。同样的 web-check 也能极快速地帮你解决 Web 安全那些事,什么 DNS、Cookie 的安全问题不在话下,非常简单,一个仪表盘就看得一清二楚。

神经网络极简入门

神经网络是深度学习的基础,正是深度学习的兴起,让停滞不前的人工智能再一次的取得飞速的发展。 其实神经网络的理论由来已久,灵感来自仿生智能计算,只是以前限于硬件的计算能力,没有突出的表现,直至谷歌的AlphaGO的出现,才让大家再次看到神经网络相较于传统机器学习的优异表现。 本文主要介绍神经网络中的重

parquet极简学习

# parquet极简学习 ## 摘要 ``` parquet的概念: Parquet文件是一种列式存储文件格式,广泛应用于大数据处理框架, 如Apache Hadoop和Apache Spark。 它通过将数据组织成列而不是行来优化大型数据集的读写。 这种列式存储格式允许进行高效压缩、更好的查询性

阿里DataX极简教程

目录简介工作流程核心架构核心模块介绍DataX调度流程支持的数据实践下载环境执行流程引用 简介 DataX是一个数据同步工具,可以将数据从一个地方读取出来并以极快的速度写入另外一个地方。常见的如将mysql中的数据同步到另外一个mysql中,或者另外一个mongodb中。 工作流程 read:设置一

Grafana监控minio的极简方法

# Grafana监控minio的极简方法 ## 背景 ``` 想监控一下minio的部分信息. 使用过程中需要关注的内容挺多的. 只看简单的node感觉已经不够了. 所以想监控易一下. ``` ## 方式和方法 ``` minio其实集成了prometheus 支持的监控指标 只需要在配置文件中放

Clickhouse的极简安装-之二(macos+linux)

# Clickhouse的极简安装-之二(macos+linux) ## StudyFrom ``` https://clickhouse.com/docs/en/install 然后简单的获取方式: curl https://clickhouse.com/ > ck.url 其实可以看到他的安装命

vim工具极简总结

vim工具总结 背景 很多操作记不住. 想着总结当笔记使用. 备忘 基本总结 vim somefile 打开/新建文件 i/a/insert按键 进入插入模式 insert 连续两次 进入替换模式 esc 到命令模式 ctrl+v 进入可视模式 批量操作 命令模式下: dd 删除光标所在行. GG