Что такое экземпляр веб-сайта Azure

Ясность веб-сайта Azure в отношении экземпляров: эти экземпляры работают на нескольких компьютерах, например, в среде фермы веб-серверов, где один клиентский запрос (сеанс) может быть сервером на другом сервере в ферме.

Проблема с серверным приложением asp.net заключается в том, что мы можем потерять переменную сеанса, если это так, чтобы решить эту проблему, мы добавляем машинный ключ в web.config, который гарантирует, что сеанс клиента всегда будет сервером на одном сервере, поэтому не будет любая потеря переменной сеанса.

Как работает экземпляр Azure. не означает ли это, что у нас может быть 10 веб-сайтов в рамках одного плана, например, s1 Standard.

Я размещаю веб-сайт на основе веб-формы asp.net в Azure. Я не понимаю, как именно работает экземпляр. есть много статей в Интернете, чтобы создать путаницу.


person Learning    schedule 17.05.2017    source источник


Ответы (2)


Особенность PaaS в том, что вам не нужно заботиться об этом. Если у вас сайт с полным состоянием, вы можете использовать параметр Привязка ARR, чтобы клиент всегда обращался к одному и тому же экземпляру: введите здесь описание изображения

person Martin Brandl    schedule 17.05.2017
comment
Теперь, конечно, если экземпляр выйдет из строя из-за сбоя или автоматического масштабирования, все сломается;) - person juunas; 17.05.2017
comment
ARR Affinity в значительной степени решает проблему, но не является полным доказательством, поскольку мы все еще можем потерять сеанс, если этот экземпляр выйдет из строя, и, насколько я понимаю, экземпляр похож на виртуальную машину. Таким образом, с моей стороны отказоустойчивость может быть решением, основанным на сеансе SQL SERVER. теперь это приводит к другому вопросу, что, если сеансовый сервер выйдет из строя, кластерный сервер SQL Server или компьютер виртуальной реальности с SQL Server для этой учетной записи пользователя. - person Learning; 17.05.2017
comment
Одним из вариантов может быть SQL Server, но предпочтительным ресурсом Azure для хранения информации о сеансе является Redis Cache. Стандартный уровень предлагает репликацию и аварийное переключение, а также SLA 99,99%. Это, вероятно, лучшее, что вы можете получить (нет 100% решения). - person Martin Brandl; 17.05.2017
comment
Хотя ARR Affinity помогает с совместимостью, он не может быть окончательным решением для приложения. Во-первых, вы не можете включить автоматическое масштабирование, так как все это рухнет, когда один из экземпляров будет отключен автоматическим масштабированием. Случаются аппаратные сбои, экземпляр может быть убит из-за этого. - person Learning; 17.05.2017

Добавление к ответу Мартина Брандла.

План службы приложений может иметь несколько экземпляров. Эти экземпляры запускают все приложения в этом плане. Так что это очень похоже на классическую веб-ферму. Разве что им проще управлять.

Существует лучший способ хранить информацию о сеансах в веб-ферме, чем полагаться на закрепленные сеансы с помощью ARR Affinity. Поместите данные сеанса в центральное место. Для этого вы можете использовать кэш Azure Redis или базу данных SQL. Для них существуют готовые поставщики состояния сеанса, которые можно просто подключить к приложению ASP.NET. Таким образом, ваше состояние сеанса не сохраняется в экземплярах, поэтому вам не нужно заботиться о том, чтобы клиенты обращались к одному и тому же серверу.

Проблема с ARR Affinity заключается в том, что Azure не гарантирует, что ваши экземпляры будут продолжать работать. Аппаратный сбой может вывести его из строя, и вы потеряете часть данных сеанса. Если вы используете автомасштабирование, то же самое.

person juunas    schedule 17.05.2017
comment
Я согласен, что Redis будет лучшим вариантом для хранения информации о сеансе. - person Martin Brandl; 17.05.2017