Dela via


Azure Files-volymdrivrutin för Service Fabric

Azure Files-volymdrivrutinen är ett Plugin-program för Docker-volymer som tillhandahåller Azure Files-baserade volymer för Docker-containrar. Det paketeras som ett Service Fabric-program som kan distribueras till ett Service Fabric-kluster för att tillhandahålla volymer för andra Service Fabric-containerprogram i klustret.

Kommentar

Version 6.5.661.9590 av Plugin-programmet för Azure Files-volymen har släppts för allmän tillgänglighet.

Förutsättningar

  • Windows-versionen av azure files-volym-plugin-programmet fungerar endast på Windows Server version 1709, Windows 10 version 1709 eller senare.

  • Linux-versionen av azure files-volym-plugin-programmet fungerar på alla operativsystemversioner som stöds av Service Fabric.

  • Azure Files-volym-plugin-programmet fungerar bara på Service Fabric version 6.2 och senare.

  • Följ anvisningarna i Azure Files-dokumentationen för att skapa en filresurs för Service Fabric-containerprogrammet som ska användas som volym.

  • Du behöver PowerShell med Service Fabric-modulen eller SFCTL installerat.

  • Om du använder Hyper-V-containrar måste följande kodfragment läggas till i avsnittet ClusterManifest (lokalt kluster) eller fabricSettings i din Azure Resource Manager-mall (Azure-kluster) eller ClusterConfig.json (fristående kluster).

I ClusterManifest måste följande läggas till i avsnittet Värd. I det här exemplet är volymnamnet sfazurefile och porten som den lyssnar på i klustret är 19100. Ersätt dem med rätt värden för klustret.

<Section Name="Hosting">
  <Parameter Name="VolumePluginPorts" Value="sfazurefile:19100" />
</Section>

I avsnittet fabricSettings i din Azure Resource Manager-mall (för Azure-distributioner) eller ClusterConfig.json (för fristående distributioner) måste följande kodfragment läggas till. Ersätt återigen volymnamnet och portvärdena med dina egna.

"fabricSettings": [
  {
    "name": "Hosting",
    "parameters": [
      {
          "name": "VolumePluginPorts",
          "value": "sfazurefile:19100"
      }
    ]
  }
]

Distribuera ett exempelprogram med service fabric Azure Files-volymdrivrutin

Om klustret är baserat i Azure rekommenderar vi att du distribuerar program till det med hjälp av Azure Resource Manager-programresursmodellen för enkel användning och för att hjälpa dig att gå mot modellen för att underhålla infrastrukturen som kod. Den här metoden eliminerar behovet av att hålla reda på appversionen för Azure Files-volymdrivrutinen. Du kan också underhålla separata Azure Resource Manager-mallar för varje operativsystem som stöds. Skriptet förutsätter att du distribuerar den senaste versionen av Azure Files-programmet och tar parametrar för operativsystemtyp, klusterprenumerations-ID och resursgrupp. Du kan ladda ned skriptet från hämtningsplatsen för Service Fabric. Observera att detta automatiskt anger ListenPort, som är porten där Azure Files-volym-plugin-programmet lyssnar efter begäranden från Docker-daemonen, till 19100. Du kan ändra den genom att lägga till parametern "listenPort". Kontrollera att porten inte står i konflikt med någon annan port som klustret eller dina program använder.

Azure Resource Manager-distributionskommando för Windows:

.\DeployAzureFilesVolumeDriver.ps1 -subscriptionId [subscriptionId] -resourceGroupName [resourceGroupName] -clusterName [clusterName] -windows

Azure Resource Manager-distributionskommando för Linux:

.\DeployAzureFilesVolumeDriver.ps1 -subscriptionId [subscriptionId] -resourceGroupName [resourceGroupName] -clusterName [clusterName] -linux

När du har kört skriptet kan du gå vidare till avsnittet Konfigurera ditt program.

Manuell distribution för fristående kluster

Service Fabric-programmet som tillhandahåller volymerna för dina containrar kan laddas ned från hämtningsplatsen för Service Fabric. Programmet kan distribueras till klustret via PowerShell-, CLI - eller FabricClient-API:er.

  1. Använd kommandoraden och ändra katalogen till rotkatalogen för det nedladdade programpaketet.

    cd .\AzureFilesVolume\
    
    cd ~/AzureFilesVolume
    
  2. Kopiera sedan programpaketet till avbildningsarkivet med lämpliga värden för [ApplicationPackagePath] och [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
    
  3. Registrera programtypen

    Register-ServiceFabricApplicationType -ApplicationPathInImageStore AzureFilesVolumePlugin
    
    sfctl application provision --application-type-build-path [ApplicationPackagePath]
    
  4. Skapa programmet och var uppmärksam på parametervärdet för ListenPort-programmet . Det här värdet är den port där Azure Files-volym-plugin-programmet lyssnar efter begäranden från Docker-daemonen. Kontrollera att porten som tillhandahålls till programmet matchar VolumePluginPorts i ClusterManifest och inte står i konflikt med någon annan port som klustret eller dina program använder.

    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"}'
    

Kommentar

Windows Server 2016 Datacenter stöder inte mappning av SMB-monteringar till containrar (det stöds endast i Windows Server version 1709). Den här begränsningen förhindrar nätverksvolymmappning och Azure Files-volymdrivrutiner i versioner som är äldre än 1709.

Distribuera programmet i ett lokalt utvecklingskluster

Följ steg 1–3 ovan .

Standardantalet för tjänstinstansen för azure files-volym-plugin-programmet är -1, vilket innebär att det finns en instans av tjänsten som distribueras till varje nod i klustret. När du distribuerar plugin-programmet för Azure Files-volymer i ett lokalt utvecklingskluster bör dock antalet tjänstinstanser anges som 1. Detta kan göras via programparametern InstanceCount . Därför är kommandot för att skapa plugin-programmet för Azure Files-volymer i ett lokalt utvecklingskluster:

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"}'

Konfigurera dina program att använda volymen

Följande kodfragment visar hur en Azure Files-baserad volym kan anges i programmets manifestfil. Det specifika intresseelementet är volymtaggen :

?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>

Drivrutinsnamnet för Azure Files-volyminsticksprogrammet är sfazurefile. Det här värdet anges för drivrutinsattributet för volymtaggelementet i programmanifestet.

I volymtaggen i kodfragmentet ovan kräver plugin-programmet för Azure Files-volymen följande attribut:

  • Källa – det här är namnet på volymen. Användaren kan välja valfritt namn för volymen.
  • Mål – Det här attributet är den plats som volymen mappas till i containern som körs. Målet kan därför inte vara en plats som redan finns i containern

Som du ser i DriverOption-elementen i kodfragmentet ovan stöder Azure Files-volymprogrammet följande drivrutinsalternativ:

  • shareName – Namnet på den Azure Files-filresurs som tillhandahåller volymen för containern.

  • storageAccountName – Namnet på azure-lagringskontot som innehåller Azure Files-filresursen.

  • storageAccountKey – Åtkomstnyckel för Azure Storage-kontot som innehåller Azure Files-filresursen.

  • storageAccountFQDN – Domännamn som är associerat med lagringskontot. Om storageAccountFQDN inte har angetts skapas domännamnet med standardsuffixet (.file.core.windows.net) med 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" />
    

Använda din egen volym- eller loggningsdrivrutin

Service Fabric tillåter också användning av egna anpassade volym- eller loggningsdrivrutiner. Om Docker-volym-/loggningsdrivrutinen inte är installerad i klustret kan du installera den manuellt med hjälp av RDP/SSH-protokollen. Du kan utföra installationen med dessa protokoll via ett startskript för vm-skalningsuppsättningen eller ett SetupEntryPoint-skript.

Ett exempel på skriptet för att installera Docker-volymdrivrutinen för Azure är följande:

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

Om du vill använda den volym- eller loggningsdrivrutin som du har installerat i dina program måste du ange lämpliga värden i elementen Volym och LogConfig under ContainerHostPolicies i programmanifestet.

<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>

När du anger ett volym-plugin-program skapar Service Fabric automatiskt volymen med hjälp av de angivna parametrarna. Källtaggen för volymelementet är namnet på volymen och drivrutinstaggen anger plugin-programmet för volymdrivrutinen. Måltaggen är den plats som källan mappas till i containern som körs. Målet kan därför inte vara en plats som redan finns i containern. Du kan ange alternativ med hjälp av taggen DriverOption på följande sätt:

<Volume Source="myvolume1" Destination="c:\testmountlocation4" Driver="azure" IsReadOnly="true">
           <DriverOption Name="share" Value="models"/>
</Volume>

Programparametrar stöds för volymer enligt föregående manifestfragment (leta MyStorageVar efter ett exempel).

Om en Docker-loggdrivrutin har angetts måste du distribuera agenter (eller containrar) för att hantera loggarna i klustret. Taggen DriverOption kan användas för att ange alternativ för loggdrivrutinen.

Nästa steg