Acept systemd.socket
Evgeniy Berdnikov
bgx на protva.ru
Вт Мар 15 16:03:58 UTC 2016
On Tue, Mar 15, 2016 at 11:39:12AM -0400, S.A.N wrote:
> Evgeniy Berdnikov Wrote:
> -------------------------------------------------------
> > On Tue, Mar 15, 2016 at 10:33:10AM -0400, S.A.N wrote:
> > > Наш use case простой, нужно чтобы на ранней стадии загрузки OS,
> > нужные порты
> > > могли принимать конекты, systemd.socket идеальный вариант, мы его
> > используем
> > > для наших бекендов.
> >
> > Зачем принимать коннекты, если их некому обрабатывать? Такой use case
> > практически эквивалентен простым дропам syn'ов -- отличие будет лишь
> > в более долгом разгоне после старта сервера, зато нагрузка на сервер
> > будет подниматься плавнее. Т.е. я бы просто поставил где-нибудь на
> > первых этапах загрузки iptables -P INPUT DROP и всё, никаких плясок
> > вокруг сокетной инициализации не нужно.
> > --
...
> Nginx загружается намного позже ядра, наша задача - пока Nginx не
> загрузился, не терять, не дропать пакеты, а сделать очередь, которую
> обработает Nginx когда запустится.
Вы, вероятно, не поняли. Коннекции не теряются (вообще, не терять
коннекции и не дропать пакеты -- это разные задачи, вторая для tcp
не имеет большого смысла).
Есть смысл не режектить коннекции пока сервер не запустится, чтобы
клиенты не получали отлуп. Ваше решение в этом плане плохо тем, что
есть интервал времени между подъёмом сетевых интерфейсов и стартом
сервера, когда коннекции режектятся и клиенты получают отказ.
Использование systemd для сокетной инициализации от этого не спасает.
Если же сервис закрыть пакетным фильтром (на DROP) до подъёма интерфейса,
где-нибудь в pre-up, и открыть после старта сервера, то никаких
режектов не будет.
--
Eugene Berdnikov
Подробная информация о списке рассылки nginx-ru