Re: Ограничение на число исходящих соединений

2015-10-16 Пенетрантность kpoxa
Добрый день.

Возможно есть какие-то другие параметры.

15 октября 2015 г., 11:54 пользователь Evgeniy Berdnikov 
написал:

> On Thu, Oct 15, 2015 at 11:41:10AM +0300, kpoxa wrote:
> > все это можно сделать, но решение костыльное, использовать опцию
> reuseport
> > или  reuseaddr при коннекте к такому бэкэнду логичнее.
>
>  Эти опции не имеют отношения к обсуждаемой проблеме. Они относятся к
>  деталям того, как процессы делят адресное пространство прослушивающих
>  сокетов. А слушающие tcp-сокеты занимают часть с dst_ip=0.0.0.0 и
>  dst_port=0, эта часть не пересекается с подпространством параметров
>  сконнекченных сокетов.
> --
>  Eugene Berdnikov
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-15 Пенетрантность kpoxa
все это можно сделать, но решение костыльное, использовать опцию reuseport
или  reuseaddr при коннекте к такому бэкэнду логичнее.

15 октября 2015 г., 11:05 пользователь Evgeniy Berdnikov 
написал:

> On Thu, Oct 15, 2015 at 09:30:09AM +0300, kpoxa wrote:
> > Да, я не прав, однако не всегда есть возможность убедить бэкэнд слушать
> два
> > или более портов.
>
>  Вряд ли бэкенд, которому нужно более 65 тысяч коннектов одновременно,
>  представляет собой чёрный ящик, к которому не дают админского доступа.
>  А раз так, то помимо настройки юзерспейсного софта есть варианты решения
>  задачи иными средствами. Например, можно поднять несколько ip-адресов
>  на бэкенде, задав несколько upstream-серверов в конфиге nginx'a, или
>  ядерным nat'ом размножить порты.
> --
>  Eugene Berdnikov
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-15 Пенетрантность Evgeniy Berdnikov
On Thu, Oct 15, 2015 at 09:30:09AM +0300, kpoxa wrote:
> Да, я не прав, однако не всегда есть возможность убедить бэкэнд слушать два
> или более портов.

 Вряд ли бэкенд, которому нужно более 65 тысяч коннектов одновременно,
 представляет собой чёрный ящик, к которому не дают админского доступа.
 А раз так, то помимо настройки юзерспейсного софта есть варианты решения
 задачи иными средствами. Например, можно поднять несколько ip-адресов
 на бэкенде, задав несколько upstream-серверов в конфиге nginx'a, или
 ядерным nat'ом размножить порты.
-- 
 Eugene Berdnikov

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-15 Пенетрантность kpoxa
Добрый день.

Да, я не прав, однако не всегда есть возможность убедить бэкэнд слушать два
или более портов.

14 октября 2015 г., 18:59 пользователь Валентин Бартенев 
написал:

> On Wednesday 14 October 2015 18:01:28 kpoxa wrote:
> > Для исходящего соединения используется незанятая пара ip:port, порт
> берется
> > свободный из диапазона доступных для этого портов, а ip берется первый,
> из
> > ближней к целевому хосту сетевой карточки, если явно не задано иное,
> таким
> > образом с одного ip адреса может быть всего 65000 коннектов во вне на
> любые
> > разные ip и порты/
> >
> [..]
>
> Вы заблуждаетесь.  Нет проблемы с использованием одной и той же комбинации
> ip-порт для соединения с разными ip или разными портами на одном ip.
>
> --
> Валентин Бартенев
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-15 Пенетрантность Evgeniy Berdnikov
On Thu, Oct 15, 2015 at 11:41:10AM +0300, kpoxa wrote:
> все это можно сделать, но решение костыльное, использовать опцию reuseport
> или  reuseaddr при коннекте к такому бэкэнду логичнее.

 Эти опции не имеют отношения к обсуждаемой проблеме. Они относятся к
 деталям того, как процессы делят адресное пространство прослушивающих
 сокетов. А слушающие tcp-сокеты занимают часть с dst_ip=0.0.0.0 и
 dst_port=0, эта часть не пересекается с подпространством параметров
 сконнекченных сокетов.
-- 
 Eugene Berdnikov

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность Сергей Пузырёв
http://stackoverflow.com/questions/2332741/what-is-the-theoretical-maximum-number-of-open-tcp-connections-that-a-modern-lin

14 октября 2015 г., 18:01 пользователь kpoxa  написал:

> Для исходящего соединения используется незанятая пара ip:port, порт
> берется свободный из диапазона доступных для этого портов, а ip берется
> первый, из ближней к целевому хосту сетевой карточки, если явно не задано
> иное, таким образом с одного ip адреса может быть всего 65000 коннектов во
> вне на любые разные ip и порты/
>
> 14 октября 2015 г., 17:47 пользователь Сергей Пузырёв 
> написал:
>
> Мне кажется, вы недопонимаете свою проблему.
>>
>> Нельзя иметь более 65000 соединений к одному удаленному порту одного
>> удаленного IP-адреса с одного локального IP-адреса.
>> Можно иметь 65000 соединений к одному удаленному порту одного удаленного
>> IP-адреса с одного локального IP-адреса и еще 65000 соединений к другому
>> удаленному порту этого же удаленного IP-адреса с того же локального
>> IP-адреса.
>>
>> 14 октября 2015 г., 17:38 пользователь kpoxa  написал:
>>
>>> При чем тут где бэкэнд? Коннекты к любому количестве внешних портов
>>> будут идти всё равно он одного адреса, вопрос с исходящими соединениями на
>>> севрере с nginx, а не с входящими где бэкэнд, первые ограничиваются числом
>>> портов у используемого адреса, а вторые этого ограничения не имеют.
>>>
>>> 14 октября 2015 г., 17:33 пользователь Evgeniy Berdnikov 
>>> написал:
>>>
>>> On Wed, Oct 14, 2015 at 05:14:55PM +0300, kpoxa wrote:
 > коннекты на 127.0.0.1 тоже конечны, разве что применять unix socket в
 этом
 > месте.
 > Вот если бы можно было сделать
 > upstream ws {
 >   server 10.17.17.38:5003 bind 10.17.17. 100;
 >   server 10.17.17.38:5003 bind 10.17.17. 101;
 >   server 10.17.17.38:5003 bind 10.17.17. 102;
 > }
 > но тут нужно внедрять это в код nginx.

  А что мешает поднять бэкенд на разных портах: 10.17.17.38:5003,
  10.17.17.38:5004, ..:5005, и т.д.? Или на разных ip-адресах.
 --
  Eugene Berdnikov

 ___
 nginx-ru mailing list
 nginx-ru@nginx.org
 http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>>
>>>
>>>
>>> ___
>>> nginx-ru mailing list
>>> nginx-ru@nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>>
>>
>>
>>
>> --
>> С уважением,
>> Сергей Пузырёв
>> тел.: +7-916-980-70-45
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
С уважением,
Сергей Пузырёв
тел.: +7-916-980-70-45
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность Сергей Пузырёв
коннекты на 127.0.0.1 тоже конечны, но вы можете поднять много листенеров
на разных портах и они у вас будут умножаться.


14 октября 2015 г., 17:14 пользователь kpoxa  написал:

> коннекты на 127.0.0.1 тоже конечны, разве что применять unix socket в этом
> месте.
> Вот если бы можно было сделать
> upstream ws {
>   server 10.17.17.38:5003 bind 10.17.17. 100;
>   server 10.17.17.38:5003 bind 10.17.17. 101;
>   server 10.17.17.38:5003 bind 10.17.17. 102;
> }
> но тут нужно внедрять это в код nginx.
>
> 14 октября 2015 г., 17:11 пользователь Сергей Пузырёв 
> написал:
>
> Можно сделать ещё намного более извращенную схему с перепроксированием по
>> петле:
>>
>> upstream ws {
>>   server 10.17.17.38.5003;
>> }
>>
>> upstream internal-ws {
>>   server 127.0.0.1:5001;
>>   server 127.0.0.2:5001;
>>   server 127.0.0.3:5001;
>> }
>>
>> server {
>>   listen 15.15.72.198:443 ssl;
>>   proxy_connect_timeout 30s;
>>   proxy_timeout 3600s;
>>   proxy_pass internal-ws;
>>   error_log /var/log/nginx/websocket-ssl.log info;
>> }
>>
>> server {
>>   listen 127.0.0.1:5001
>>   proxy_pass ws;
>>   proxy_bind 1.1.1.1;
>> }
>>
>> server {
>>   listen 127.0.0.2:5001;
>>   proxy_pass ws;
>>   proxy_bind 2.2.2.2;
>> }
>>
>> server {
>>   listen 127.0.0.3:5001;
>>   proxy_pass ws;
>>   proxy_bind 3.3.3.3;
>> }
>>
>> 14 октября 2015 г., 17:00 пользователь kpoxa  написал:
>>
>>> Добрый день.
>>>
>>> Спасибо за попытку помочь, к сожалению proxy_bind в варианте с stream
>>> сервером можно использовать только один раз, т.к. в данном случае нет
>>> location как таковых, есть только очень длинные соединения с commet
>>> сервером, которые могут длиться днями, и это их нормальное поведение.
>>> Конфиг простой:
>>> stream {
>>> upstream ws {
>>> server  10.17.17.38:5003;
>>> }
>>>
>>> server {
>>> listen  15.15.72.198:443 ssl;
>>> #ssl params skipped;
>>> proxy_connect_timeout   30s;
>>> proxy_timeout   3600s;
>>> proxy_pass  ws;
>>> error_log /var/log/nginx/websocket-ssl.log info;
>>> }
>>> }
>>>
>>> 14 октября 2015 г., 16:43 пользователь Сергей Пузырёв <
>>> spuzi...@gmail.com> написал:
>>>
>>> Можно использовать директиву proxy_bind
 http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_bind и
 наваять грязный хак наподобие:

 split_clients $connection $downstream {
   50% 1;
   50% 2;
 }

 upstream backend {
   server A;
   server B;
 }

 server {
   location /bla {
 rewrite /down$downstream$request_uri;
   }
   location /down1 {
 rewrite /down1(.*)$ $1 break;
 proxy_pass http://backend;
 proxy_bind 1.1.1.1;
   }
   location /down2 {
 rewrite /down2(.*)$ $1 break;
 proxy_pass http://backend;
 proxy_bind 2.2.2.2;
   }
 }

 14 октября 2015 г., 16:36 пользователь kpoxa  написал:

> Проблемы с настройками ОС нет, я ж написал, уперся в лимит портов,
> грубо говоря в 64 000 +-, а надо 200 тыс. Пробовал и с указанными вами
> переменными играться, и, например, наличие нескольких IP из одной подсети,
> исходящие соединяются не распределяются по IP самостоятельно, для этого
> надо делать какие-то телодвижения в коже, коих сейчас, видимо, нет. 
> Поэтому
> у меня и вопрос - может быть они есть и я что-то упустил в доках? А если
> нет, то не планируются ли? Какой-нибудь downstream { out_ip ip1; out_ip
> ip2; } :)
>
> 2015-10-14 15:59 GMT+03:00 Alex Vorona :
>
>> Похоже проблемы с настройками ОС
>> http://nginx.org/en/docs/freebsd_tuning.html
>> net.inet.ip.portrange.randomized=0
>> net.inet.ip.portrange.first=1024
>> net.inet.ip.portrange.last=65535
>>
>> Для Linux  sysctl net.ipv4.ip_local_port_range
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



 --
 С уважением,
 Сергей Пузырёв
 тел.: +7-916-980-70-45

 ___
 nginx-ru mailing list
 nginx-ru@nginx.org
 http://mailman.nginx.org/mailman/listinfo/nginx-ru

>>>
>>>
>>> ___
>>> nginx-ru mailing list
>>> nginx-ru@nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>>
>>
>>
>>
>> --
>> С уважением,
>> Сергей Пузырёв
>> тел.: +7-916-980-70-45
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> 

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность kpoxa
При чем тут где бэкэнд? Коннекты к любому количестве внешних портов будут
идти всё равно он одного адреса, вопрос с исходящими соединениями на
севрере с nginx, а не с входящими где бэкэнд, первые ограничиваются числом
портов у используемого адреса, а вторые этого ограничения не имеют.

14 октября 2015 г., 17:33 пользователь Evgeniy Berdnikov 
написал:

> On Wed, Oct 14, 2015 at 05:14:55PM +0300, kpoxa wrote:
> > коннекты на 127.0.0.1 тоже конечны, разве что применять unix socket в
> этом
> > месте.
> > Вот если бы можно было сделать
> > upstream ws {
> >   server 10.17.17.38:5003 bind 10.17.17. 100;
> >   server 10.17.17.38:5003 bind 10.17.17. 101;
> >   server 10.17.17.38:5003 bind 10.17.17. 102;
> > }
> > но тут нужно внедрять это в код nginx.
>
>  А что мешает поднять бэкенд на разных портах: 10.17.17.38:5003,
>  10.17.17.38:5004, ..:5005, и т.д.? Или на разных ip-адресах.
> --
>  Eugene Berdnikov
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность Evgeniy Berdnikov
On Wed, Oct 14, 2015 at 05:14:55PM +0300, kpoxa wrote:
> коннекты на 127.0.0.1 тоже конечны, разве что применять unix socket в этом
> месте.
> Вот если бы можно было сделать
> upstream ws {
>   server 10.17.17.38:5003 bind 10.17.17. 100;
>   server 10.17.17.38:5003 bind 10.17.17. 101;
>   server 10.17.17.38:5003 bind 10.17.17. 102;
> }
> но тут нужно внедрять это в код nginx.

 А что мешает поднять бэкенд на разных портах: 10.17.17.38:5003,
 10.17.17.38:5004, ..:5005, и т.д.? Или на разных ip-адресах.
-- 
 Eugene Berdnikov

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность Сергей Пузырёв
Мне кажется, вы недопонимаете свою проблему.

Нельзя иметь более 65000 соединений к одному удаленному порту одного
удаленного IP-адреса с одного локального IP-адреса.
Можно иметь 65000 соединений к одному удаленному порту одного удаленного
IP-адреса с одного локального IP-адреса и еще 65000 соединений к другому
удаленному порту этого же удаленного IP-адреса с того же локального
IP-адреса.

14 октября 2015 г., 17:38 пользователь kpoxa  написал:

> При чем тут где бэкэнд? Коннекты к любому количестве внешних портов будут
> идти всё равно он одного адреса, вопрос с исходящими соединениями на
> севрере с nginx, а не с входящими где бэкэнд, первые ограничиваются числом
> портов у используемого адреса, а вторые этого ограничения не имеют.
>
> 14 октября 2015 г., 17:33 пользователь Evgeniy Berdnikov 
> написал:
>
> On Wed, Oct 14, 2015 at 05:14:55PM +0300, kpoxa wrote:
>> > коннекты на 127.0.0.1 тоже конечны, разве что применять unix socket в
>> этом
>> > месте.
>> > Вот если бы можно было сделать
>> > upstream ws {
>> >   server 10.17.17.38:5003 bind 10.17.17. 100;
>> >   server 10.17.17.38:5003 bind 10.17.17. 101;
>> >   server 10.17.17.38:5003 bind 10.17.17. 102;
>> > }
>> > но тут нужно внедрять это в код nginx.
>>
>>  А что мешает поднять бэкенд на разных портах: 10.17.17.38:5003,
>>  10.17.17.38:5004, ..:5005, и т.д.? Или на разных ip-адресах.
>> --
>>  Eugene Berdnikov
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
С уважением,
Сергей Пузырёв
тел.: +7-916-980-70-45
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность kpoxa
Для исходящего соединения используется незанятая пара ip:port, порт берется
свободный из диапазона доступных для этого портов, а ip берется первый, из
ближней к целевому хосту сетевой карточки, если явно не задано иное, таким
образом с одного ip адреса может быть всего 65000 коннектов во вне на любые
разные ip и порты/

14 октября 2015 г., 17:47 пользователь Сергей Пузырёв 
написал:

> Мне кажется, вы недопонимаете свою проблему.
>
> Нельзя иметь более 65000 соединений к одному удаленному порту одного
> удаленного IP-адреса с одного локального IP-адреса.
> Можно иметь 65000 соединений к одному удаленному порту одного удаленного
> IP-адреса с одного локального IP-адреса и еще 65000 соединений к другому
> удаленному порту этого же удаленного IP-адреса с того же локального
> IP-адреса.
>
> 14 октября 2015 г., 17:38 пользователь kpoxa  написал:
>
>> При чем тут где бэкэнд? Коннекты к любому количестве внешних портов будут
>> идти всё равно он одного адреса, вопрос с исходящими соединениями на
>> севрере с nginx, а не с входящими где бэкэнд, первые ограничиваются числом
>> портов у используемого адреса, а вторые этого ограничения не имеют.
>>
>> 14 октября 2015 г., 17:33 пользователь Evgeniy Berdnikov 
>> написал:
>>
>> On Wed, Oct 14, 2015 at 05:14:55PM +0300, kpoxa wrote:
>>> > коннекты на 127.0.0.1 тоже конечны, разве что применять unix socket в
>>> этом
>>> > месте.
>>> > Вот если бы можно было сделать
>>> > upstream ws {
>>> >   server 10.17.17.38:5003 bind 10.17.17. >> >100;
>>> >   server 10.17.17.38:5003 bind 10.17.17. >> >101;
>>> >   server 10.17.17.38:5003 bind 10.17.17. >> >102;
>>> > }
>>> > но тут нужно внедрять это в код nginx.
>>>
>>>  А что мешает поднять бэкенд на разных портах: 10.17.17.38:5003,
>>>  10.17.17.38:5004, ..:5005, и т.д.? Или на разных ip-адресах.
>>> --
>>>  Eugene Berdnikov
>>>
>>> ___
>>> nginx-ru mailing list
>>> nginx-ru@nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>>
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>
> --
> С уважением,
> Сергей Пузырёв
> тел.: +7-916-980-70-45
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность Валентин Бартенев
On Wednesday 14 October 2015 18:01:28 kpoxa wrote:
> Для исходящего соединения используется незанятая пара ip:port, порт берется
> свободный из диапазона доступных для этого портов, а ip берется первый, из
> ближней к целевому хосту сетевой карточки, если явно не задано иное, таким
> образом с одного ip адреса может быть всего 65000 коннектов во вне на любые
> разные ip и порты/
> 
[..]

Вы заблуждаетесь.  Нет проблемы с использованием одной и той же комбинации
ip-порт для соединения с разными ip или разными портами на одном ip.

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность Evgeniy Berdnikov
On Wed, Oct 14, 2015 at 05:47:53PM +0300, Сергей Пузырёв wrote:
> Мне кажется, вы недопонимаете свою проблему.
> 
> Нельзя иметь более 65000 соединений к одному удаленному порту одного
> удаленного IP-адреса с одного локального IP-адреса.
> Можно иметь 65000 соединений к одному удаленному порту одного удаленного
> IP-адреса с одного локального IP-адреса и еще 65000 соединений к другому
> удаленному порту этого же удаленного IP-адреса с того же локального
> IP-адреса.

 +1

 Здесь возникает EADDRNOTAVAIL (99) при connect(2) вследствие того, что
 сервер, пытаясь создать tcp-соединение с квадруплетом параметров
 (src_ip, src_port, dst_ip, dst_port) исчерпывает диапазон src_port
 при фиксированных трёх других параметрах (src_ip=15.15.72.198,
 dst_ip=10.17.17.38, dst_port=5003). При вызове connect(2) ядро перебирает
 лишь возможные значения src_port и сталкивается с тем, что все квадруплеты
 уже заняты, потому и возвращает ошибку.

 Если увеличить число dst_port и/или dst_ip, то пространство состояний
 для возможных коннекций расширится.

> 14 октября 2015 г., 17:38 пользователь kpoxa  написал:
> 
> > При чем тут где бэкэнд? Коннекты к любому количестве внешних портов будут
> > идти всё равно он одного адреса, вопрос с исходящими соединениями на
> > севрере с nginx, а не с входящими где бэкэнд, первые ограничиваются числом
> > портов у используемого адреса, а вторые этого ограничения не имеют.
> >
> > 14 октября 2015 г., 17:33 пользователь Evgeniy Berdnikov 
> > написал:
> >
> > On Wed, Oct 14, 2015 at 05:14:55PM +0300, kpoxa wrote:
> >> > коннекты на 127.0.0.1 тоже конечны, разве что применять unix socket в
> >> этом
> >> > месте.
> >> > Вот если бы можно было сделать
> >> > upstream ws {
> >> >   server 10.17.17.38:5003 bind 10.17.17. 100;
> >> >   server 10.17.17.38:5003 bind 10.17.17. 101;
> >> >   server 10.17.17.38:5003 bind 10.17.17. 102;
> >> > }
> >> > но тут нужно внедрять это в код nginx.
> >>
> >>  А что мешает поднять бэкенд на разных портах: 10.17.17.38:5003,
> >>  10.17.17.38:5004, ..:5005, и т.д.? Или на разных ip-адресах.
> >> --
> >>  Eugene Berdnikov
> >>
> >> ___
> >> nginx-ru mailing list
> >> nginx-ru@nginx.org
> >> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >
> >
> >
> > ___
> > nginx-ru mailing list
> > nginx-ru@nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx-ru
> >
> 
> 
> 
> -- 
> С уважением,
> Сергей Пузырёв
> тел.: +7-916-980-70-45

> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru


-- 
 Eugene Berdnikov

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность Алексей Сундуков
Добавить на бэкенд еще один IP и указать его как еще один upstream.

14 октября 2015 г., 15:42 пользователь kpoxa  написал:

> Добрый день.
>
> Использую stream для проброса соединений из вне + ssl прокси в дмз.
>
> Столкнулся со стандартным ограничением на число исходящих соединений на
> сервере в число доступных портов, в результате получаю ошибки вида:
>
> 2015/10/14 14:11:13 [crit] 11309#0: *28092735 connect() to
> 10.13.179.38:50003 failed (99: Cannot assign requested address) while
> connecting to upstream, client: 15.15.72.69, server: 15.15.72.198:443,
> upstream: " 10.13.179.38:50003", bytes from/to client:0/0, bytes from/to
> upstream:0/0
>
> В документации не нашел каких-либо способов обойти данное ограничение
> средствами nginx, например использовать пул адресов для коннектов к
> бэкэндам.
>
> --
> Рустам.
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность kpoxa
Проблемы с настройками ОС нет, я ж написал, уперся в лимит портов, грубо
говоря в 64 000 +-, а надо 200 тыс. Пробовал и с указанными вами
переменными играться, и, например, наличие нескольких IP из одной подсети,
исходящие соединяются не распределяются по IP самостоятельно, для этого
надо делать какие-то телодвижения в коже, коих сейчас, видимо, нет. Поэтому
у меня и вопрос - может быть они есть и я что-то упустил в доках? А если
нет, то не планируются ли? Какой-нибудь downstream { out_ip ip1; out_ip
ip2; } :)

2015-10-14 15:59 GMT+03:00 Alex Vorona :

> Похоже проблемы с настройками ОС
> http://nginx.org/en/docs/freebsd_tuning.html
> net.inet.ip.portrange.randomized=0
> net.inet.ip.portrange.first=1024
> net.inet.ip.portrange.last=65535
>
> Для Linux  sysctl net.ipv4.ip_local_port_range
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность Алексей Сундуков
>downstream { out_ip ip1; out_ip ip2; } :)
Он есть
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_next_upstream
только в данном случае это наверное не поможет, исходящее и до
проксируемого бэкэнда оно не доходит.

14 октября 2015 г., 17:36 пользователь kpoxa  написал:

> Проблемы с настройками ОС нет, я ж написал, уперся в лимит портов, грубо
> говоря в 64 000 +-, а надо 200 тыс. Пробовал и с указанными вами
> переменными играться, и, например, наличие нескольких IP из одной подсети,
> исходящие соединяются не распределяются по IP самостоятельно, для этого
> надо делать какие-то телодвижения в коже, коих сейчас, видимо, нет. Поэтому
> у меня и вопрос - может быть они есть и я что-то упустил в доках? А если
> нет, то не планируются ли? Какой-нибудь downstream { out_ip ip1; out_ip
> ip2; } :)
>
> 2015-10-14 15:59 GMT+03:00 Alex Vorona :
>
>> Похоже проблемы с настройками ОС
>> http://nginx.org/en/docs/freebsd_tuning.html
>> net.inet.ip.portrange.randomized=0
>> net.inet.ip.portrange.first=1024
>> net.inet.ip.portrange.last=65535
>>
>> Для Linux  sysctl net.ipv4.ip_local_port_range
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность Сергей Пузырёв
Можно использовать директиву proxy_bind
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_bind и
наваять грязный хак наподобие:

split_clients $connection $downstream {
  50% 1;
  50% 2;
}

upstream backend {
  server A;
  server B;
}

server {
  location /bla {
rewrite /down$downstream$request_uri;
  }
  location /down1 {
rewrite /down1(.*)$ $1 break;
proxy_pass http://backend;
proxy_bind 1.1.1.1;
  }
  location /down2 {
rewrite /down2(.*)$ $1 break;
proxy_pass http://backend;
proxy_bind 2.2.2.2;
  }
}

14 октября 2015 г., 16:36 пользователь kpoxa  написал:

> Проблемы с настройками ОС нет, я ж написал, уперся в лимит портов, грубо
> говоря в 64 000 +-, а надо 200 тыс. Пробовал и с указанными вами
> переменными играться, и, например, наличие нескольких IP из одной подсети,
> исходящие соединяются не распределяются по IP самостоятельно, для этого
> надо делать какие-то телодвижения в коже, коих сейчас, видимо, нет. Поэтому
> у меня и вопрос - может быть они есть и я что-то упустил в доках? А если
> нет, то не планируются ли? Какой-нибудь downstream { out_ip ip1; out_ip
> ip2; } :)
>
> 2015-10-14 15:59 GMT+03:00 Alex Vorona :
>
>> Похоже проблемы с настройками ОС
>> http://nginx.org/en/docs/freebsd_tuning.html
>> net.inet.ip.portrange.randomized=0
>> net.inet.ip.portrange.first=1024
>> net.inet.ip.portrange.last=65535
>>
>> Для Linux  sysctl net.ipv4.ip_local_port_range
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
С уважением,
Сергей Пузырёв
тел.: +7-916-980-70-45
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность Alex Vorona

Похоже проблемы с настройками ОС
http://nginx.org/en/docs/freebsd_tuning.html
net.inet.ip.portrange.randomized=0
net.inet.ip.portrange.first=1024
net.inet.ip.portrange.last=65535

Для Linux  sysctl net.ipv4.ip_local_port_range

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность kpoxa
Добрый день.

Спасибо за попытку помочь, к сожалению proxy_bind в варианте с stream
сервером можно использовать только один раз, т.к. в данном случае нет
location как таковых, есть только очень длинные соединения с commet
сервером, которые могут длиться днями, и это их нормальное поведение.
Конфиг простой:
stream {
upstream ws {
server  10.17.17.38:5003;
}

server {
listen  15.15.72.198:443 ssl;
#ssl params skipped;
proxy_connect_timeout   30s;
proxy_timeout   3600s;
proxy_pass  ws;
error_log /var/log/nginx/websocket-ssl.log info;
}
}

14 октября 2015 г., 16:43 пользователь Сергей Пузырёв 
написал:

> Можно использовать директиву proxy_bind
> http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_bind и
> наваять грязный хак наподобие:
>
> split_clients $connection $downstream {
>   50% 1;
>   50% 2;
> }
>
> upstream backend {
>   server A;
>   server B;
> }
>
> server {
>   location /bla {
> rewrite /down$downstream$request_uri;
>   }
>   location /down1 {
> rewrite /down1(.*)$ $1 break;
> proxy_pass http://backend;
> proxy_bind 1.1.1.1;
>   }
>   location /down2 {
> rewrite /down2(.*)$ $1 break;
> proxy_pass http://backend;
> proxy_bind 2.2.2.2;
>   }
> }
>
> 14 октября 2015 г., 16:36 пользователь kpoxa  написал:
>
>> Проблемы с настройками ОС нет, я ж написал, уперся в лимит портов, грубо
>> говоря в 64 000 +-, а надо 200 тыс. Пробовал и с указанными вами
>> переменными играться, и, например, наличие нескольких IP из одной подсети,
>> исходящие соединяются не распределяются по IP самостоятельно, для этого
>> надо делать какие-то телодвижения в коже, коих сейчас, видимо, нет. Поэтому
>> у меня и вопрос - может быть они есть и я что-то упустил в доках? А если
>> нет, то не планируются ли? Какой-нибудь downstream { out_ip ip1; out_ip
>> ip2; } :)
>>
>> 2015-10-14 15:59 GMT+03:00 Alex Vorona :
>>
>>> Похоже проблемы с настройками ОС
>>> http://nginx.org/en/docs/freebsd_tuning.html
>>> net.inet.ip.portrange.randomized=0
>>> net.inet.ip.portrange.first=1024
>>> net.inet.ip.portrange.last=65535
>>>
>>> Для Linux  sysctl net.ipv4.ip_local_port_range
>>>
>>> ___
>>> nginx-ru mailing list
>>> nginx-ru@nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>>
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>
> --
> С уважением,
> Сергей Пузырёв
> тел.: +7-916-980-70-45
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность Сергей Пузырёв
Можно сделать ещё намного более извращенную схему с перепроксированием по
петле:

upstream ws {
  server 10.17.17.38.5003;
}

upstream internal-ws {
  server 127.0.0.1:5001;
  server 127.0.0.2:5001;
  server 127.0.0.3:5001;
}

server {
  listen 15.15.72.198:443 ssl;
  proxy_connect_timeout 30s;
  proxy_timeout 3600s;
  proxy_pass internal-ws;
  error_log /var/log/nginx/websocket-ssl.log info;
}

server {
  listen 127.0.0.1:5001
  proxy_pass ws;
  proxy_bind 1.1.1.1;
}

server {
  listen 127.0.0.2:5001;
  proxy_pass ws;
  proxy_bind 2.2.2.2;
}

server {
  listen 127.0.0.3:5001;
  proxy_pass ws;
  proxy_bind 3.3.3.3;
}

14 октября 2015 г., 17:00 пользователь kpoxa  написал:

> Добрый день.
>
> Спасибо за попытку помочь, к сожалению proxy_bind в варианте с stream
> сервером можно использовать только один раз, т.к. в данном случае нет
> location как таковых, есть только очень длинные соединения с commet
> сервером, которые могут длиться днями, и это их нормальное поведение.
> Конфиг простой:
> stream {
> upstream ws {
> server  10.17.17.38:5003;
> }
>
> server {
> listen  15.15.72.198:443 ssl;
> #ssl params skipped;
> proxy_connect_timeout   30s;
> proxy_timeout   3600s;
> proxy_pass  ws;
> error_log /var/log/nginx/websocket-ssl.log info;
> }
> }
>
> 14 октября 2015 г., 16:43 пользователь Сергей Пузырёв 
> написал:
>
> Можно использовать директиву proxy_bind
>> http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_bind и
>> наваять грязный хак наподобие:
>>
>> split_clients $connection $downstream {
>>   50% 1;
>>   50% 2;
>> }
>>
>> upstream backend {
>>   server A;
>>   server B;
>> }
>>
>> server {
>>   location /bla {
>> rewrite /down$downstream$request_uri;
>>   }
>>   location /down1 {
>> rewrite /down1(.*)$ $1 break;
>> proxy_pass http://backend;
>> proxy_bind 1.1.1.1;
>>   }
>>   location /down2 {
>> rewrite /down2(.*)$ $1 break;
>> proxy_pass http://backend;
>> proxy_bind 2.2.2.2;
>>   }
>> }
>>
>> 14 октября 2015 г., 16:36 пользователь kpoxa  написал:
>>
>>> Проблемы с настройками ОС нет, я ж написал, уперся в лимит портов, грубо
>>> говоря в 64 000 +-, а надо 200 тыс. Пробовал и с указанными вами
>>> переменными играться, и, например, наличие нескольких IP из одной подсети,
>>> исходящие соединяются не распределяются по IP самостоятельно, для этого
>>> надо делать какие-то телодвижения в коже, коих сейчас, видимо, нет. Поэтому
>>> у меня и вопрос - может быть они есть и я что-то упустил в доках? А если
>>> нет, то не планируются ли? Какой-нибудь downstream { out_ip ip1; out_ip
>>> ip2; } :)
>>>
>>> 2015-10-14 15:59 GMT+03:00 Alex Vorona :
>>>
 Похоже проблемы с настройками ОС
 http://nginx.org/en/docs/freebsd_tuning.html
 net.inet.ip.portrange.randomized=0
 net.inet.ip.portrange.first=1024
 net.inet.ip.portrange.last=65535

 Для Linux  sysctl net.ipv4.ip_local_port_range

 ___
 nginx-ru mailing list
 nginx-ru@nginx.org
 http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>>
>>>
>>>
>>> ___
>>> nginx-ru mailing list
>>> nginx-ru@nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>>
>>
>>
>>
>> --
>> С уважением,
>> Сергей Пузырёв
>> тел.: +7-916-980-70-45
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
С уважением,
Сергей Пузырёв
тел.: +7-916-980-70-45
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: Ограничение на число исходящих соединений

2015-10-14 Пенетрантность kpoxa
коннекты на 127.0.0.1 тоже конечны, разве что применять unix socket в этом
месте.
Вот если бы можно было сделать
upstream ws {
  server 10.17.17.38:5003 bind 10.17.17. 100;
  server 10.17.17.38:5003 bind 10.17.17. 101;
  server 10.17.17.38:5003 bind 10.17.17. 102;
}
но тут нужно внедрять это в код nginx.

14 октября 2015 г., 17:11 пользователь Сергей Пузырёв 
написал:

> Можно сделать ещё намного более извращенную схему с перепроксированием по
> петле:
>
> upstream ws {
>   server 10.17.17.38.5003;
> }
>
> upstream internal-ws {
>   server 127.0.0.1:5001;
>   server 127.0.0.2:5001;
>   server 127.0.0.3:5001;
> }
>
> server {
>   listen 15.15.72.198:443 ssl;
>   proxy_connect_timeout 30s;
>   proxy_timeout 3600s;
>   proxy_pass internal-ws;
>   error_log /var/log/nginx/websocket-ssl.log info;
> }
>
> server {
>   listen 127.0.0.1:5001
>   proxy_pass ws;
>   proxy_bind 1.1.1.1;
> }
>
> server {
>   listen 127.0.0.2:5001;
>   proxy_pass ws;
>   proxy_bind 2.2.2.2;
> }
>
> server {
>   listen 127.0.0.3:5001;
>   proxy_pass ws;
>   proxy_bind 3.3.3.3;
> }
>
> 14 октября 2015 г., 17:00 пользователь kpoxa  написал:
>
>> Добрый день.
>>
>> Спасибо за попытку помочь, к сожалению proxy_bind в варианте с stream
>> сервером можно использовать только один раз, т.к. в данном случае нет
>> location как таковых, есть только очень длинные соединения с commet
>> сервером, которые могут длиться днями, и это их нормальное поведение.
>> Конфиг простой:
>> stream {
>> upstream ws {
>> server  10.17.17.38:5003;
>> }
>>
>> server {
>> listen  15.15.72.198:443 ssl;
>> #ssl params skipped;
>> proxy_connect_timeout   30s;
>> proxy_timeout   3600s;
>> proxy_pass  ws;
>> error_log /var/log/nginx/websocket-ssl.log info;
>> }
>> }
>>
>> 14 октября 2015 г., 16:43 пользователь Сергей Пузырёв > > написал:
>>
>> Можно использовать директиву proxy_bind
>>> http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_bind и
>>> наваять грязный хак наподобие:
>>>
>>> split_clients $connection $downstream {
>>>   50% 1;
>>>   50% 2;
>>> }
>>>
>>> upstream backend {
>>>   server A;
>>>   server B;
>>> }
>>>
>>> server {
>>>   location /bla {
>>> rewrite /down$downstream$request_uri;
>>>   }
>>>   location /down1 {
>>> rewrite /down1(.*)$ $1 break;
>>> proxy_pass http://backend;
>>> proxy_bind 1.1.1.1;
>>>   }
>>>   location /down2 {
>>> rewrite /down2(.*)$ $1 break;
>>> proxy_pass http://backend;
>>> proxy_bind 2.2.2.2;
>>>   }
>>> }
>>>
>>> 14 октября 2015 г., 16:36 пользователь kpoxa  написал:
>>>
 Проблемы с настройками ОС нет, я ж написал, уперся в лимит портов,
 грубо говоря в 64 000 +-, а надо 200 тыс. Пробовал и с указанными вами
 переменными играться, и, например, наличие нескольких IP из одной подсети,
 исходящие соединяются не распределяются по IP самостоятельно, для этого
 надо делать какие-то телодвижения в коже, коих сейчас, видимо, нет. Поэтому
 у меня и вопрос - может быть они есть и я что-то упустил в доках? А если
 нет, то не планируются ли? Какой-нибудь downstream { out_ip ip1; out_ip
 ip2; } :)

 2015-10-14 15:59 GMT+03:00 Alex Vorona :

> Похоже проблемы с настройками ОС
> http://nginx.org/en/docs/freebsd_tuning.html
> net.inet.ip.portrange.randomized=0
> net.inet.ip.portrange.first=1024
> net.inet.ip.portrange.last=65535
>
> Для Linux  sysctl net.ipv4.ip_local_port_range
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



 ___
 nginx-ru mailing list
 nginx-ru@nginx.org
 http://mailman.nginx.org/mailman/listinfo/nginx-ru

>>>
>>>
>>>
>>> --
>>> С уважением,
>>> Сергей Пузырёв
>>> тел.: +7-916-980-70-45
>>>
>>> ___
>>> nginx-ru mailing list
>>> nginx-ru@nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>>
>>
>>
>> ___
>> nginx-ru mailing list
>> nginx-ru@nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>
> --
> С уважением,
> Сергей Пузырёв
> тел.: +7-916-980-70-45
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru