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

Балансировка нагрузки DNS более 20 серверов с фиксированным сеансом и безопасностью

У меня 20 серверов в одном месте, и я хотел бы выполнить балансировку нагрузки. В любом случае может доходить до 100. Есть ли какой-нибудь известный способ сделать это? Я также хотел бы иметь какой-то механизм, который при запросах клиентов, например, service.example.com, он будет использовать тот же сервер до тех пор, пока машина не будет выведена из кластера из-за сбоя. Клиент делает DNS-запрос каждую минуту, и предположим, что TTL записи DNS сверху вниз составляет 30-60 секунд, в то время как другие могут быть примерно 24 часа или около того, поэтому каждый сеанс может быть действителен до 24 часов после первоначального запроса, а затем клиент будет переключиться на другой сервер.

Я считаю, что балансировщики нагрузки L4-L7 совершенно бесполезны, так как я думаю, что мог бы использовать только DNS.

Протоколы представляют собой TCP-соединения, основанные только на двоичном коде, а также HTTP-соединения.

Я думал, что для двоичного соединения (например, без какого-либо протокола) я мог бы использовать циклический перебор в DNS, поэтому каждый раз, когда я запрашиваю DNS, я получал разные ответы.

Для HTTP это то, чего я не знаю. Мог бы поставить, может быть, HAProxy и все, но насчет DNS не уверен.

Однажды я подумал о следующем методе. Отправьте клиента на некий "master.example.com", который является HTTP-сервером, который выполняет только перенаправления, которые генерируют полное доменное имя с уникальным идентификатором, что означает, что это похоже на идентификатор сеанса. Таким образом, это полное доменное имя всегда будет соответствовать одному и тому же IP-адресу и может использоваться только для запрашиваемого IP-адреса в течение следующих 24 часов или навсегда, пока сервер не будет выключен.

Это выглядит так:

http://redirect.example.com/resource => http://67hkkdbvh.example.com/resource

Теперь сеанс выглядит так:

1st minute: http://67hkkdbvh.example.com/resource/1 TTL 60s
2nd minute: http://67hkkdbvh.example.com/resource/2 TTL 60s

Если 67hkkdbvh умрет, клиент снова запрашивает перенаправление.

Теперь я не уверен, как я могу использовать HAProxy, чтобы помочь с этим ???

Конечно ты мог использовать DNS, но я предпочитаю использовать правильные балансировщики нагрузки (я использую Zeus Traffic Manager - теперь называемые Riverbed Stingrays - и Cisco ACE), они не только отлично масштабируются, но и вы можете настроить их для проверки фактических ответов сервера, а не просто пингов или ничего, поэтому вы можете вывести их из эксплуатации, не внося изменений. Но не бесплатно.

Похоже, вы хотите воспроизвести точный способ работы балансировщика нагрузки, поэтому реальный вопрос: что балансировщик нагрузки делает / не делает то, что вы хотите / не хотите?

ты пытался взглянуть на haproxy? кажется, что stackexchange использует это. это в HA-кластере может быть гораздо более элегантным решением, которое предоставит вам возможность аварийного переключения.