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

Рекомендуется ли балансировка нагрузки или настройка высокой доступности?

У меня есть приложение, работающее на веб-сервере (ws1) и подключенное к серверу приложений (as1). У меня такое же приложение работает на другом веб-сервере (ws2) и другом сервере приложений (as2). Но у меня только один обратный прокси-сервер. Итак, моя установка что-то вроде

Итак, в настоящее время я балансирую нагрузку между этими серверами. Моя конфигурация Nginx выглядит так:

http {
    upstream myapp1 {
        server ws1.example.com;
        server ws2.example.com;

    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}

Но что лучше - балансировать нагрузку с помощью Nginx или произвести настройку высокой доступности. Если я сделаю настройку высокой доступности, следует ли кластеризовать веб-сервер и сервер приложений?

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

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

Для обеспечения высокой доступности вы можете использовать такую ​​услугу, как оставайся живым который использует протокол VRRP для предоставления высокодоступного Интернет-адреса. На самом деле работает очень хорошо. Подойдет конфигурация, подобная следующей.

Допустим, вы хотите, чтобы служба была видна на 10.10.10.100.

Создайте 2 машины, одну с IP 10.10.10.101, а другую с IP 10.10.10.102. Установите службу поддержки активности на обоих. Не забудьте установить: net.ipv4.ip_nonlocal_bind = 1 в sysctl.conf на обеих машинах.

Настройте с помощью конфигурации nginx, как описано.

Первые узлы keepalived.conf:

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass secretpass
    }
    virtual_ipaddress {
        10.10.10.100  
    }
}

Второй узел:

vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass secretpass
        }
        virtual_ipaddress {
            10.10.10.100
        }
    }

Теперь что произойдет, когда главная машина будет запущена, она предоставит виртуальный IP-адрес 10.10.10.100. Если вы остановите эту машину, другая получит IP-адрес.

Более полный пример: Простая настройка аварийного переключения keepalived в Ubuntu 14.04