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

Как сделать веб-страницу высокой доступности?

Когда нам нужна служба высокой доступности (она не учитывает, какой вид службы: это может быть база данных, система очередей, наше приложение), мы распространяем ее на множество машин, чтобы убедиться, что, когда одна машина не работает, остальные из них могут занять это дополнительная нагрузка.

Довольно просто.

Но как распределить балансировщики нагрузки на множество машин?

Запись DNS может указывать на один или несколько наших серверов. Но когда наш сервер не работает, DNS и любой клиент не знает, что конкретная машина не работает. Клиенты обратятся к нему с запросом и получат информацию, что наша веб-страница не работает.

Как кластеризовать уровень балансировщика нагрузки?

Во-первых, рассмотрите сложность, которую вы готовы взять на себя, чтобы обеспечить доступность выше единого средства балансировки нагрузки. Загрузка обычно не проблема, один хост может передать очень большое количество соединений.

Балансировщики нагрузки можно кластеризовать, как и все остальное, для устранения сбоев оборудования или других узлов. Примером с открытым исходным кодом может быть haproxy с поддержкой активности на основе VRRP. Как правило, для нескольких локальных проектов высокой доступности требуется один и тот же уровень 2. Что означает альтернативные решения для облаков, которые дают вам только уровень 3.

Уровень 2 не помогает Интернету добраться до исправного узла или если ваш центр обработки данных отключится. Это подразумевает умение использовать DNS или IP-маршрутизацию.

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

Направление одного и того же IP-адреса по другому пути является проблемой маршрутизации. Объявить маршрут к рабочему балансировщику нагрузки.

См. HAPROXY или аналогичную нагрузку / баланс. haproxy

ДОБАВИТЬ к вопросу ответа:

Хорошо, вам нужна только одна запись DNS

клиент <-> HAPROXY <-> сервер A <-> сервер B

HAPROXY находится на середине клиентских серверов.

Конфигурация HAPROXY вроде

bind *:80

        acl host_mysite hdr(host) -i mysite.com
        use_backend mysite if host_mysite


backend mysite
    mode http 
    balance roundrobin
    option httpclose
    option forwardfor
    server  serverA ip:port check inter 2000
    server  serverB ip:port check inter 2000