Azure Files-volumestuurprogramma voor Service Fabric
Het Azure Files-volumestuurprogramma is een Docker-volumeinvoegtoepassing die Azure Files-volumes biedt voor Docker-containers. Het is verpakt als een Service Fabric-toepassing die kan worden geïmplementeerd in een Service Fabric-cluster om volumes te bieden voor andere Service Fabric-containertoepassingen in het cluster.
Notitie
Versie 6.5.661.9590 van de Azure Files-volumeinvoegtoepassing is uitgebracht voor algemene beschikbaarheid.
Vereisten
De Windows-versie van de Azure Files-volumeinvoegtoepassing werkt alleen op Windows Server versie 1709, Windows 10 versie 1709 of hoger.
De Linux-versie van de Azure Files-volumeinvoegtoepassing werkt op alle besturingssysteemversies die worden ondersteund door Service Fabric.
De Azure Files-volumeinvoegtoepassing werkt alleen op Service Fabric versie 6.2 en hoger.
Volg de instructies in de Documentatie van Azure Files om een bestandsshare te maken voor de Service Fabric-containertoepassing die als volume moet worden gebruikt.
U hebt PowerShell nodig waarop de Service Fabric-module of SFCTL is geïnstalleerd.
Als u Hyper-V-containers gebruikt, moeten de volgende codefragmenten worden toegevoegd in de sectie ClusterManifest (lokaal cluster) of fabricSettings in uw Azure Resource Manager-sjabloon (Azure-cluster) of ClusterConfig.json (zelfstandig cluster).
In het ClusterManifest moet het volgende worden toegevoegd in de sectie Hosting. In dit voorbeeld is de volumenaam sfazurefile en de poort die naar het cluster luistert 19100. Vervang ze door de juiste waarden voor uw cluster.
<Section Name="Hosting">
<Parameter Name="VolumePluginPorts" Value="sfazurefile:19100" />
</Section>
In de sectie fabricSettings in uw Azure Resource Manager-sjabloon (voor Azure-implementaties) of ClusterConfig.json (voor zelfstandige implementaties) moet het volgende fragment worden toegevoegd. Vervang opnieuw de volumenaam en poortwaarden door uw eigen waarden.
"fabricSettings": [
{
"name": "Hosting",
"parameters": [
{
"name": "VolumePluginPorts",
"value": "sfazurefile:19100"
}
]
}
]
Een voorbeeldtoepassing implementeren met behulp van service Fabric Azure Files-volumestuurprogramma
Azure Resource Manager gebruiken via het opgegeven PowerShell-script (aanbevolen)
Als uw cluster is gebaseerd in Azure, raden we u aan om toepassingen te implementeren met behulp van het Resource Manager-toepassingsresourcemodel van Azure Resource Manager voor gebruiksgemak en om te helpen bij het ontwikkelen van het model voor het onderhouden van infrastructuur als code. Deze aanpak elimineert de noodzaak om de app-versie voor het Azure Files-volumestuurprogramma bij te houden. Hiermee kunt u ook afzonderlijke Azure Resource Manager-sjablonen onderhouden voor elk ondersteund besturingssysteem. In het script wordt ervan uitgegaan dat u de nieuwste versie van de Azure Files-toepassing implementeert en parameters gebruikt voor het type besturingssysteem, de id van het clusterabonnement en de resourcegroep. U kunt het script downloaden van de Service Fabric-downloadsite. Houd er rekening mee dat hiermee de ListenPort, de poort waarop de Azure Files-volumeinvoegtoepassing luistert naar aanvragen van de Docker-daemon, automatisch wordt ingesteld op 19100. U kunt deze wijzigen door de parameter 'listenPort' toe te voegen. Zorg ervoor dat de poort geen conflict veroorzaakt met een andere poort die door het cluster of uw toepassingen wordt gebruikt.
Azure Resource Manager-implementatieopdracht voor Windows:
.\DeployAzureFilesVolumeDriver.ps1 -subscriptionId [subscriptionId] -resourceGroupName [resourceGroupName] -clusterName [clusterName] -windows
Azure Resource Manager-implementatieopdracht voor Linux:
.\DeployAzureFilesVolumeDriver.ps1 -subscriptionId [subscriptionId] -resourceGroupName [resourceGroupName] -clusterName [clusterName] -linux
Zodra u het script hebt uitgevoerd, kunt u doorgaan naar de sectie voor het configureren van uw toepassing.
Handmatige implementatie voor zelfstandige clusters
De Service Fabric-toepassing die de volumes voor uw containers levert, kan worden gedownload van de Service Fabric-downloadsite. De toepassing kan worden geïmplementeerd in het cluster via PowerShell-, CLI - of FabricClient-API's.
Wijzig met behulp van de opdrachtregel de map in de hoofdmap van het gedownloade toepassingspakket.
cd .\AzureFilesVolume\
cd ~/AzureFilesVolume
Kopieer vervolgens het toepassingspakket naar het installatiekopiearchief met de juiste waarden voor [ApplicationPackagePath] en [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
Het toepassingstype registreren
Register-ServiceFabricApplicationType -ApplicationPathInImageStore AzureFilesVolumePlugin
sfctl application provision --application-type-build-path [ApplicationPackagePath]
Maak de toepassing en let goed op de waarde van de listenPort-toepassingsparameter . Deze waarde is de poort waarop de Azure Files-volumeinvoegtoepassing luistert naar aanvragen van de Docker-daemon. Zorg ervoor dat de poort die is opgegeven voor de toepassing overeenkomt met de VolumePluginPorts in het ClusterManifest en conflicteert niet met een andere poort die door het cluster of uw toepassingen wordt gebruikt.
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"}'
Notitie
Windows Server 2016 Datacenter biedt geen ondersteuning voor het toewijzen van SMB-koppelingen aan containers (dit wordt alleen ondersteund in Windows Server versie 1709). Deze beperking voorkomt netwerkvolumetoewijzing en Azure Files-volumestuurprogramma's op versies ouder dan 1709.
De toepassing implementeren op een lokaal ontwikkelcluster
Volg stap 1-3 uit het bovenstaande.
Het standaardaantal service-exemplaren voor de Azure Files-volumeinvoegtoepassing is -1, wat betekent dat er een exemplaar van de service is geïmplementeerd op elk knooppunt in het cluster. Bij het implementeren van de Azure Files-volumeinvoegtoepassingstoepassing op een lokaal ontwikkelcluster moet het aantal service-exemplaren echter worden opgegeven als 1. Dit kan worden gedaan via de toepassingsparameter InstanceCount . Daarom is de opdracht voor het maken van de Azure Files-volumeinvoegtoepassingtoepassing op een lokaal ontwikkelcluster:
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"}'
Uw toepassingen configureren voor het gebruik van het volume
In het volgende codefragment ziet u hoe een volume op basis van Azure Files kan worden opgegeven in het manifestbestand van de toepassing van uw toepassing. Het specifieke interessante element is de volumetag :
?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>
De naam van het stuurprogramma voor de Azure Files-volumeinvoegtoepassing is sfazurefile. Deze waarde is ingesteld voor het stuurprogrammakenmerk van het element Volumetag in het toepassingsmanifest.
Voor de volumetag in het bovenstaande codefragment zijn de volgende kenmerken vereist voor de Azure Files-volumeinvoegtoepassing:
- Bron : dit is de naam van het volume. De gebruiker kan elke naam voor het volume kiezen.
- Doel : dit kenmerk is de locatie waarnaar het volume is toegewezen binnen de actieve container. Uw bestemming kan dus geen locatie zijn die al bestaat in uw container
Zoals wordt weergegeven in de DriverOption-elementen in het bovenstaande codefragment, ondersteunt de Azure Files-volumeinvoegtoepassing de volgende stuurprogrammaopties:
shareName : de naam van de Azure Files-bestandsshare die het volume voor de container levert.
storageAccountName : de naam van het Azure-opslagaccount dat de Azure Files-bestandsshare bevat.
storageAccountKey - Toegangssleutel voor het Azure-opslagaccount dat de Azure Files-bestandsshare bevat.
storageAccountFQDN : domeinnaam die is gekoppeld aan het opslagaccount. Als storageAccountFQDN niet is opgegeven, wordt de domeinnaam gevormd met behulp van het standaardachtervoegsel (.file.core.windows.net) met de 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" />
Uw eigen volume of logboekregistratiestuurprogramma gebruiken
Service Fabric staat ook het gebruik van uw eigen aangepaste volume - of logboekregistratiestuurprogramma's toe. Als het Docker-volume-/logboekregistratiestuurprogramma niet op het cluster is geïnstalleerd, kunt u het handmatig installeren met behulp van de RDP-/SSH-protocollen. U kunt de installatie met deze protocollen uitvoeren via een opstartscript voor een virtuele-machineschaalset of een SetupEntryPoint-script.
Een voorbeeld van het script voor het installeren van het Docker-volumestuurprogramma voor Azure is als volgt:
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
Als u in uw toepassingen het volume- of logboekregistratiestuurprogramma wilt gebruiken dat u hebt geïnstalleerd, moet u de juiste waarden opgeven in de elementen Volume en LogConfig onder ContainerHostPolicies in uw toepassingsmanifest.
<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>
Wanneer u een volumeinvoegtoepassing opgeeft, maakt Service Fabric automatisch het volume met behulp van de opgegeven parameters. De brontag voor het volumeelement is de naam van het volume en de stuurprogrammatag geeft de invoegtoepassing voor het volumestuurprogramma op. De doeltag is de locatie waarnaar de bron is toegewezen in de actieve container. Uw bestemming kan dus geen locatie zijn die al in uw container bestaat. Opties kunnen als volgt worden opgegeven met behulp van de DriverOption-tag :
<Volume Source="myvolume1" Destination="c:\testmountlocation4" Driver="azure" IsReadOnly="true">
<DriverOption Name="share" Value="models"/>
</Volume>
Toepassingsparameters worden ondersteund voor volumes, zoals wordt weergegeven in het voorgaande manifestfragment (zoek naar MyStorageVar
een voorbeeldgebruik).
Als er een Docker-logboekstuurprogramma is opgegeven, moet u agents (of containers) implementeren om de logboeken in het cluster te verwerken. De DriverOption-tag kan worden gebruikt om opties voor het logboekstuurprogramma op te geven.
Volgende stappen
- Als u containervoorbeelden, inclusief het volumestuurprogramma, wilt zien, gaat u naar de Service Fabric-containervoorbeelden
- Als u containers wilt implementeren in een Service Fabric-cluster, raadpleegt u het artikel Een container implementeren in Service Fabric