Windows Azure & Java. Дополнительные возможности. Remote Desktop, Session Affinity. (ru-RU)Цикл "Windows Azure & Java": Связка Windows Azure & Java позволяет разработчику подключаться по удаленному рабочему столу (Remote Access, Remote Desktop Protocol (RDP)) к виртуальным машинам, выполняющим приложение. Для конфигурации удаленного доступа вам необходимо сконфигурировать соответствующим образом вкладку Remote Access в свойствах проекта (рис.1). Рис.1. Окно свойств проекта – настройки удаленного доступа По умолчанию каждый новый проект Windows Azure имеет включенную возможность удаленного доступа, основанную на использовании самоподписанного сертификата (который, кстати, идёт в тестовом варианте в комплекте с Windows Azure Plugin для Eclipse, и находится в папке cert в проекте Windows Azure). Данный самоподписанный сертификат имеет две части – файл публичного сертификата (SampleRemoteAccessPublic.cer) и файл сертификата типа Personal Information Exchange (SampleRemoteAccessPrivate.pfx), который содержит в себе приватный ключ для сертификата и пароль по умолчанию (Password1). Естественно, что данный сертификат не должен быть использован в реальном развертывании (достаточно префикса Sample). Вы можете использовать для целей удаленного доступа либо этот сертификат, либо воспользоваться способом, приведенным в данной статье. В первой статье цикла был создан проект, поэтому этого касаться в данной статье я не буду. Давайте настроим удаленный доступ для вашего проекта. Для этого:
Рис.2. Настройка удаленного доступа к ролям приложения.
Рис.3. Настройки самоподписанного сертификата.
Рис.4. Настройка самоподписанного сертификата.
Рис.5. Настройка удаленного доступа – окончание. Перейдите на вкладку Windows Azure (рис. 6). Рис. 6. Настройка облачного проекта для развертывания в облако. На вкладке Windows Azure выберите Deployment to cloud. Соберите ваш проект – Project –> Build All (CTRL + B). Залогиньтесь на портал управления Windows Azure под своим аккаунтом. Создайте вычислительный сервис, который будет выполнять код вашего приложения. На левой панели нажмите Hosted Services и нажмите кнопку New Hosted Service, расположенную в меню. Введите имя сервиса в текстовое поле Enter a name for your service и укажите URL, введя соответствующее значение Enter a URL prefix for your service, например, <yourname> guestbook, где <yourname> должно быть уникальным именем. Windows Azure использует это значение для создания URL точек входа в сервис. Примечание: Портал производит проверку доступности и соответствия правилам имени. Если имя не пройдёт проверку, будет выведено сообщение об ошибке. Рис. 7. Добавление нового сервиса. Как вы видите, нам доступно развертывание нашего сервиса в облако сразу же при создании сервиса-контейнера. Нажмите Browse Locally для обоих файлов и найдите их в папке deploy вашего проекта. После этого нажмите на кнопку Add Certificate для добавления сертификата.В открывшемся диалоге Upload Certificate нажмите в поле Certificate file кнопку Browse. В диалоге Open укажите местоположение вашего файла PFX. Далее укажите пароль в текстовом поле Password, который вы задавали ранее для вашего файла сертификата.Нажмите Ok. Рис. 8. При нажатии OK вам будет выведено предупреждение о том, что для выполнения SLA необходимо как минимум два экземпляра для роли. Нажмите Close и Ok. Дождитесь окончания развертывания роли. Рис. 9. Убедитесь, что развертывание прошло успешно и имеет статус Ready. Рис. 10. Успешное развертывание. Теперь необходимо подключиться удалённо. После успешного развертывания вы можете подключиться к вашей виртуальной машине приложения. Для этого перейдите на вкладку Hosted Services, Storage Accounts & CDN на портале управления Windows Azure, выберите необходимый для подключения экземпляр роли и нажмите кнопкуConnect (в секции Remote Access). Рис. 11. При нажатии на кнопку Connect вам будет предложено подключиться к экземпляру роли по RDP с помощью файла подключения. Откройте файл и введите пароль, который указали для подключения в настройках удаленного доступа To enable Remote Access in your package. Session Affinity Windows Azure Plugin для Eclipse with Java позволяет использовать HTTP session affinity (другое название – “липкие сессии для ролей”). Настройки данной функциональности находятся в диалоге Load Balancing. Рис. 12. Настройки Session Affinity. Для того, чтобы найти данный диалог, необходимо либо на вкладке Roles нажать Add, либо сконфигурировать уже имеющийся экземпляр роли – щелкнув правой кнопкой мыши на WorkerRole1 и нажав Properties, после чего необходимо развернуть Windows Azure Role и нажать Load Balancing. В появившемся диалоге Properties for WorkerRole1 Load Balancing отметьте опцию Enable HTTP session affinity (sticky sessions) for this role и выберите конечную точку входа для использования (Input endpoint to use). Если у вас еще не сконфигурирована точка входа, плагин предложит вам создать стандартную точку входа http (public:80, private:8080). Естественно, что можно сконфигурировать множество точек входа, но для липких сессий можно указать только одну. Рис. 13. Соберите ваш проект – Project –> Build All (CTRL + B). Теперь, после включения липких сессий, запросы HTTP, приходящие от клиентов, будут обрабатываться одним и тем же экземпляром ролей. Это позволяет делать гибкую обработку и реализовывать хранение состояния сессий. Необходимо уточнить, что данный механизм реализуется тем, что плагин установливает модуль IIS Application Request Routing в каждый из экземпляров вашей роли и, таким образом, маршрутизирует HTTP-запросы, сначала заворачивая их на себя, после чего отправляя их по соответствующим экземплярам. Что необходимо учитывать при работе с липкими сессиями:Липкие сессии и Session Affinity не работают в локальном эмуляторе вычислений. Здесь всё понятно – так как вычисления только эмулируются, не может быть никаких дополнительных установок модулей. К уже и так разросшемуся архиву вашего приложения добавляется дополнительный объем за счет скачивания дополнительных приложений. Запуск и инициализация ролей происходят дольше. Добавляет внутренняя конечная точка входа для реализации маршрутизации. Сохранение состояния сессий с помощью механизма Session AffinityТак как у нас уже имеется готовый проект со страницей .JSP, например, как в моем случае, это NewFile.jsp, мы можем реализовать сохранение состояния сессий. Нам пригодится еще один файл для просмотра того, как всё это работает – newsession.jsp. Ваш итоговый файл JSP должен выглядеть в соответствии с кодом ниже. Обратите внимание, что используется дополнительный код из предыдущей статьи! Код взят с
MSDN
Файл newsession.jsp должен иметь следующий код.
Теперь нам необходимо экспортировать пакет Java-проекта. Для этого кликните правой кнопкой мыши на проекте AzureLocApp и нажмите Export=>WAR File. В появившемся диалоговом окне нажмите Browse и выберите папку approot проекта Windows Azure (рис. 14.). Рис. 14. Разверните проект в облаке и просмотрите результат. |
Интеграция и интероперабильность
Интеграция с другими платформами Цикл "Windows Azure & Java":
|