Pull to refresh

NginX балансировка нагрузки на сервера Apache

Reading time3 min
Views35K
Здравствуйте уважаемые хабро население.

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

По ходу работы года два тому назад начали проект, который основывается на HTML+PHP+MSSQL и конечно WEB-часть всего этого работает на известнейшем WEB-сервере Apache. Но со временем нагрузка начала возрастать и пришло время распределения нагрузки между несколькими WEB-серверами. После долгих обсуждений и споров мы пришли к следующему решению. Прошу переключит ваше внимание на следующую схему:

image

Что необходимо для осуществления в реальность нашей схемы:

1) NginX — прокси сервер для балансировки трафика
2) Два сервера Apache

В этой статье мы рассмотрим установку сервера балансировки трафика на основе NginX.
Для этого дела мы выберем операционную систему CentOS 6.4

Наш сервер имеет две сетевые карты одна из которых имеет выход в Интернет, для настройки переходим в нашему интерфейсу.

cd /etc/sysconfig/network-scripts

vi ifcfg-eth0


DEVICE=eth0
HWADDR=00:0C:33:6a:90:F8
TYPE=Ethernet
UUID=de83281a-sa20-4791-b588-5621718adf4d
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=217.11.175.73
NETMASK=255.255.255.224
GATEWAY=217.11.175.33
DNS1=217.11.190.2


Теперь у нас есть Интернет, далее настраиваем локальную сеть

cd /etc/sysconfig/network-scripts

vi ifcfg-eth0


DEVICE=eth1
HWADDR=00:0В:35:6a:90:F3
TYPE=Ethernet
UUID=de83281a-sa10-4791-b577-5621718adf4d
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.3
NETMASK=255.255.255.0


Теперь начнем установку и наcтроку нашего прокси сервера для балансировки нашего трафика

---Обновляем пакеты в CentOS
yum update -y


# wget nginx.org/packages/rhel/6/noarch/RPMS/nginx-release-rhel-6-0.el6.ngx.noarch.rpm
# rpm -ivh nginx-release-rhel-6-0.el6.ngx.noarch.rpm


— Начинаем установку Nginx
yum install nginx -y


После установки у нас в каталоге
/etc/nginx

появляются файлы конфигурации NginX-а, далее сделаем бекап существующего файла
cp nginx.conf /etc/nginx/nginx.conf.backup

после чего начинаем изменение конфиг файла
rm nginx.conf


vi nginx.conf


Теперь добавляем наш новый конфиг

# пользователь и группа от которого запускается процесс
user nginx;

# 3 рабочих процесса
worker_processes 3;

# Лог для ошибок
error_log /var/log/nginx/error.log debug;

events {
# максимум рабочих соединений
worker_connections 1024;
}

http {

# Подключаем таблицу mime
include mime.types;
# mime-тип по умолчанию
default_type application/octet-stream;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
sendfile on;

# Модуль позволяет описывать группы серверов, которые могут использоваться
# в директивах proxy_pass и fastcgi_pass.
upstream web {
#Этот параметр хеширует сессию по первым 4-м актетам IP-адреса что очень помогает если у кого то используются асинхронные запросы
ip_hash;
# Директива задаёт имя и параметры сервера. Обратите внимание, мы будем
# использовать имя «pv» в директиве proxy_pass
server 192.168.28.8 weight=2; #max_fails=60 fail_timeout=2s;
server 192.168.28.9 weight=2; #max_fails=60 fail_timeout=2s;

}
server {
# Слушать 80 порт
listen 80;
location / {

#Директива proxy_pass о котором говорили ранее
proxy_pass web;
# Подключаем параметры прокси
include /etc/nginx/proxy.conf;

}
}
}



В нашем конфиге мы подключили файл proxy.conf в котором укажем параметры проксирования

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
proxy_cache_bypass http;


Спасибо за внимание.

Tags:
Hubs:
Total votes 42: ↑17 and ↓25-8
Comments11

Articles