Рассмотрим построение простого дешевого HTTP балансера на базе Debian+Nginx.
Итак мы имеем
- MySQL server - мы не будем рассматривать его конфигурацию, и предположим, что WEB ноды к нему обращаются и работают.
- WEB Server 1 - host1.example.com(принимает запросы, общается с базой данных, отдает контент)
- WEB Server 2 - host2.example.com(настроен идентично "WEB Server 1")
- HTTP balancer - NGINX
Схема выглядит примерно так:
Пункт 1: Установка Nginx
apt-get update apt-get install nginx -y
Пункт 2: Настройка Nginx
Думаю сейчас стоит обговорить обозначения:
- exampleproject - имя проекта(так будет называться наш upstream, в нем будут перечислены все WEB ноды)
- host1.example.com - web server(web нода, их может быть перечислено сколь угодно)
- example.com - имя домена
Перед внесением изменений скопируем оригинальный файл конфигурации, после чего создадим шаблон конфига.
Теперь можете отредактировать /etc/nginx/sites-available/default , изменить имя домена, проекта, адреса и количество WEB нод.cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.origin cat > /etc/nginx/sites-available/default <<EOF upstream exampleproject { server host1.example.com; server host2.example.com; } server { listen 80; ## listen for ipv4 server_name example.com; access_log /var/log/nginx/example.com.access.log; location / { proxy_pass http://exampleproject; } } EOF
Теперь можно перезапустить Nginx.
/etc/init.d/nginx restart Restarting nginx: nginx.
P.S. Upstream имеет кучу параметров. Серверам можно задавать вес, настраивать резервные сервера и прочее. По умолчанию запросы распределяются по серверам циклически (в режиме round-robin) с учётом весов серверов. Если при попытке работы с сервером произошла ошибка, то запрос будет передан следующему серверу, и так до тех пор, пока не будут опробованы все работающие серверы. Если не удастся получить успешный ответ ни от одного из серверов, то клиенту будет возвращён результат работы с последним сервером. Подробнее можно почитать Тут
Комментариев нет:
Отправить комментарий