Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйвер томов Файлы Azure — это плагин томов Docker, который предоставляет тома на основе Файлы Azure для контейнеров Docker. Оно упаковано как приложение Service Fabric, которое можно развернуть в кластере Service Fabric, чтобы предоставлять тома для других контейнерных приложений Service Fabric в этом кластере.
Примечание
Выпущена общедоступная версия 6.5.661.9590 подключаемого модуля томов Файлы Azure.
Prerequisites
Windows-версия подключаемого модуля томов Файлы Azure работает только в операционных системах Windows Server версии 1709, Windows 10 версии 1709 или более поздних версиях.
Linux-версия подключаемого модуля томов Файлы Azure работает во всех версиях операционной системы, поддерживаемых Service Fabric.
Плагин томов Файлы Azure работает только в Service Fabric версии 6.2 и новее.
Следуйте инструкциям в документации Файлы Azure, чтобы создать файловый ресурс, который контейнерное приложение Service Fabric будет использовать в качестве тома.
Вам потребуется PowerShell с установленным модулем Service Fabric или SFCTL.
Если вы используете контейнеры Hyper-V, в раздел ClusterManifest (локальный кластер) или fabricSettings в шаблоне Azure Resource Manager (кластере Azure) или ClusterConfig.json (автономный кластер) необходимо добавить следующие фрагменты кода.
В ClusterManifest необходимо добавить следующее в разделе "Размещение". В этом примере имя тома — sfazurefile , а порт, который он прослушивает в кластере, — 19100. Замените их правильными значениями для кластера.
<Section Name="Hosting">
<Parameter Name="VolumePluginPorts" Value="sfazurefile:19100" />
</Section>
В разделе FabricSettings в шаблоне Azure Resource Manager (для развертываний Azure) или ClusterConfig.json (для автономных развертываний) необходимо добавить следующий фрагмент кода. Опять же, замените значения имени тома и порта собственными.
"fabricSettings": [
{
"name": "Hosting",
"parameters": [
{
"name": "VolumePluginPorts",
"value": "sfazurefile:19100"
}
]
}
]
Развертывание примера приложения с помощью драйвера томов Файлы Azure для Service Fabric
Использование Azure Resource Manager с помощью предоставленного скрипта PowerShell (рекомендуется)
Если кластер основан на Azure, рекомендуется развертывать приложения в нем с помощью модели ресурсов приложения Azure Resource Manager, чтобы упростить использование и помочь перейти к модели обслуживания инфраструктуры в виде кода. Этот подход избавляет от необходимости отслеживать версию приложения, используемую драйвером томов Файлы Azure. Он также позволяет поддерживать отдельные шаблоны Azure Resource Manager для каждой поддерживаемой ОС. Сценарий предполагает, что вы развертываете последнюю версию приложения Файлы Azure и принимает параметры для типа ОС, идентификатора подписки кластера и группы ресурсов. Скрипт можно скачать на сайте скачивания Service Fabric. Обратите внимание, что при этом параметр ListenPort, то есть порт, на котором плагин тома Файлы Azure прослушивает запросы от демона Docker, автоматически устанавливается равным 19100. Его можно изменить, добавив параметр с именем "listenPort". Убедитесь, что порт не конфликтует с любым другим портом, используемым кластером или приложениями.
команда развертывания Azure Resource Manager для Windows:
.\DeployAzureFilesVolumeDriver.ps1 -subscriptionId [subscriptionId] -resourceGroupName [resourceGroupName] -clusterName [clusterName] -windows
команда развертывания Azure Resource Manager для Linux:
.\DeployAzureFilesVolumeDriver.ps1 -subscriptionId [subscriptionId] -resourceGroupName [resourceGroupName] -clusterName [clusterName] -linux
После успешного запуска скрипта можно перейти к разделу настройки приложения.
Развертывание вручную для автономных кластеров
Приложение Service Fabric, которое предоставляет тома для ваших контейнеров, можно скачать с сайта загрузки Service Fabric. Приложение можно развернуть в кластере с помощью API PowerShell, CLI или FabricClient.
С помощью командной строки измените каталог на корневой каталог скачаемого пакета приложения.
cd .\AzureFilesVolume\cd ~/AzureFilesVolumeЗатем скопируйте пакет приложения в хранилище образов с соответствующими значениями [ApplicationPackagePath] и [ImageStoreConnectionString]:
Copy-ServiceFabricApplicationPackage -ApplicationPackagePath [ApplicationPackagePath] -ImageStoreConnectionString [ImageStoreConnectionString] -ApplicationPackagePathInImageStore AzureFilesVolumePluginsfctl cluster select --endpoint https://testcluster.westus.cloudapp.azure.com:19080 --pem test.pem --no-verify sfctl application upload --path [ApplicationPackagePath] --show-progressРегистрация типа приложения
Register-ServiceFabricApplicationType -ApplicationPathInImageStore AzureFilesVolumePluginsfctl application provision --application-type-build-path [ApplicationPackagePath]Создайте приложение, уделяя пристальное внимание значению параметра приложения ListenPort . Это номер порта, на котором плагин тома Файлы Azure прослушивает запросы от демона Docker. Убедитесь, что предоставленный приложению порт соответствует VolumePluginPorts в ClusterManifest и не конфликтует с любым другим портом, используемым кластером или приложениями.
New-ServiceFabricApplication -ApplicationName fabric:/AzureFilesVolumePluginApp -ApplicationTypeName AzureFilesVolumePluginType -ApplicationTypeVersion 6.5.661.9590 -ApplicationParameter @{ListenPort='19100'}sfctl application create --app-name fabric:/AzureFilesVolumePluginApp --app-type AzureFilesVolumePluginType --app-version 6.5.661.9590 --parameter '{"ListenPort":"19100"}'
Примечание
Windows Server 2016 Datacenter не поддерживает сопоставление подключений SMB к контейнерам (That поддерживается только в Windows Server версии 1709). Это ограничение не позволяет сопоставлять сетевые тома и использовать драйверы томов Файлы Azure в версиях ниже 1709.
Развертывание приложения в локальном кластере разработки
Выполните шаги 1–3 из приведенного выше раздела.
Число экземпляров службы по умолчанию для подключаемого модуля тома Файлы Azure равно -1, что означает, что на каждом узле в кластере развернут экземпляр службы. Однако при развертывании приложения подключаемого модуля тома Файлы Azure в локальном кластере разработки необходимо указать число экземпляров службы как 1. Это можно сделать с помощью параметра приложения InstanceCount . Поэтому команда для создания приложения подключаемого модуля томов Файлы Azure в локальном кластере разработки выглядит следующим образом:
New-ServiceFabricApplication -ApplicationName fabric:/AzureFilesVolumePluginApp -ApplicationTypeName AzureFilesVolumePluginType -ApplicationTypeVersion 6.5.661.9590 -ApplicationParameter @{ListenPort='19100';InstanceCount='1'}
sfctl application create --app-name fabric:/AzureFilesVolumePluginApp --app-type AzureFilesVolumePluginType --app-version 6.5.661.9590 --parameter '{"ListenPort": "19100","InstanceCount": "1"}'
Настройте приложения для использования тома
В следующем фрагменте кода показано, как можно указать том на основе Файлы Azure в файле манифеста приложения. Конкретный интересующий элемент — это тег Volume:
?xml version="1.0" encoding="UTF-8"?>
<ApplicationManifest ApplicationTypeName="WinNodeJsApp" ApplicationTypeVersion="1.0" xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
<Description>Calculator Application</Description>
<Parameters>
<Parameter Name="ServiceInstanceCount" DefaultValue="3"></Parameter>
<Parameter Name="MyCpuShares" DefaultValue="3"></Parameter>
<Parameter Name="MyStorageVar" DefaultValue="c:\tmp"></Parameter>
</Parameters>
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="NodeServicePackage" ServiceManifestVersion="1.0"/>
<Policies>
<ContainerHostPolicies CodePackageRef="NodeService.Code" Isolation="hyperv">
<PortBinding ContainerPort="8905" EndpointRef="Endpoint1"/>
<RepositoryCredentials PasswordEncrypted="false" Password="****" AccountName="test"/>
<Volume Source="azfiles" Destination="c:\VolumeTest\Data" Driver="sfazurefile">
<DriverOption Name="shareName" Value="" />
<DriverOption Name="storageAccountName" Value="" />
<DriverOption Name="storageAccountKey" Value="" />
<DriverOption Name="storageAccountFQDN" Value="" />
</Volume>
</ContainerHostPolicies>
</Policies>
</ServiceManifestImport>
<ServiceTemplates>
<StatelessService ServiceTypeName="StatelessNodeService" InstanceCount="5">
<SingletonPartition></SingletonPartition>
</StatelessService>
</ServiceTemplates>
</ApplicationManifest>
Имя драйвера для плагина томов Файлы Azure — sfazurefile. Это значение устанавливается для атрибута Driver элемента Volume в манифесте приложения.
В теге Volume в приведённом выше фрагменте плагин томов Файлы Azure требует следующих атрибутов:
- Источник — это имя тома. Пользователь может выбрать любое название тома.
- Назначение — это расположение, с которым сопоставляется том в работающем контейнере. Таким образом, целевой путь не может указывать на расположение, уже существующее в вашем контейнере.
Как показано в элементах DriverOption в приведённом выше фрагменте, плагин томов Файлы Azure поддерживает следующие параметры драйвера:
shareName — имя общей папки Файлы Azure, предоставляющей том для контейнера.
storageAccountName — имя учетной записи хранения Azure, содержащей общую папку Файлы Azure.
storageAccountKey — ключ доступа для учетной записи хранения Azure, содержащей общую папку Файлы Azure.
storageAccountFQDN — доменное имя, связанное с учетной записью хранения. Если storageAccountFQDN не указан, доменное имя будет сформировано с помощью суффикса по умолчанию (.file.core.windows.net) с storageAccountName.
- Example1: <DriverOption Name="shareName" Value="myshare1" /> <DriverOption Name="storageAccountName" Value="myaccount1" /> <DriverOption Name="storageAccountKey" Value="mykey1" /> <!-- storageAccountFQDN will be "myaccount1.file.core.windows.net" --> - Example2: <DriverOption Name="shareName" Value="myshare2" /> <DriverOption Name="storageAccountName" Value="myaccount2" /> <DriverOption Name="storageAccountKey" Value="mykey2" /> <DriverOption Name="storageAccountFQDN" Value="myaccount2.file.core.chinacloudapi.cn" />
Использование собственного тома или драйвера журналирования
Служба Fabric также позволяет использовать собственные собственные драйверы volume или logging. Если драйвер Docker для томов и логирования не установлен в кластере, его можно установить вручную по протоколам RDP/SSH. Вы можете установить эти протоколы с помощью скрипта запуска масштабируемого набора виртуальных машин или скрипта SetupEntryPoint.
Пример скрипта для установки драйвера томов Docker для Azure выглядит следующим образом:
docker plugin install --alias azure --grant-all-permissions docker4x/cloudstor:17.09.0-ce-azure1 \
CLOUD_PLATFORM=AZURE \
AZURE_STORAGE_ACCOUNT="[MY-STORAGE-ACCOUNT-NAME]" \
AZURE_STORAGE_ACCOUNT_KEY="[MY-STORAGE-ACCOUNT-KEY]" \
DEBUG=1
Чтобы использовать в ваших приложениях установленный драйвер томов или драйвер журналирования, необходимо указать соответствующие значения в элементах Volume и LogConfig в разделе ContainerHostPolicies манифеста приложения.
<ContainerHostPolicies CodePackageRef="NodeService.Code" Isolation="hyperv">
<PortBinding ContainerPort="8905" EndpointRef="Endpoint1"/>
<RepositoryCredentials PasswordEncrypted="false" Password="****" AccountName="test"/>
<LogConfig Driver="[YOUR_LOG_DRIVER]" >
<DriverOption Name="test" Value="vale"/>
</LogConfig>
<Volume Source="c:\workspace" Destination="c:\testmountlocation1" IsReadOnly="false"></Volume>
<Volume Source="[MyStorageVar]" Destination="c:\testmountlocation2" IsReadOnly="true"> </Volume>
<Volume Source="myvolume1" Destination="c:\testmountlocation2" Driver="[YOUR_VOLUME_DRIVER]" IsReadOnly="true">
<DriverOption Name="[name]" Value="[value]"/>
</Volume>
</ContainerHostPolicies>
При указании подключаемого модуля для тома Service Fabric автоматически создаёт том с использованием указанных параметров. Тег источника для элемента Volume — это имя тома, а тег Driver указывает подключаемый модуль драйвера тома. Тег назначения — это расположение, с которым сопоставляется источник в работающем контейнере. Таким образом, целевой путь не может указывать на расположение, которое уже существует внутри вашего контейнера. Параметры можно указать с помощью тега DriverOption следующим образом:
<Volume Source="myvolume1" Destination="c:\testmountlocation4" Driver="azure" IsReadOnly="true">
<DriverOption Name="share" Value="models"/>
</Volume>
Для томов поддерживаются параметры приложения, как показано в предыдущем фрагменте манифеста (пример использования см. в MyStorageVar).
Если указан драйвер журнала Docker, необходимо развернуть агенты (или контейнеры) для обработки журналов в кластере. Тег DriverOption можно использовать для указания параметров драйвера журнала.
Дальнейшие действия
- Чтобы просмотреть примеры контейнеров, включая драйвер тома, см. примеры контейнеров Service Fabric
- Чтобы развернуть контейнеры в кластере Service Fabric, см. статью Развертывание контейнера в Service Fabric