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

less than 1 minute read

Приветствую тебя, дорогой читатель. В этой статье я хочу описать настройку Apache для балансировки нагрузки на несколько back-end серверов.
Для корректной работы понадобятся два модуля:

  • mod_proxy
  • mod_proxy_balancer

Пример конфигурации хоста:

<VirtualHost *:80>
	ServerName mywebsite.com
	ProxyRequests On
	ProxyVia On
	<Proxy balancer://mycluster>
		BalancerMember http://192.168.1.50:80
		BalancerMember http://192.168.1.51:80
		BalancerMember http://192.168.1.51:80
	</Proxy>
	ProxyPass / balancer://mycluster
</VirtualHost>

Для того что бы включить липкие сессии или source балансировку, нужно привести конфиг к следующему виду:

<VirtualHost *:80>
	ServerName mywebsite.com
	ProxyRequests On
	ProxyVia On
	Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
	<Proxy balancer://mycluster>
		BalancerMember http://192.168.1.50:80 route=1
		BalancerMember http://192.168.1.51:80 route=2
		BalancerMember http://192.168.1.51:80 route=3
		ProxySet stickysession=ROUTEID
	</Proxy>
	ProxyPass / balancer://mycluster
</VirtualHost>