Ovladač svazku Azure Files pro Service Fabric
Ovladač svazku Azure Files je modul plug-in svazků Dockeru, který poskytuje svazky založené na službě Soubory Azure pro kontejnery Dockeru. Je zabalená jako aplikace Service Fabric, která se dá nasadit do clusteru Service Fabric, aby poskytovala svazky pro jiné kontejnerové aplikace Service Fabric v rámci clusteru.
Poznámka:
Verze 6.5.661.9590 modulu plug-in svazků služby Soubory Azure byla vydána pro obecnou dostupnost.
Požadavky
Verze modulu plug-in svazku Azure Files ve Windows Serveru verze 1709, Windows 10 verze 1709 nebo novější funguje jenom v operačních systémech Windows 1709 nebo novějších.
Verze modulu plug-in svazku Azure Files v Linuxu funguje na všech verzích operačního systému, které Service Fabric podporuje.
Modul plug-in svazku Azure Files funguje jenom v Service Fabric verze 6.2 a novější.
Postupujte podle pokynů v dokumentaci ke službě Azure Files a vytvořte sdílenou složku pro aplikaci kontejneru Service Fabric, která se použije jako svazek.
Budete potřebovat PowerShell s nainstalovaným modulem Service Fabric nebo SFCTL .
Pokud používáte kontejnery Hyper-V, je potřeba do části ClusterManifest (místní cluster) nebo fabricSettings v šabloně Azure Resource Manageru (clusteru Azure) nebo ClusterConfig.json (samostatný cluster) přidat následující fragmenty kódu.
V ClusterManifestu je potřeba do části Hostování přidat následující položky. V tomto příkladu je název svazku sfazurefile a port, který naslouchá v clusteru, je 19100. Nahraďte je správnými hodnotami pro váš cluster.
<Section Name="Hosting">
<Parameter Name="VolumePluginPorts" Value="sfazurefile:19100" />
</Section>
V části fabricSettings v šabloně Azure Resource Manageru (pro nasazení Azure) nebo ClusterConfig.json (pro samostatná nasazení) je potřeba přidat následující fragment kódu. Znovu nahraďte název svazku a hodnoty portů vlastními hodnotami.
"fabricSettings": [
{
"name": "Hosting",
"parameters": [
{
"name": "VolumePluginPorts",
"value": "sfazurefile:19100"
}
]
}
]
Nasazení ukázkové aplikace pomocí ovladače svazku Service Fabric Azure Files
Použití Azure Resource Manageru prostřednictvím poskytnutého skriptu PowerShellu (doporučeno)
Pokud je váš cluster založený v Azure, doporučujeme do něj nasazovat aplikace pomocí modelu prostředků aplikace Azure Resource Manager, abyste ho mohli snadno používat a usnadnit přechod k modelu údržby infrastruktury jako kódu. Tento přístup eliminuje nutnost sledovat verzi aplikace pro ovladač svazku Azure Files. Umožňuje také udržovat samostatné šablony Azure Resource Manageru pro každý podporovaný operační systém. Skript předpokládá, že nasazujete nejnovější verzi aplikace Azure Files a přebírá parametry pro typ operačního systému, ID předplatného clusteru a skupinu prostředků. Skript si můžete stáhnout z webu pro stažení Service Fabric. Všimněte si, že to automaticky nastaví ListenPort, což je port, na kterém modul plug-in svazku Azure Files naslouchá žádostem démona Dockeru, na 19100. Můžete ho změnit přidáním parametru s názvem "listenPort". Ujistěte se, že port není v konfliktu s žádným jiným portem, který cluster nebo vaše aplikace používá.
Příkaz nasazení Azure Resource Manageru pro Windows:
.\DeployAzureFilesVolumeDriver.ps1 -subscriptionId [subscriptionId] -resourceGroupName [resourceGroupName] -clusterName [clusterName] -windows
Příkaz nasazení Azure Resource Manageru pro Linux:
.\DeployAzureFilesVolumeDriver.ps1 -subscriptionId [subscriptionId] -resourceGroupName [resourceGroupName] -clusterName [clusterName] -linux
Po úspěšném spuštění skriptu můžete přeskočit ke konfiguraci oddílu aplikace.
Ruční nasazení pro samostatné clustery
Aplikaci Service Fabric, která poskytuje svazky pro kontejnery, je možné stáhnout z webu pro stahování Service Fabric. Aplikaci je možné nasadit do clusteru prostřednictvím powershellu, rozhraní příkazového řádku nebo rozhraní API FabricClient.
Pomocí příkazového řádku změňte adresář na kořenový adresář staženého balíčku aplikace.
cd .\AzureFilesVolume\
cd ~/AzureFilesVolume
Dále zkopírujte balíček aplikace do úložiště imagí s příslušnými hodnotami pro [ApplicationPackagePath] a [ImageStoreConnectionString]:
Copy-ServiceFabricApplicationPackage -ApplicationPackagePath [ApplicationPackagePath] -ImageStoreConnectionString [ImageStoreConnectionString] -ApplicationPackagePathInImageStore AzureFilesVolumePlugin
sfctl cluster select --endpoint https://testcluster.westus.cloudapp.azure.com:19080 --pem test.pem --no-verify sfctl application upload --path [ApplicationPackagePath] --show-progress
Registrace typu aplikace
Register-ServiceFabricApplicationType -ApplicationPathInImageStore AzureFilesVolumePlugin
sfctl application provision --application-type-build-path [ApplicationPackagePath]
Vytvořte aplikaci a věnujte pozornost hodnotě parametru aplikace ListenPort . Tato hodnota je port, na kterém modul plug-in svazku Azure Files naslouchá požadavkům démona Dockeru. Ujistěte se, že port poskytnutý aplikaci odpovídá volumePluginPorts v ClusterManifestu a není v konfliktu s žádným jiným portem, který cluster nebo vaše aplikace používá.
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"}'
Poznámka:
Windows Server 2016 Datacenter nepodporuje mapování připojení SMB k kontejnerům (to se podporuje jenom ve Windows Serveru verze 1709). Toto omezení zabraňuje mapování síťových svazků a ovladačům svazků Azure Files ve verzích starších než 1709.
Nasazení aplikace v místním vývojovém clusteru
Postupujte podle kroků 1 až 3 z výše uvedených kroků.
Výchozí počet instancí služby pro aplikaci modulu plug-in svazku Azure Files je -1, což znamená, že je instance služby nasazená na každý uzel v clusteru. Při nasazování aplikace modulu plug-in svazku Azure Files do místního vývojového clusteru by se ale měl zadat počet instancí služby jako 1. To lze provést pomocí parametru aplikace InstanceCount . Příkaz pro vytvoření aplikace modulu plug-in svazku Azure Files v místním vývojovém clusteru je proto následující:
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"}'
Konfigurace aplikací pro použití svazku
Následující fragment kódu ukazuje, jak je možné zadat svazek založený na službě Soubory Azure v souboru manifestu aplikace vaší aplikace. Konkrétním prvkem zájmu je značka 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>
Název ovladače modulu plug-in svazku služby Azure Files je sfazurefile. Tato hodnota je nastavena pro Driver atribut Volume tag element v manifestu aplikace.
Ve značce Volume ve výše uvedeném fragmentu kódu vyžaduje modul plug-in svazku Azure Files následující atributy:
- Zdroj – Toto je název svazku. Uživatel může vybrat libovolný název svazku.
- Cíl – Tento atribut je umístění, na které je svazek namapován v rámci spuštěného kontejneru. Cílem proto nemůže být umístění, které už v rámci kontejneru existuje.
Jak je znázorněno v prvcích DriverOption ve výše uvedeném fragmentu kódu, modul plug-in svazku Azure Files podporuje následující možnosti ovladače:
shareName – název sdílené složky Azure Files, která poskytuje svazek pro kontejner.
storageAccountName – název účtu úložiště Azure, který obsahuje sdílenou složku Azure Files.
storageAccountKey – Přístupový klíč pro účet úložiště Azure, který obsahuje sdílenou složku Azure Files.
storageAccountFQDN – název domény přidružený k účtu úložiště. Pokud parametr storageAccountFQDN není zadaný, název domény se vytvoří pomocí výchozí přípony (.file.core.windows.net) s názvem 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" />
Použití vlastního ovladače svazku nebo protokolování
Service Fabric také umožňuje používat vlastní svazek nebo ovladače protokolování . Pokud v clusteru není nainstalovaný ovladač svazku Nebo protokolování Dockeru, můžete ho nainstalovat ručně pomocí protokolů RDP/SSH. Instalaci s těmito protokoly můžete provést prostřednictvím spouštěcího skriptu škálovací sady virtuálních počítačů nebo skriptu SetupEntryPoint.
Příklad skriptu pro instalaci ovladače svazku Dockeru pro Azure je následující:
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
Pokud chcete ve svých aplikacích použít svazek nebo ovladač protokolování, který jste nainstalovali, museli byste v manifestu aplikace zadat příslušné hodnoty v elementech Volume a LogConfig v části 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>
Při zadávání modulu plug-in svazku Service Fabric automaticky vytvoří svazek pomocí zadaných parametrů. Zdrojová značka prvku Volume je název svazku a značka Driver určuje modul plug-in ovladače svazku. Cílová značka je umístění, na které je zdroj namapován v rámci spuštěného kontejneru. Cílem tedy nemůže být umístění, které již v kontejneru existuje. Možnosti lze zadat pomocí značky DriverOption následujícím způsobem:
<Volume Source="myvolume1" Destination="c:\testmountlocation4" Driver="azure" IsReadOnly="true">
<DriverOption Name="share" Value="models"/>
</Volume>
Parametry aplikace jsou podporovány pro svazky, jak je znázorněno v předchozím fragmentu manifestu (vyhledejte MyStorageVar
příklad použití).
Pokud je zadaný ovladač protokolu Dockeru, musíte nasadit agenty (nebo kontejnery) pro zpracování protokolů v clusteru. Značku DriverOption lze použít k určení možností pro ovladač protokolu.
Další kroky
- Pokud chcete zobrazit ukázky kontejnerů, včetně ovladače svazku, navštivte ukázky kontejnerů Service Fabric.
- Pokud chcete nasadit kontejnery do clusteru Service Fabric, přečtěte si článek Nasazení kontejneru ve službě Service Fabric.