Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Service Fabric — это платформа распределенных систем для развертывания масштабируемых и надежных микрослужб и контейнеров и управления ими.
Запуск существующего приложения в контейнере Windows в кластере Service Fabric не требует каких-либо изменений в приложении. В этом кратком руководстве показано, как развернуть предварительно созданный образ контейнера Docker в приложении Service Fabric. По завершении у вас будет работающий контейнер с Windows Server Core 2016 и IIS. В этом кратком руководстве описывается развертывание контейнера Windows. Ознакомьтесь с этим кратким руководством по развертыванию контейнера Linux.
Из этого краткого руководства вы узнаете, как:
- Упаковка контейнера образов Docker
- Настройка связи
- Создание и упаковка приложения Service Fabric
- Развертывание приложения контейнера в Azure
Note
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать, ознакомьтесь с разделом Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Миграция Azure PowerShell с AzureRM на Az.
Prerequisites
- Подписка Azure (вы можете создать бесплатную учетную запись).
- Компьютер, выполняющий разработку:
- Visual Studio 2019 или Windows 2019.
- Пакет SDK и средства Service Fabric.
Упаковка контейнера образов Docker с помощью Visual Studio
Пакет SDK и средства Service Fabric предоставляют шаблон службы для развертывания контейнера в кластере Service Fabric.
Запустите Visual Studio как "Администратор". Выберите Файл > Создать > Проект.
Выберите приложение Service Fabric, назовите его MyFirstContainer и нажмите кнопку "Создать".
Выберите контейнер из шаблонов размещенных контейнеров и приложений .
В поле "Имя образа" введите "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016", базовый образ Windows Server Core Server и IIS.
Настройте сопоставление портов контейнера с узлом, чтобы входящие запросы к службе через порт 80 сопоставлялись с портом 80 в контейнере. Установите для порта контейнера значение "80" и задайте для порта узла значение "80".
Назовите службу MyContainerService и нажмите кнопку "ОК".
Укажите сборку ОС для контейнерного образа
Контейнеры, созданные с определенной версией Windows Server, могут не запускаться на узле под управлением другой версии Windows Server. Например, контейнеры, созданные с помощью Windows Server версии 1709, не выполняются на узлах под управлением Windows Server 2016. Дополнительные сведения см. в статье о совместимости контейнерной ОС Windows Server и ОС узла.
В среде выполнения Service Fabric версии 6.1 и более поздних версий можно указать несколько образов ОС для каждого контейнера и пометить каждый из них с версией сборки ОС, в которую она должна быть развернута. Это помогает убедиться, что приложение будет работать на разных узлах под управлением различных версий ОС Windows. Дополнительные сведения см. в разделе "Указание образов контейнеров сборки ОС".
Корпорация Майкрософт публикует различные образы для версий IIS, созданных на различных версиях Windows Server. Чтобы убедиться, что Service Fabric развертывает контейнер, совместимый с версией Windows Server, работающей на узлах кластера, где он развертывает приложение, добавьте следующие строки в файлApplicationManifest.xml . Версия сборки для Windows Server 2016 — 14393, а версия сборки для Windows Server версии 1709 — 16299.
<ContainerHostPolicies CodePackageRef="Code">
<ImageOverrides>
...
<Image Name="mcr.microsoft.com/windows/servercore/iis:windowsservercore-1803" />
<Image Name= "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016" Os="14393" />
<Image Name="mcr.microsoft.com/windows/servercore/iis:windowsservercore-1709" Os="16299" />
</ImageOverrides>
</ContainerHostPolicies>
Манифест службы продолжает указывать только один образ для nanoserver. mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016
Кроме того, в файлеApplicationManifest.xml измените passwordEncrypted на false. Учетная запись и пароль пусты для общедоступного образа контейнера, который находится в Docker Hub, поэтому мы отключаем шифрование, так как шифрование пустого пароля приведет к возникновению ошибки сборки.
<RepositoryCredentials AccountName="" Password="" PasswordEncrypted="false" />
Создание кластера
В следующем примере скрипта создается кластер Service Fabric с пятью узлами, защищенный сертификатом X.509. Команда создает самозаверяющий сертификат и отправляет его в новое хранилище ключей. Сертификат также копируется в локальный каталог. Дополнительные сведения о создании кластера с помощью этого скрипта см. в разделе "Создание кластера Service Fabric".
При необходимости установите Azure PowerShell с помощью инструкций, приведенных в руководстве по Azure PowerShell.
Перед выполнением следующего скрипта в PowerShell выполните команду Connect-AzAccount для создания подключения к Azure.
Скопируйте следующий скрипт в буфер обмена и откройте isE Windows PowerShell. Вставьте содержимое в пустое окно Untitled1.ps1. Затем укажите значения переменных в скрипте: subscriptionId, certpwd, certfolder, , adminuseradminpwdи т. д. Указанный каталог certfolder должен существовать перед запуском скрипта.
#Provide the subscription Id
$subscriptionId = 'yourSubscriptionId'
# Certificate variables.
$certpwd="Password#1234" | ConvertTo-SecureString -AsPlainText -Force
$certfolder="c:\mycertificates\"
# Variables for VM admin.
$adminuser="vmadmin"
$adminpwd="Password#1234" | ConvertTo-SecureString -AsPlainText -Force
# Variables for common values
$clusterloc="SouthCentralUS"
$clustername = "mysfcluster"
$groupname="mysfclustergroup"
$vmsku = "Standard_D2_v2"
$vaultname = "mykeyvault"
$subname="$clustername.$clusterloc.cloudapp.azure.com"
# Set the number of cluster nodes. Possible values: 1, 3-99
$clustersize=5
# Set the context to the subscription Id where the cluster will be created
Select-AzSubscription -SubscriptionId $subscriptionId
# Create the Service Fabric cluster.
New-AzServiceFabricCluster -Name $clustername -ResourceGroupName $groupname -Location $clusterloc `
-ClusterSize $clustersize -VmUserName $adminuser -VmPassword $adminpwd -CertificateSubjectName $subname `
-CertificatePassword $certpwd -CertificateOutputFolder $certfolder `
-OS WindowsServer2016DatacenterwithContainers -VmSku $vmsku -KeyVaultName $vaultname
После предоставления значений переменных нажмите клавишу F5 , чтобы запустить скрипт.
После запуска скрипта и создания кластера найдите ClusterEndpoint среди выходных данных. Рассмотрим пример.
...
ClusterEndpoint : https://southcentralus.servicefabric.azure.com/runtime/clusters/b76e757d-0b97-4037-a184-9046a7c818c0
Установка сертификата для кластера
Теперь мы установим PFX в Хранилище сертификатов CurrentUser\My . PFX-файл будет находиться в каталоге, указанном с помощью certfolder переменной среды в приведенном выше скрипте PowerShell.
Перейдите в этот каталог, а затем выполните следующую команду PowerShell, заменив имя PFX-файла, который находится в каталоге, и пароль, указанный в certfolder переменной certpwd . В этом примере текущий каталог устанавливается в каталог, указанный certfolder переменной в скрипте PowerShell. Оттуда выполняется следующая Import-PfxCertificate команда:
PS C:\mycertificates> Import-PfxCertificate -FilePath .\mysfclustergroup20190130193456.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString Password#1234 -AsPlainText -Force)
Команда возвращает отпечаток:
...
PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My
Thumbprint Subject
---------- -------
0AC30A2FA770BEF566226CFCF75A6515D73FC686 CN=mysfcluster.SouthCentralUS.cloudapp.azure.com
Запомните значение отпечатка пальца для следующего шага.
Развертывание приложения в Azure с помощью Visual Studio
Теперь, когда приложение готово, его можно развернуть в кластере непосредственно из Visual Studio.
Щелкните myFirstContainer правой кнопкой мыши в обозревателе решений и выберите "Опубликовать". Откроется диалоговое окно публикации.
Скопируйте содержимое ниже CN= в окне PowerShell при выполнении приведенной Import-PfxCertificate выше команды и добавьте в него порт 19000 . Например: mysfcluster.SouthCentralUS.cloudapp.azure.com:19000. Скопируйте его в поле конечной точки подключения . Помните это значение, так как вам потребуется в следующем шаге.
Щелкните "Дополнительные параметры подключения" и проверьте сведения о параметрах подключения.
Значения FindValue и ServerCertThumbprint должны соответствовать отпечатку сертификата, установленного при запуске Import-PfxCertificate на предыдущем шаге. Затем нажмите кнопку "Опубликовать".
Каждое приложение в кластере должно иметь уникальное имя. Если есть конфликт имен, переименуйте проект Visual Studio и снова разверните его.
Откройте браузер и перейдите к адресу, который вы ввели в поле "Конечная точка подключения " на предыдущем шаге. При необходимости можно опционально добавить идентификатор http:// схемы и порт :80 к URL-адресу. Например: http://mysfcluster.SouthCentralUS.cloudapp.azure.com:80.
Вы увидите 
Очистка
Пока кластер работает, продолжается начисление платы. Рассмотрите возможность удаления кластера.
Дальнейшие шаги
В этом кратком руководстве вы узнали, как выполнить следующие действия:
- Упаковка контейнера образов Docker
- Настройка связи
- Создание и упаковка приложения Service Fabric
- Развертывание приложения контейнера в Azure
Дополнительные сведения о работе с контейнерами Windows в Service Fabric см. в руководстве по приложениям контейнеров Windows.