Есть задача — построить отказоустойчивый web-кластер высокой доступности.
- frontend — nginx
- loadbalancer — haproxy
- backend — apache
Дано: 2 сервера nginx, 2 сервера haproxy, 4 сервера apache
Но возникает академический интерес в расположении данных элементов в цепочку…
nginx — haproxy — apache ?
round-robin на входе, кеш до haproxy, haproxy распределяет нагрузку по апачам
Смущает round-robin на входе, в остальном вроде идет равномерное распределение нагрузки по апачам
haproxy — nginx — apache ?
Плохие стороны round-robin в рамках haproxy можно заменить keepalived (?)
Балансировка между апачами выглядит не так хорошо как с haproxy
Собственно приглашаю в комменты для обсуждения.
А смысл? nginx сам прекрасно балансит! Я бы ha выбросил за полной невостребованностью в данном случае.
nginx слишком деревянен в балансировке + он не делает адекватного healthcheck'a
тогда вариант либо убрать нгинкс вообще из цепочки или haproxy + nginx + apache и в нгинкс настроить схему: статику отдельно, плюс 1 нгинкс сервер на 2 апачи сервера, апачи принимают только динамические запросы, и настроены как upstream, других велосипедов думаю колотить ненужно.
nginx убирать нельзя, ибо апач задохнется.. ко второму вариант и склоняюсь больше, но к чему еще один nginx ?