TiDB 最佳实践系列HAProxy 的使用
Posted PingCAP
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TiDB 最佳实践系列HAProxy 的使用相关的知识,希望对你有一定的参考价值。
HAProxy 是一个使用 C 语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于 TCP 和 HTTP 的应用程序代理。GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter 和 Tuenti 在内的知名网站,及亚马逊网络服务系统都在使用 HAProxy。
HAProxy 简介
HAProxy 部分核心功能
高可用性:HAProxy 提供优雅关闭服务和无缝切换的高可用功能;
-
负载均衡 :L4(TCP)和 L7(HTTP)负载均衡模式,至少 9 类均衡算法,比如 roundrobin,leastconn,random 等; -
健康检查 :对 HAProxy 配置的 HTTP 或者 TCP 模式状态进行检查; -
会话保持 :在应用程序没有提供会话保持功能的情况下,HAProxy 可以提供该项功能; -
SSL :支持 HTTPS 通信和解析; -
监控与统计 :通过 web 页面可以实时监控服务状态以及具体的流量信息。
HAProxy 部署操作
1. 硬件要求
根据 HAProxy 官方文档 对 HAProxy 的服务器硬件配置有以下建议(也可以根据负载均衡环境进行实际推算,在此基础上提高服务器配置):
硬件资源 | 最低配置 |
|
|
|
|
|
|
|
|
2. 软件要求
-
Linux 2.4 操作系统,支持 x86、x86_64、Alpha、SPARC、MIPS 和 PA-RISC 架构。 -
Linux 2.6 或 3.x 操作系统,支持 x86、x86_64、ARM、SPARC 和 PPC64 架构。 -
Solaris 8 或 9 操作系统,支持 UltraSPARC II 和 UltraSPARC III 架构。 -
Solaris 10 操作系统,支持 Opteron 和 UltraSPARC 架构。 -
FreeBSD 4.10~10 操作系统,支持 x86 架构。 -
OpenBSD 3.1 及以上版本操作系统,支持 i386、AMD64、macppc、Alpha 和 SPARC64 架构。 -
AIX 5.1~5.3 操作系统,支持 Power™ 架构。
-
epel-release -
gcc -
systemd-devel
3. 推荐版本
4.操作步骤
# yum 安装 HAProxy
yum -y install haproxy
# 验证 HAProxy 安装是否成功
which haproxy
# yum 安装过程中会生成配置模版
vim /etc/haproxy/haproxy.cfg
haproxy -f /etc/haproxy/haproxy.cfg
systemctl start haproxy.service
ps -ef | grep haproxy
kill -9 haproxy.pid
systemctl stop haproxy.service
HAProxy 命令介绍
$ haproxy --help
Usage : haproxy [-f <cfgfile|cfgdir>]* [ -vdVD ] [ -n <maxconn> ] [ -N <maxpconn> ]
[ -p <pidfile> ] [ -m <max megs> ] [ -C <dir> ] [-- <cfgfile>*]
参数 | 描述 |
---|---|
-v | 显示简略的版本信息。 |
-vv | 显示详细的版本信息。 |
-d | debug 模式开启。 |
-db | 仅禁止后台模式。 |
-dM [<byte>] | 执行分配内存。 |
-V | 启动过程显示配置和轮询信息。 |
-D | 开启守护进程模式。 |
-C <dir> | 在加载配置文件之前更改目录位置。 |
-W | 主从模式。 |
-q | 静默模式,不输出信息。 |
-c | 只检查配置文件并在尝试绑定之前退出。 |
-n | 设置最大总连接数为 2000。 |
-m | 限制最大可用内存(单位:MB)。 |
-N | 设置单点最大连接数,默认为 2000。 |
-L | 本地实例对等名称。 |
-p | 将 HAProxy 所有子进程的 PID 信息写入该文件。 |
-de | 禁止使用 speculative epoll,epoll 仅在 Linux 2.6 和某些定制的 Linux 2.4 系统上可用。 |
-dp | 禁止使用 epoll,epoll 仅在 Linux 2.6 和某些定制的 Linux 2.4 系统上可用。 |
-dS | 禁止使用 speculative epoll,epoll 仅在 Linux 2.6 和某些定制的 Linux 2.4 系统上可用。 |
-dR | 禁止使用 SO_REUSEPORT。 |
-dr | 忽略服务器地址解析失败。 |
-dV | 禁止在服务器端使用 SSL。 |
-sf/-st <unix_socket> | 在启动后,在 pidlist 中发送 FINISH 信号给 PID。收到此信号的进程将等待所有会话在退出之前完成,即优雅停止服务。此选项必须最后指定,后跟任意数量的 PID,SIGTTOU 和 SIGUSR1 都被发送。 |
-x <unix_socket>,[<bind options>...] | 获取 socket 信息。 |
-S <unix_socket>,[<bind options>...] | 分配新的 socket。 |
HAProxy 最佳实践
global # 全局配置
log 127.0.0.1 local0 # 定义全局的 syslog 服务器,最多可以定义两个
chroot /var/lib/haproxy # 将当前目录为指定目录,设置超级用户权限启动进程,提高安全性
pidfile /var/run/haproxy.pid # 将 HAProxy 进程写入 PID 文件
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 # 定义 HAProxy 与上游服务器非活动连接的超时时间
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 # 配置监控页面的用户和密码 admin,可以设置多个用户名
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 中要使用第四层的应用层
balance leastconn # 连接数最少的服务器优先接收连接。`leastconn` 建议用于长会话服务,例如 LDAP、SQL、TSE 等,而不是短会话协议,如 HTTP。该算法是动态的,对于实例启动慢的服务器,权重会在运行中作调整。
server tidb-1 10.9.18.229:4000 check inter 2000 rise 2 fall 3 # 检测 4000 端口,检测频率为 2000 毫秒。如果检测出 2 次正常就认定机器已恢复正常使用,如果检测出 3 次失败便认定该服务器不可用。
server tidb-2 10.9.39.208:4000 check inter 2000 rise 2 fall 3
server tidb-3 10.9.64.166:4000 check inter 2000 rise 2 fall 3
总结
以上是关于TiDB 最佳实践系列HAProxy 的使用的主要内容,如果未能解决你的问题,请参考以下文章
Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB
Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB
Flink 最佳实践之使用 Canal 同步 MySQL 数据至 TiDB