[recovery mode] NginX балансировка нагрузки на сервера Apache
Здравствуйте уважаемые хабро население. Хочу сразу предупредить, что с грамматикой у меня не очень, так как русский не родной и относительно недавно пишу и говорю на этом языке, поэтому заранее приношу свои извинения. По ходу работы года два тому назад начали проект, который основывается на HTML+PHP+MSSQL и конечно WEB-часть всего этого работает на известнейшем WEB-сервере Apache. Но со временем нагрузка начала возрастать и пришло время распределения нагрузки между несколькими WEB-серверами. После долгих обсуждений и споров мы пришли к следующему решению. Прошу переключит ваше внимание на следующую схему: Что необходимо для осуществления в реальность нашей схемы: 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троку нашего прокси сервера для балансировки нашего трафика ---Обновляем пакеты в CentOSyum 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 — Начинаем установку Nginxyum install nginx -y После установки у нас в каталоге /etc/nginx появляются файлы конфигурации NginX-а, далее сделаем бекап существующего файла cp nginx.conf /etc/nginx/nginx.conf.backup после чего начинаем изменение конфиг файлаrm nginx.confvi 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; Спасибо за внимание.Читать дальше →