sterownik woluminu Azure Files dla usługi Service Fabric

Sterownik woluminu Azure Files to wtyczka woluminu platformy Docker, która udostępnia woluminy oparte na Azure Files dla kontenerów platformy Docker. Jest ona pakowana 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 kontenerów usługi Service Fabric w klastrze.

Uwaga

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

Wymagania wstępne

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

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

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

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

  • Będzie potrzebny program PowerShell z zainstalowanym modułem usługi Service Fabric lub bibliotekąSFCTL .

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

W pliku ClusterManifest należy dodać następujące elementy w sekcji Hosting. W tym przykładzie nazwa woluminu to sfazurefile , a port nasłuchiwany w klastrze to 19100. Zastąp je poprawnymi wartościami 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 nazwy woluminu 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 Service Fabric Azure Files

Jeśli klaster jest oparty na platformie Azure, zalecamy wdrażanie aplikacji w nim przy użyciu modelu zasobów aplikacji platformy Azure Resource Manager w celu ułatwienia użycia i ułatwienia przechodzenia do modelu utrzymywania infrastruktury jako kodu. Takie podejście eliminuje konieczność śledzenia wersji aplikacji dla sterownika woluminu Azure Files. Umożliwia również obsługę oddzielnych szablonów usługi Azure Resource Manager dla każdego obsługiwanego systemu operacyjnego. Skrypt zakłada, że wdrażasz najnowszą wersję aplikacji 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 port ListenPort, na którym wtyczka woluminu Azure Files nasłuchuje żądań z demona platformy Docker do wersji 19100. Można go 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 Azure Files woluminu nasłuchuje żądań z demona platformy Docker. Upewnij się, że port dostarczony do aplikacji jest zgodny z elementem 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

Windows Server 2016 Centrum danych 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 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 Azure Files wynosi -1, co oznacza, że istnieje wystąpienie usługi wdrożonej w każdym węźle w klastrze. Jednak podczas wdrażania aplikacji wtyczki Azure Files woluminu w lokalnym klastrze deweloperów 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 Azure Files w lokalnym klastrze deweloperów 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 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 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 Azure Files woluminu 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 Azure Files woluminu obsługuje następujące opcje sterowników:

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

  • storageAccountName — nazwa konta usługi Azure Storage zawierającego udział plików Azure Files.

  • storageAccountKey — klucz dostępu dla konta usługi Azure Storage zawierającego udział plików Azure Files.

  • storageAccountFQDN — nazwa domeny skojarzona z kontem magazynu. Jeśli nazwa storageAccountFQDN nie zostanie określona, nazwa domeny zostanie utworzona przy użyciu domyślnego sufiksu(.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łasnego niestandardowego woluminu 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 elementu Wolumin jest nazwą woluminu, a tag Sterownik określa wtyczkę sterownika woluminu. Tag Docelowy 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, musisz wdrożyć agentów (lub kontenery), aby obsłużyć dzienniki w klastrze. Tag DriverOption może służyć do określania opcji sterownika dziennika.

Następne kroki