Sdílet prostřednictvím


Azure Files ovladač svazku pro Service Fabric

Ovladač svazku Azure Files je modul plug-in svazku Dockeru, který poskytuje svazky založené na Azure Files pro kontejnery Dockeru. Je zabalená jako aplikace Service Fabric, kterou je možné nasadit do clusteru Service Fabric, aby poskytovala svazky pro jiné aplikace service fabric kontejneru v rámci clusteru.

Poznámka

Verze 6.5.661.9590 modulu plug-in Azure Files svazku byla vydána pro obecnou dostupnost.

Požadavky

  • Verze modulu plug-in svazku Azure Files pro Windows funguje jenom v operačních systémech Windows Server verze 1709Windows 10 verze 1709 nebo novějších.

  • Linuxová verze modulu plug-in svazku Azure Files funguje ve všech verzích operačních systémů podporovaných službou Service Fabric.

  • Modul plug-in Azure Files svazku funguje jenom ve službě Service Fabric verze 6.2 a novější.

  • Postupujte podle pokynů v dokumentaci k Azure Files a vytvořte sdílenou složku pro aplikaci kontejneru Service Fabric, která se bude používat jako svazek.

  • Budete potřebovat PowerShell s nainstalovaným modulem Service Fabric nebo SFCTL .

  • Pokud používáte kontejnery Hyper-V, je potřeba přidat následující fragmenty kódu v části ClusterManifest (místní cluster) nebo fabricSettings v šabloně Azure Resource Manager (cluster Azure) nebo ClusterConfig.json (samostatný cluster).

V clustermanifestu je potřeba přidat následující položky v části Hostování. V tomto příkladu je název svazku sfazurefile a port, na 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 Manager (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 portu vlastními hodnotami.

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

Nasazení ukázkové aplikace pomocí ovladače svazku Service Fabric Azure Files

Pokud je váš cluster založený na Azure, doporučujeme do něj nasadit aplikace pomocí modelu prostředků aplikace Azure Resource Manager, aby se usnadnilo používání a pomohlo se přejít k modelu údržby infrastruktury jako kódu. Tento přístup eliminuje potřebu sledovat verzi aplikace pro ovladač svazku Azure Files. Umožňuje také udržovat samostatné šablony Azure Resource Manager 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 se automaticky nastaví ListenPort, což je port, na kterém modul plug-in Azure Files svazku naslouchá požadavkům od 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žívají.

Příkaz nasazení Azure Resource Manager pro Windows:

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

Příkaz pro nasazení Azure Resource Manager pro Linux:

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

Po úspěšném spuštění skriptu můžete přeskočit k části konfigurace 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.

  1. Pomocí příkazového řádku změňte adresář na kořenový adresář staženého balíčku aplikace.

    cd .\AzureFilesVolume\
    
    cd ~/AzureFilesVolume
    
  2. 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
    
  3. Registrace typu aplikace

    Register-ServiceFabricApplicationType -ApplicationPathInImageStore AzureFilesVolumePlugin
    
    sfctl application provision --application-type-build-path [ApplicationPackagePath]
    
  4. Vytvořte aplikaci a věnujte velkou pozornost hodnotě parametru aplikace ListenPort . Tato hodnota je port, na kterém modul plug-in Azure Files svazku naslouchá požadavkům démona Dockeru. Ujistěte se, že port poskytnutý aplikaci odpovídá volumePluginPorts v ClusterManifestu a že 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 na kontejnery (to se podporuje jenom ve Windows Serveru verze 1709). Toto omezení zabraňuje mapování síťových svazků a Azure Files ovladače svazků ve verzích starších než 1709.

Nasazení aplikace v místním vývojovém clusteru

Postupujte podle výše uvedených kroků 1 až 3 .

Výchozí počet instancí služby pro aplikaci modulu plug-in svazku Azure Files je -1, což znamená, že je na každý uzel v clusteru nasazená instance služby. Při nasazování Azure Files aplikace modulu plug-in svazku do místního vývojového clusteru by se ale počet instancí služby měl zadat jako 1. To lze provést pomocí parametru aplikace InstanceCount . Příkaz pro vytvoření Azure Files aplikace modulu plug-in svazku 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 lze v souboru manifestu aplikace vaší aplikace zadat svazek založený na Azure Files. Konkrétním prvkem, který vás zajímá, je značka Svazek :

?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 pro modul plug-in svazku Azure Files je sfazurefile. Tato hodnota je nastavena pro atribut Driver elementu Volume tag v manifestu aplikace.

Ve značce Volume ve fragmentu kódu výše vyžaduje modul plug-in Azure Files svazku následující atributy:

  • Zdroj – toto je název svazku. Uživatel může pro svůj svazek vybrat libovolný název.
  • Destination – tento atribut je umístění, na které je svazek mapován v rámci spuštěného kontejneru. Vaším cílem proto nemůže být umístění, které už v kontejneru existuje.

Jak je znázorněno v elementech DriverOption ve fragmentu kódu výše, modul plug-in Azure Files svazku podporuje následující možnosti ovladače:

  • shareName – název Azure Files sdílené složky, která poskytuje svazek pro kontejner.

  • storageAccountName – název účtu úložiště Azure, který obsahuje Azure Files sdílenou složku.

  • storageAccountKey – přístupový klíč pro účet úložiště Azure, který obsahuje Azure Files sdílenou složku.

  • storageAccountFQDN – název domény přidružený k účtu úložiště. Pokud není zadaný název storageAccountFQDN, vytvoří se název domény pomocí výchozí přípony (.file.core.windows.net) s hodnotou 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 svazku nebo ovladače protokolování

Service Fabric také umožňuje použití vlastních svazků nebo ovladačů protokolování . Pokud není v clusteru 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 ovladač svazku nebo protokolování, který jste nainstalovali, musíte 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ů. Značka Source elementu Volume je název svazku a značka Driver určuje modul plug-in ovladače svazku. Značka Destination je umístění, na které je zdroj namapován v rámci spuštěného kontejneru. Vaším cílem proto nemůže být umístění, které už 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 kódu manifestu (vyhledejte MyStorageVar příklad použití).

Pokud je zadaný ovladač protokolu Dockeru, musíte nasadit agenty (nebo kontejnery), které budou zpracovávat protokoly v clusteru. Značku DriverOption lze použít k určení možností pro ovladač protokolu.

Další kroky