amazon-s3 - HAProxy 未对来自 mc(MinIO 客户端)的 S3 分段上传进行负载平衡
问题描述
这就是我想要做的事情:我有一堆运行反向代理 MinIO 实例(使用 nginx)的主机,我想使用 HAProxy 负载平衡请求。我不想使用 TLS 终止,而是在目标主机处终止。
我之前使用过Sidekick,但它不支持 TLS 直通。然而,正如我所料,那里的行为是:不同的 S3 多部分请求被发送到不同的主机。
我已经设置 HAProxy 以在我的 12 台主机之间进行负载平衡,并使用 and 运行了一些测试balance roundrobin
,balance leastconn
但无论我做什么,我的分段上传最终都被发送到单个主机。奇怪的是,当我mc ls
用来列出我的 S3 后端中的所有对象时,我可以看到请求被路由并登录到运行 haproxy 的主机上。mc cp
但是,如果我使用,则不会记录任何内容——即使上传完成。在我的 MinIO 实例中激活请求跟踪显示所有块最终都被发送到同一主机。我原以为它们会分布在所有 12 台主机中。AFAIK 在 mc 中没有保持活动状态,并且每个块请求都独立于最后一个。
看起来这可能与mc
我发送的命令有关,但我发现一些命令(du
, rm
)会在 haproxy 服务器上生成多个日志条目,表明对同一命令的不同请求被路由到不同的服务器。
我的 haproxy 是 2.0.14 版本,我正在使用以下 haproxy.cfg:
global
log 127.0.0.1 local0 debug
maxconn 32768
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
defaults
log global
mode tcp
option tcplog
timeout connect 5s
timeout client 50s
timeout server 450s
frontend https
bind :443
default_backend bk_app
backend bk_app
balance roundrobin
option httpchk GET /minio/health/live
option ssl-hello-chk
http-check expect status 200
server fs-testcluster-robert2-n1 10.10.11.150:443 check-ssl verify none
server fs-testcluster-robert2-n4 10.10.11.151:443 check-ssl verify none
server fs-testcluster-robert2-n2 10.10.11.152:443 check-ssl verify none
server fs-testcluster-robert2-n5 10.10.11.153:443 check-ssl verify none
server fs-testcluster-robert2-n3 10.10.11.154:443 check-ssl verify none
server fs-testcluster-robert2-n6 10.10.11.155:443 check-ssl verify none
server fs-testcluster-robert-n1 10.10.12.196:443 check-ssl verify none
server fs-testcluster-robert-n2 10.10.12.198:443 check-ssl verify none
server fs-testcluster-robert-n3 10.10.12.237:443 check-ssl verify none
server fs-testcluster-robert-n4 10.10.11.160:443 check-ssl verify none
server fs-testcluster-robert-n5 10.10.11.161:443 check-ssl verify none
server fs-testcluster-robert-n6 10.10.11.162:443 check-ssl verify none
谁能解释发生了什么或我可能配置错误?
解决方案
推荐阅读
- html - 如何将两个不同的父元素添加到sass中的一个公共子元素?
- python - 如何使用存储在字典中的数据编写文件?
- rxjs - 延迟从缓冲区释放,直到完成后的承诺
- angular - 将过滤器应用于数据源以将特定数据发送到表
- hadoop - Hadoop 分布式文件系统 (HDFS) 中的重新分区
- c# - 通过 CRM 自定义插件从项目表中查询项目编号列表
- python - 致命的 Python 错误:无法在 conda 虚拟环境中启动旧版本的 python
- bixby - 如何在 bixby 上显示带有预填充选项和自定义输入字段的输入视图?
- prestashop - 如何更改 Prestashop 中“搜索结果”消息中的语言
- json - 如何使用 Vue.js 从嵌套的 JSON FireBase 数据库中检索数据?