Назад | Перейти на главную страницу

Haproxy% трафик в кластер

У меня есть веб-страница, которая работает на 1 сервере. Мы в процессе перехода на новую платформу с 3 серверами.

На первом этапе плана миграции нам нужно передать процент, скажем, 10% новому кластеру и 90% старому серверу. У новой платформы не обязательно должны быть закрепленные сеансы (общие сеансы с memcached).

Есть ли способ сделать это с помощью haproxy?

Этого можно достичь, подключив haproxy к самому себе, что даст вам два уровня балансировки нагрузки.

Первый listen использует balance source параметр и веса сервера, чтобы разделить трафик между существующим сервером и кластером. Второй уровень использует balance roundrobin без необходимости чередовать входящие соединения между членами кластера.

Listen 10.0.1.1:80
    Balance source
    Server oldserver 10.0.1.10 weight 90
    Server newcluster 10.0.1.20 weight 10

Listen 10.0.1.20:80
    Balance roundrobin
    Server cluster1 10.0.1.31
    Server cluster2 10.0.1.32
    Server cluster3 10.0.1.33

Вы определяете веса в haproxy, чтобы распределить нагрузку в соответствии с вашими потребностями.

Из официальной документации haproxy 1.4:

weight <weight>
  The "weight" parameter is used to adjust the server's weight relative to
  other servers. All servers will receive a load proportional to their weight
  relative to the sum of all weights, so the higher the weight, the higher the
  load. The default weight is 1, and the maximal value is 256. A value of 0
  means the server will not participate in load-balancing but will still accept
  persistent connections. If this parameter is used to distribute the load
  according to server's capacity, it is recommended to start with values which
  can both grow and shrink, for instance between 10 and 100 to leave enough
  room above and below for later adjustments.

Используйте вес в разделе haproxy server. «Вес 1 представляет самую низкую частоту, а 256 - самую высокую»

server newserver1 192.168.1.1:80 weight 3
server newserver2 192.168.1.2:80 weight 3
server newserver3 192.168.1.3:80 weight 3
server oldserver1 192.168.2.1:80 weight 90