Балансировка нагрузки - проблемы с ASP.NET SessionID - PullRequest
0 голосов
/ 28 августа 2018

Наши разработчики недавно сказали, что они добавили код для балансировки нагрузки для работы в нашем веб-приложении. Так что я провел последние 2 дня, и я в недоумении, почему это не работает. Сначала я обнаружил, что идентификаторы сайтов на обоих серверах IIS различны, поэтому это исправлено. В любом случае, когда балансировка настроена, ASP.NET_SessionId продолжает сбрасываться, как будто он не сохраняется должным образом в базе данных. Я посмотрел на стол и там есть запись.

Использование HAproxy и 2 сервера Windows 2016 IIS10. Глядя на оба сервера, приведенный ниже код - это то, что разработчики добавили.

<sessionState timeout="15" mode="SQLServer" sqlConnectionString="Integrated Security=SSPI;data source=DB1.resource.local;initial catalog=prodAPP;" allowCustomSqlDatabase="true" />
<machineKey decryptionKey="REMOVEDFORSECURITY" validationKey="REMOVEDFORSECURITY" />

Бэкэнд для HAProxy

backend prodAPP
balance roundrobin
mode http
option httpchk GET https://prodAPP.com
http-check disable-on-404
option http-server-close
option forwardfor
option redispatch
http-request set-header X-Forwarded-Port %[dst_port]
server webprod01 10.10.10.10:443 check ssl verify none fall 3 rise 5 inter 60000 weight 10
server webprod02 10.10.10.11:443 check ssl verify none fall 3 rise 5 inter 60000 weight 10

Есть идеи, что я могу сделать, чтобы эта штука работала?


EDIT / UPDATE

Итак, я подумал о том, чтобы вынуть прокси / балансировщик нагрузки из микса и протестировать, просто указав мой файл хоста на webserver1, войдя в веб-приложение и перемещаясь по нему. Затем измените файл хоста так, чтобы он указывал на webserver2, и сохраните файл хоста. Затем щелкнул ссылку и продолжил использовать веб-приложение без сброса ASP.NET_SessionId.

Итак, что происходит с прокси, который выполняет сброс ASP.NET_SessionId?


РЕДАКТИРОВАТЬ / ОБНОВИТЬ # 2 После того, как выяснилось, что мой хост-файл не изменился на самом деле должным образом, сокет сеанса chrome, похоже, придерживается этого оригинального хоста. Единственный способ заставить его поменять сервер - это отключить виртуальный сервер на сервере.

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

...