Jump to content

"Недопустимый сеанс или тайм-аут сеанса" - при балансировки.


OlegTimkiv

Recommended Posts

Добрый день! Балансирует nginx.

Работает только правильно "ip-hash".  В других случаях (round-robin, least-connected) ошибка "Недопустимый сеанс или тайм-аут сеанса". Может кто-нибудь сталкивался с таким поведением?    

 

upstream cache-api {
ip_hash;
# random;
server 172.17.1.87:85 max_fails=5 fail_timeout=10s;
server 172.17.1.151:85 max_fails=5 fail_timeout=10s;
server 172.17.1.98:85 max_fails=2 fail_timeout=10s;
# server 172.17.1.87:85;
# server 172.17.1.151:85;
# server 172.17.1.98:85;
}

 

Link to comment
Share on other sites

Добрый день, ну все разумно

В случае ip_hash запрос отправляется на первоначальный узел.

В остальных, куда бог пошлет.

Соответственно проксируемый сервер первый раз видит сессию и недоумевает.

 

Link to comment
Share on other sites

Просто подождите когда гиперсервер начнет поддерживать несколько серверов.

Да и что у Вас там за нагрузка что один гипер уже не справляется и надо распределять нагрузку на несколько серверов?

Link to comment
Share on other sites

  • 2 weeks later...
On 7/16/2021 at 4:07 PM, zilav said:

Просто подождите когда гиперсервер начнет поддерживать несколько серверов.

Да и что у Вас там за нагрузка что один гипер уже не справляется и надо распределять нагрузку на несколько серверов?

Планируется от 1000 до 2000 подключений, один гипер должен справиться.  Сейчас на всякий случай смотрю как сбалансировать на другой сервер.     

Link to comment
Share on other sites

6 hours ago, OlegTimkiv said:

Планируется от 1000 до 2000 подключений, один гипер должен справиться.  Сейчас на всякий случай смотрю как сбалансировать на другой сервер.     

Столько у вас по идее и на одном сервере должно выдержать, но была заявлена поддержка фермы (нескольких серверов), но когда она точно будет никто точно не скажет.

В составе дистрибутива идет утилита для стресс тестирования, попробуйте ей нагрузите какой-нибудь Ваш прототип и прикиньте какое железо понадобится для поддержки вашего количества клиентов.

Link to comment
Share on other sites

On 7/29/2021 at 9:10 AM, OlegTimkiv said:

Планируется от 1000 до 2000 подключений, один гипер должен справиться.  Сейчас на всякий случай смотрю как сбалансировать на другой сервер.     

Скорее всего будет плохо, посмотрите сколько потребляет одна сессия умножьте на количество одновременных подключений, ужаснитесь, перейдите на php

 

Link to comment
Share on other sites

On 8/2/2021 at 8:54 PM, stas said:

Скорее всего будет плохо, посмотрите сколько потребляет одна сессия умножьте на количество одновременных подключений, ужаснитесь, перейдите на php

 

Обнаружился интересный момент.  У нас отправляться post запрос на этот же сервер(другой поддомен) 

  HTTP := nil;
  HTTP := TIdHTTP.Create(nil);

  LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(HTTP);
  //Протестированно и запущено на 10.3 indy 10.6.2.5366
  LHandler.SSLOptions.SSLVersions := GetVerisonSSL;
  LHandler.SSLOptions.CipherList := 'ALL';
  HTTP.IOHandler := LHandler;

  PostData := TStringList.Create;
  PostData.Clear;

  PostData.Add(Format('ID=%s', [x.S['ID']]));
  //Добавление параметров  
    
  HTTP.Post(URL, PostData);

 

nginx настроен по правилу ip_hash. Все запросы клиента пойдут на один сервер, тут получается у некоторых пользователей все ок а у других EIdHTTPProtocolException  HTTP/1.1 500. Убираем балансировку все работает. Не могу понять дело в настройках nginx или Indy- надо ещё что-то указывать?      

Link to comment
Share on other sites

  • 1 month later...

3 сервера с HyperServer

в nginx

split_clients "${remote_addr}AAA" $back_id {
  40.0%  "192.168.0.1:8087";
  30.0%  "192.168.0.2:8087";
  *      "192.168.0.3:8087";
}

server {

  # ...

  location / {
    proxy_pass http://$back_id;
  }

}

 

Link to comment
Share on other sites

22 hours ago, Kos said:

3 сервера с HyperServer

в nginx

split_clients "${remote_addr}AAA" $back_id {
  40.0%  "192.168.0.1:8087";
  30.0%  "192.168.0.2:8087";
  *      "192.168.0.3:8087";
}

server {

  # ...

  location / {
    proxy_pass http://$back_id;
  }

}

 

И как?

Link to comment
Share on other sites

уже год работает стабильно.

почти равномерно распределяет клиентов на сервера с самого старта, по хешу(MurmurHash2) IP адреса клиента опеределяется постоянный сервер.

в блоке split_clients подобрать % распеределения

 

  • Like 1
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...