-
Notifications
You must be signed in to change notification settings - Fork 0
balancer concept
Решение проблемы балансировки нагрузки может выглядеть так:
на одной машине поднимаем легковесный HTTP-сервер, который
по протоколу FastCGI взаимодействует с серверами нашего
приложения.
Рассмотрим пример настройки сервера lighttpd.
server.modules = (
"mod_access",
"mod_compress",
"mod_fastcgi"
)
В этой части конфигурационного файла перечислены модули, загружаемые lighttpd при запуске.
В частности, поддержка протокола FastCGI реализована в виде модуля mod_fastcgi.
server.bind = "127.0.0.1"
server.port = "4000"
В этой части конфигурационного файла указаны адрес интерфейса и порт, которые будет прослушивать
lighttpd.
server.document-root = "/var/www"
server.username = "www-data"
server.groupname = "www-data"
В этой части конфигурационного файла указаны имена пользователя и группы, от имени которых
будет работать lighttpd после сброса привилегий суперпользователя.
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm",
" index.lighttpd.html" )
fastcgi.server = (
"/fcgi" => (
(
"host" => "127.0.0.1",
"port" => 3000,
"check-local" => "disable",
"docroot" => "/"
)
)
)
В этой части конфигурационного файла мы настраиваем модуль mod_fastcgi следующим образом:
все запросы к каталогу fcgi будут перенапрявляться серверу, который прослушивает
интерфейс 127.0.0.1:3000.
Мне пока не совсем ясно, как подружить FastCGI и генератор контента: в моем случае я
сам написал логику по работе с протоколом FastCGI, но это такое решение не годится,
если мы будем использовать какой-нибудь веб-фреймворк - фреймворк сам будет слушать порт TCP,
а поскольку HTTP вкладывается в FastCGI, то фреймворк должен сам уметь работать с FastCGI.
Поэтому возникают два вопроса:
- Будем ли мы использовать
XFresh? Честно говоря, он мне не очень понравился, я не очень хорошо проникся его идеологией, хотя возможно, это самое простое решение. - Если да, то нужно узнать, поддерживает ли он
FastCGI.
Видимо, придется отказаться от FastCGI. Я нашел несколько готовых решений для балансера:
-
pen- балансер для прикоадных протоколов, работающих поверхTCP. Видимо, самое простое решение: для запуска достаточно дать командуpen <порт> <хост1>:<порт1> <хост2>:<порт2> ... poundbalance
Остальные посмоторю, если будет в этом необъодимость.