Балансировка нагрузки при помощи nginx

Краткое руководство по настройке конфигурационного файла веб-сервера nginx для балансировки нагрузки.

Переходим в каталог /etc/nginx/

# cd /etc/nginx/

и переименуем файл nginx.conf в nginx.conf.bak (на всякий случай)

# mv nginx.conf /etc/nginx/nginx.conf.bak

Затем создадим новый файл nginx.conf

# touch /etc/nginx/nginx.conf

открываем его

# nano /etc/nginx/nginx.conf

и внесём туда примерно такой конфиг:

events {
	worker_connections 768;
}

http {

	upstream nws {
		server 192.168.1.31:80;
		server 192.168.1.32:80;
	}
	
	server {
		listen 80;
		server_name gvm45.homenet.local;
		access_log /var/log/nginx/gvm45-access.log;
		error_log /var/log/nginx/gvm45-error.log;
		
		root /var/www/localhost;
		
		location / {
			proxy_pass http://gvm45/;
			proxy_read_timeout 15;
			proxy_connect_timeout 3;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-IP $remote_addr;
		}
	}
	
}

Самое главное здесь — это директива upstream, в ней находится перечень серверов с необходимыми параметрами для балансировки. В данной конфигурации нагрузка распределяется равномерно по серверам 192.168.1.31 и 192.168.1.32.

Также можно использовать параметр weight для того, чтобы распределить нагрузку по определённо заданной схеме, например:

		server 192.168.1.31:80 weight=7;
		server 192.168.1.32:80 weight=3;

То есть, из примера выше, из 10 запросов 7 пойдут на 192.168.1.31, а 3 запроса — на второй 192.168.1.32.

При использовании параметра max_fails к серверу будет совершено заданное количество подключений, и если все попытки окажутся безрезультатными, сервер будет считаться недоступным.

При использовании параметра fail_timeout сервер будет считаться недоступным по истечении заданного времени.

При использовании параметра backup сервер будет использоваться только в том случае, если другие окажутся не доступны.

Например:

		server 192.168.1.31:80 max_fails=5;
		server 192.168.1.32:80 max_fails=3 fail_timeout=10s;
		server 192.168.1.33:80 backup;

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

Добавить комментарий

Ваш адрес email не будет опубликован.