HaProxy перенаправить Mysql-трафик за промежуток времени
У меня есть кластер MariaDB с HaProxy. Мне нужно перенаправлять своих клиентов на другие машины каждый день с 07.00 до 07.10 из-за тяжелой работы cronjobs. Например, у меня есть 3 сервера, ips которых 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
/etc/xinet.d/haproxy-agent на mysql-hosts:
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 / местные / бен / 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 просто игнорирует этот факт.