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