我设置了 2 个 HAProxy 服务器,使用 KeepAlived 进程进行故障转移,每个 HAProxy 都配置为将 mysql 连接负载平衡到我的 3 个节点的 MariaDB Galera 集群。我正在尝试对我的环境进行负载测试,在将流量推送到我的某个节点之前,我正在查看 netstat -an | grep 3306,这是我在第一个节点上看到的内容:
ubuntu@mariadb1:~$ netstat -an |grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 10.60.61.21:3306 10.60.61.19:44563 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44521 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44536 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58622 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58637 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58649 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44533 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44557 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58616 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58628 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58619 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58646 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58625 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58631 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44551 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58652 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44524 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58658 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44545 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58655 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58640 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58634 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44539 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44554 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44527 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58661 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44518 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44548 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44560 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.19:44530 TIME_WAIT
tcp 0 0 10.60.61.21:3306 10.60.61.20:58643 TIME_WAIT
我想知道为什么 HAProxy 在生成任何流量之前就填满了 3306 上的连接。我原本以为主 HAProxy 必须至少有一个连接在运行,这样它才能传递流量,但不能同时运行两个 HAProxy,也不能有这么多并发连接。请告诉我需要注意什么来调整这一点,或者只是接受这是 HA 设置的正常行为。
以下是我的 mariaDB 机器的规格:
Ubuntu 12.04 8GB RAM 4 vCPU(每个节点都在 VMware 中运行)
如果您需要 /etc/mysql/my.cnf 文件,请告诉我,或者 /etc/haproxy/haproxy.cnf 文件。如果我的帖子看起来格式很糟糕,请见谅,我不知道如何让它看起来和你们其他人一样漂亮和干净。
答案1
Haproxy 会发出“心跳”来确保服务确实正常运行。这些信号可能非常频繁,应该确保快速故障转移。
所有这些连接都处于TIME_WAIT
已关闭状态,等待操作系统清理。无需担心。