Udostępnij za pośrednictwem


Sterownik woluminu usługi Azure Files dla usługi Service Fabric

Sterownik woluminu usługi Azure Files to wtyczka woluminu platformy Docker, która udostępnia woluminy oparte na usłudze Azure Files dla kontenerów platformy Docker. Jest ona spakowana jako aplikacja usługi Service Fabric, którą można wdrożyć w klastrze usługi Service Fabric w celu zapewnienia woluminów dla innych aplikacji kontenera usługi Service Fabric w klastrze.

Uwaga

Wersja 6.5.661.9590 wtyczki woluminu usługi Azure Files została wydana w celu zapewnienia ogólnej dostępności.

Wymagania wstępne

  • Wersja systemu Windows wtyczki woluminu usługi Azure Files działa tylko w systemie Windows Server w wersji 1709, Windows 10 w wersji 1709 lub nowszej.

  • Wersja systemu Linux wtyczki woluminu usługi Azure Files działa we wszystkich wersjach systemu operacyjnego obsługiwanych przez usługę Service Fabric.

  • Wtyczka woluminu usługi Azure Files działa tylko w usłudze Service Fabric w wersji 6.2 i nowszej.

  • Postępuj zgodnie z instrukcjami w dokumentacji usługi Azure Files, aby utworzyć udział plików dla aplikacji kontenera usługi Service Fabric do użycia jako wolumin.

  • Będziesz potrzebować programu PowerShell z zainstalowanym modułem usługi Service Fabric lub biblioteką SFCTL .

  • Jeśli używasz kontenerów funkcji Hyper-V, następujące fragmenty kodu należy dodać w sekcji ClusterManifest (klaster lokalny) lub fabricSettings w szablonie usługi Azure Resource Manager (klastrze platformy Azure) lub ClusterConfig.json (autonomiczny klaster).

W pliku ClusterManifest należy dodać następujące elementy w sekcji Hosting. W tym przykładzie nazwa woluminu to sfazurefile , a port, na który nasłuchuje w klastrze, to 19100. Zastąp je poprawnymi wartościami dla klastra.

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

W sekcji fabricSettings w szablonie usługi Azure Resource Manager (dla wdrożeń platformy Azure) lub ClusterConfig.json (w przypadku wdrożeń autonomicznych) należy dodać następujący fragment kodu. Ponownie zastąp wartości nazw woluminów i portów własnymi.

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

Wdrażanie przykładowej aplikacji przy użyciu sterownika woluminu usługi Azure Files w usłudze Service Fabric

Jeśli klaster jest oparty na platformie Azure, zalecamy wdrożenie w nim aplikacji przy użyciu modelu zasobów aplikacji usługi Azure Resource Manager w celu ułatwienia użycia i ułatwienia przechodzenia do modelu utrzymania infrastruktury jako kodu. Takie podejście eliminuje konieczność śledzenia wersji aplikacji dla sterownika woluminu usługi Azure Files. Umożliwia również obsługę oddzielnych szablonów usługi Azure Resource Manager dla każdego obsługiwanego systemu operacyjnego. W skrypcie założono, że wdrażasz najnowszą wersję aplikacji usługi Azure Files i przyjmuje parametry dla typu systemu operacyjnego, identyfikatora subskrypcji klastra i grupy zasobów. Skrypt można pobrać z witryny pobierania usługi Service Fabric. Należy pamiętać, że automatycznie ustawia on port ListenPort, na którym wtyczka woluminu usługi Azure Files nasłuchuje żądań z demona platformy Docker do wersji 19100. Można ją zmienić, dodając parametr o nazwie "listenPort". Upewnij się, że port nie powoduje konfliktu z żadnym innym portem używanym przez klaster lub aplikacje.

Polecenie wdrażania usługi Azure Resource Manager dla systemu Windows:

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

Polecenie wdrażania usługi Azure Resource Manager dla systemu Linux:

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

Po pomyślnym uruchomieniu skryptu możesz przejść do sekcji konfigurowania aplikacji.

Ręczne wdrażanie klastrów autonomicznych

Aplikacja usługi Service Fabric, która udostępnia woluminy dla kontenerów, można pobrać z witryny pobierania usługi Service Fabric. Aplikację można wdrożyć w klastrze za pomocą programu PowerShell, interfejsu wiersza polecenia lub interfejsów API FabricClient.

  1. Za pomocą wiersza polecenia zmień katalog na katalog główny pobranego pakietu aplikacji.

    cd .\AzureFilesVolume\
    
    cd ~/AzureFilesVolume
    
  2. Następnie skopiuj pakiet aplikacji do magazynu obrazów z odpowiednimi wartościami [ApplicationPackagePath] i [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. Rejestrowanie typu aplikacji

    Register-ServiceFabricApplicationType -ApplicationPathInImageStore AzureFilesVolumePlugin
    
    sfctl application provision --application-type-build-path [ApplicationPackagePath]
    
  4. Utwórz aplikację, zwracając szczególną uwagę na wartość parametru aplikacji ListenPort . Ta wartość to port, na którym wtyczka woluminu usługi Azure Files nasłuchuje żądań z demona platformy Docker. Upewnij się, że port dostarczony do aplikacji jest zgodny z woluminem VolumePluginPorts w pliku ClusterManifest i nie powoduje konfliktu z żadnym innym portem używanym przez klaster lub aplikacje.

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

Uwaga

System Windows Server 2016 Datacenter nie obsługuje mapowania instalacji protokołu SMB na kontenery (jest to obsługiwane tylko w systemie Windows Server w wersji 1709). To ograniczenie uniemożliwia mapowanie woluminów sieciowych i sterowniki woluminów usługi Azure Files w wersjach starszych niż 1709.

Wdrażanie aplikacji w lokalnym klastrze deweloperów

Wykonaj kroki od 1 do 3 z powyższych .

Domyślna liczba wystąpień usługi dla aplikacji wtyczki woluminu usługi Azure Files wynosi -1, co oznacza, że istnieje wystąpienie usługi wdrożone w każdym węźle w klastrze. Jednak podczas wdrażania aplikacji wtyczki woluminu usługi Azure Files w lokalnym klastrze programistycznym liczba wystąpień usługi powinna być określona jako 1. Można to zrobić za pomocą parametru aplikacji InstanceCount . W związku z tym polecenie tworzenia aplikacji wtyczki woluminu usługi Azure Files w lokalnym klastrze programistycznym to:

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

Konfigurowanie aplikacji do korzystania z woluminu

Poniższy fragment kodu pokazuje, jak można określić wolumin oparty na usłudze Azure Files w pliku manifestu aplikacji aplikacji. Konkretny element zainteresowania to tag woluminu:

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

Nazwa sterownika wtyczki woluminu usługi Azure Files to sfazurefile. Ta wartość jest ustawiana dla atrybutu Sterownik elementu tagu woluminu w manifeście aplikacji.

W tagu Wolumin w powyższym fragmencie kodu wtyczka woluminu usługi Azure Files wymaga następujących atrybutów:

  • Źródło — jest to nazwa woluminu. Użytkownik może wybrać dowolną nazwę woluminu.
  • Miejsce docelowe — ten atrybut to lokalizacja, do którego wolumin jest mapowany w uruchomionym kontenerze. W związku z tym miejsce docelowe nie może być lokalizacją, która już istnieje w kontenerze

Jak pokazano w elementach DriverOption w powyższym fragmencie kodu, wtyczka woluminu usługi Azure Files obsługuje następujące opcje sterowników:

  • shareName — nazwa udziału plików usługi Azure Files, który udostępnia wolumin dla kontenera.

  • storageAccountName — nazwa konta usługi Azure Storage, które zawiera udział plików usługi Azure Files.

  • storageAccountKey — klucz dostępu dla konta usługi Azure Storage, który zawiera udział plików usługi Azure Files.

  • storageAccountFQDN — nazwa domeny skojarzona z kontem magazynu. Jeśli nie określono nazwy storageAccountFQDN, nazwa domeny zostanie utworzona przy użyciu sufiksu domyślnego (.file.core.windows.net) z nazwą 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" />
    

Korzystanie z własnego sterownika woluminu lub rejestrowania

Usługa Service Fabric umożliwia również użycie własnych niestandardowych woluminów lub sterowników rejestrowania . Jeśli sterownik woluminu/rejestrowania platformy Docker nie jest zainstalowany w klastrze, możesz zainstalować go ręcznie przy użyciu protokołów RDP/SSH. Instalację można wykonać za pomocą tych protokołów za pomocą skryptu uruchamiania zestawu skalowania maszyn wirtualnych lub skryptu SetupEntryPoint.

Przykładowy skrypt do zainstalowania sterownika woluminu platformy Docker dla platformy Azure jest następujący:

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

W aplikacjach, aby użyć zainstalowanego sterownika woluminu lub rejestrowania, należy określić odpowiednie wartości w elementach Volume and LogConfig w obszarze ContainerHostPolicies w manifeście aplikacji.

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

Podczas określania wtyczki woluminu usługa Service Fabric automatycznie tworzy wolumin przy użyciu określonych parametrów. Tag źródłowy dla elementu Wolumin jest nazwą woluminu, a tag Sterownik określa wtyczkę sterownika woluminu. Tag Destination to lokalizacja mapowana na źródło w uruchomionym kontenerze. W związku z tym miejsce docelowe nie może być lokalizacją, która już istnieje w kontenerze. Opcje można określić przy użyciu tagu DriverOption w następujący sposób:

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

Parametry aplikacji są obsługiwane dla woluminów, jak pokazano w poprzednim fragmencie manifestu (poszukaj MyStorageVar przykładowego użycia).

Jeśli określono sterownik dziennika platformy Docker, należy wdrożyć agentów (lub kontenery) w celu obsługi dzienników w klastrze. Tag DriverOption może służyć do określania opcji sterownika dziennika.

Następne kroki