Windows Azure, адресация экземпляров и липкие сеансы - PullRequest
5 голосов
/ 22 ноября 2011

Для проверки концепции я собрал факты о Windows Azure.Осталось 2 темы, на которые я не смог найти однозначного ответа.

  1. Липкие сессии / липкая балансировка нагрузки невозможна, я прав?Может быть, есть возможность с помощью диспетчера трафика Azure (WATM)?

  2. Можно ли рассматривать отдельные экземпляры развертывания, или все они находятся за этой непрозрачной стеной Azure?Или, по крайней мере, может ли экземпляр во время выполнения определить свой собственный идентификатор или что-то в этом роде, чтобы записать его в журнал?

Ответы [ 3 ]

1 голос
/ 22 ноября 2011

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

Единственный способ выполнить липкие сессии - это создать маршрутизатор запросов. После того, как вы запустите эту функцию (например, в своей собственной роли Web или Worker, как в примере, указанном sharptooth, в том же развертывании), эта роль сможет получить доступ к внутренним конечным точкам других ролей развертывания.

Хотя внутренние конечные точки не сбалансированы по нагрузке, маршрутизатор запросов может перечислить все экземпляры внутренней конечной точки (получая порт ip: для каждого) и затем выполнить собственную балансировку нагрузки или маршрутизацию.

Пример взаимодействия между ролями с использованием внутренних конечных точек приведен в этой статье MSDN.

1 голос
/ 22 ноября 2011

Пожалуйста, найдите ответы ниже:

  1. Липкие сессии / липкая балансировка нагрузки невозможны, я прав? Может быть, есть возможность с помощью диспетчера трафика Azure (WATM)

Вы правы. Там нет липких сессий с Windows Azure. И нет, вы не можете использовать Traffic Manager, чтобы помочь вам с липкостью. Диспетчер трафика поможет вам распределить нагрузку только по ролям, а не по экземплярам. Пожалуйста, сделайте разницу между ролью и экземпляром. Посмотрите на этот вопрос для получения дополнительной информации о ролях и экземплярах.

2. Можно ли адресовать отдельные экземпляры развертывания, или все они находятся за этой непрозрачной стеной Azure? Или, по крайней мере, может экземпляр во время выполнения определяет свой собственный идентификатор или что-то подобное в Чтобы записать это в журнал?

Вы не можете обратиться к конкретному экземпляру. Все они находятся за Windows Azure Load Balancers и FireWall. Но вы можете узнать из кода, какой у вас текущий экземпляр роли. Используйте свойство CurrentRoleInstance класса RoleEnvironment . Это будет объект типа RoleInstance , который имеет свойство ID .

0 голосов
/ 28 августа 2015

Точного ответа пока нет, но три лучших варианта:

  1. State Server - это позволит вам получать зашифрованные данные с сервера на сервер даже за пределами вашей сети. Вы можете сделать это, внедрив State Server в каждый экземпляр ваших веб-приложений или серверов.

  2. SQL Server (в памяти, это доступно только в 2014 и более новых версиях)

  3. Redis Cache на Azure

Три варианта решали практически любые проблемы с сессиями, с которыми я сталкивался за последние три года.

...