HaProxy 在一定时间间隔内重定向 Mysql 流量

HaProxy 在一定时间间隔内重定向 Mysql 流量

我有一个带有 HaProxy 的 MariaDB 集群。由于 cronjobs 工作繁重,我需要每天在 07.00-07.10 之间将我的客户端重定向到其他机器。例如,我有 3 个服务器,ip 分别为 192.168.1.2、192.168.1.3、192.168.1.4。在 07.00-07.10 之间,我的 192.168.1.1 应用服务器不应使用 192.168.1.2。我该怎么做?

答案1

我认为最简单的方法是使用 haproxy-agent。例如:

haproxy 部分:

listen mysql
    bind *:3306
    mode tcp
    option tcplog
    balance leastconn
    default-server port 3306 agent-check agent-port 6789 weight 100 inter 1000 on-marked-down shutdown-sessions
    server server1 192.168.1.2 check
    server server2 192.168.1.3 check
    server server3 192.168.1.4 check

mysql 主机上的 /etc/xinet.d/haproxy-agent:

service haproxy-agent
{
    disable         = no
    flags           = REUSE
    log_on_failure  += USERID
    port            = 6789
    server          = /usr/local/bin/haproxy-agent
    socket_type     = stream
    type            = UNLISTED
    user            = nobody
    wait            = no
}

在/usr/local/bin/haproxy-代理:

#!/bin/bash
RES="up 100%"
TIME=$(date "+%H%M" | sed 's/^0\+//')
[[ "${TIME}" -ge 700 && "${TIME}" -le 710 ]] && RES="down"
echo "${RES}"

当然,代理代码应该更智能一些,不会重叠关闭 RDBMS 主机。顺便说一句,代理响应对于 haproxy 来说是可选的,因此如果它没有响应 - 好的,haproxy 会忽略这个事实。

相关内容