У меня есть приложение, работающее на веб-сервере (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