Rancher за haproxy - PullRequest
       12

Rancher за haproxy

0 голосов
/ 07 января 2019

У меня есть небольшой кластер, управляемый с помощью Rancher. Работают только двое: узел1 и узел2 .

Я мог бы добавить stack1 , добавить балансировщик нагрузки для этого стека или глобального, и он отлично работает. Но у меня есть проблемы с DNS.

Я мог бы указать, например, stack1.domain.com на node1.domain.com . Мой балансировщик нагрузки работает на node1 (или даже на всех узлах моего кластера), поэтому он работает.

Но если однажды мне нужно будет закрыть мой узел 1, я должен идти быстро и указать DNS stack1.domain.com на node2.domain.com Не очень хорошая идея.

Моей первой мыслью было использование небольшого haproxy-сервера перед моим кластером Rancher.

Итак, я указываю stack1.domain.com на haproxy.domain.com , а затем haproxy отправляет его на узел1 и узел2.

Но это не работает.

Я мог бы поставить что-то подобное

frontend  http *:80
    acl stack1           hdr(host)       -i stack1.domain.com
    use_backend bck_s1          if stack1

backend bck_s1
    mode http
    balance     roundrobin
    server      n1 node1.domain.com:80 check
    server      n2 node2.domain.com:80 check

Вероятно, это может сработать. Но если мне нужно добавить stack2, который также прослушивает 80 портов, я не смог бы использовать эту схему.

Я мог бы добавить bck_s2 , но он будет указывать на тот же node1 / node2 . Так что владелец ранчо не поймет, хочу ли я stack1 или stack2?

Возможно разрешить его, используя разные порты, но это не очень хорошая идея. Конечно, я мог прослушивать порты от stack1 до 80, от stack2 до 8080, но если у меня есть stack3, 4, ... он стал слишком сложным.

У меня была идея добавить какой-нибудь путь к бэкэнду. Как это:

backend bck_s1
    mode http
    balance     roundrobin
    server      n1 node1.domain.com:80/s1 check
    server      n2 node2.domain.com:80/s1 check

В этом случае я мог бы установить балансировщик нагрузки на Rancher на основе правила / s1, / s2 и т. Д. Но кажется, что это невозможно сделать с помощью haproxy. Я прав?

Итак, вопросы.

1) Можно ли реализовать это с помощью haproxy и как это сделать?

2) Есть ли другие решения, которые я мог бы использовать?

1 Ответ

0 голосов
/ 07 января 2019

Вместо использования определенных записей в haproxy.domain.com вы можете настроить подстановочный знак, указать оба узла вместе с настройкой проверки работоспособности для внутреннего интерфейса. Таким образом, когда вы отключаете узел-1, прокси-сервер HA может обнаружить его и больше не направлять трафик на этот узел. На стороне прокси-сервера HA все будет более динамично, и вам не потребуется вносить изменения в DNS.

Ссылка: - Подстановочный знак в поддомене для ACL в HAPROXY

...