Implantar e remover aplicativos usando o PowerShellDeploy and remove applications using PowerShell


Depois que um tipo de aplicativo tiver sido empacotado, ele estará pronto para implantação em um cluster de Service Fabric do Azure.Once an application type has been packaged, it's ready for deployment into an Azure Service Fabric cluster. A implantação envolve as três etapas a seguir:Deployment involves the following three steps:

  1. Carregue o pacote de aplicativos no repositório de imagens.Upload the application package to the image store.
  2. Registre o tipo de aplicativo com o caminho relativo do repositório de imagens.Register the application type with image store relative path.
  3. Crie a instância do aplicativo.Create the application instance.

Depois que o aplicativo implantado não for mais necessário, você poderá excluir a instância do aplicativo e seu tipo de aplicativo.Once the deployed application is no longer required, you can delete the application instance and its application type. Para remover completamente um aplicativo do cluster, você envolve as seguintes etapas:To completely remove an application from the cluster involves the following steps:

  1. Remova (ou exclua) a instância do aplicativo em execução.Remove (or delete) the running application instance.
  2. Cancele o registro do tipo de aplicativo se você não precisar mais dele.Unregister the application type if you no longer need it.
  3. Remova o pacote de aplicativos do repositório de imagens.Remove the application package from the image store.

Se você usar o Visual Studio para implantar e depurar aplicativos no cluster de desenvolvimento local, todas as etapas anteriores serão tratadas automaticamente por meio de um script do PowerShell.If you use Visual Studio for deploying and debugging applications on your local development cluster, all the preceding steps are handled automatically through a PowerShell script. Esse script é encontrado na pasta scripts do projeto de aplicativo.This script is found in the Scripts folder of the application project. Este artigo fornece informações sobre o que o script está fazendo para que você possa executar as mesmas operações fora do Visual Studio.This article provides background on what that script is doing so that you can perform the same operations outside of Visual Studio.

Outra maneira de implantar um aplicativo é usando o provisionamento externo.Another way to deploy an application is by using external provision. O pacote de aplicativos pode ser empacotado sfpkg como e carregado em um repositório externo.The application package can be packaged as sfpkg and uploaded to an external store. Nesse caso, o carregamento para o repositório de imagens não é necessário.In this case, upload to the image store is not needed. A implantação precisa das seguintes etapas:Deployment needs the following steps:

  1. Carregue o sfpkg em um repositório externo.Upload the sfpkg to an external store. O repositório externo pode ser qualquer armazenamento que expõe um ponto de extremidade http ou HTTPS REST.The external store can be any store that exposes a REST http or https endpoint.
  2. Registre o tipo de aplicativo usando o URI de download externo e as informações de tipo de aplicativo.Register the application type using the external download URI and the application type information.
  3. Crie a instância do aplicativo.Create the application instance.

Para limpeza, remova as instâncias do aplicativo e cancele o registro do tipo de aplicativo.For cleanup, remove the application instances and unregister the application type. Como o pacote não foi copiado para o repositório de imagens, não há local temporário para limpeza.Because the package was not copied to the image store, there is no temporary location to cleanup. O provisionamento do repositório externo está disponível a partir do Service Fabric versão 6,1.Provisioning from external store is available starting with Service Fabric version 6.1.

Nota

No momento, o Visual Studio não dá suporte ao provisionamento externo.Visual Studio does not currently support external provision.

Ligar ao clusterConnect to the cluster

Antes de executar qualquer comando do PowerShell neste artigo, sempre comece usando Connect-ServiceFabricCluster para se conectar ao cluster de Service Fabric.Before you run any PowerShell commands in this article, always start by using Connect-ServiceFabricCluster to connect to the Service Fabric cluster. Para se conectar ao cluster de desenvolvimento local, execute o seguinte:To connect to the local development cluster, run the following:

Connect-ServiceFabricCluster

Para obter exemplos de como se conectar a um cluster remoto ou protegido usando Azure Active Directory, certificados X509 ou o Windows Active Directory consulte conectar-se a um cluster seguro.For examples of connecting to a remote cluster or cluster secured using Azure Active Directory, X509 certificates, or Windows Active Directory see Connect to a secure cluster.

Carregar o pacote de aplicativosUpload the application package

O carregamento do pacote de aplicativos o coloca em um local acessível por componentes internos do Service Fabric.Uploading the application package puts it in a location that's accessible by internal Service Fabric components. Se você quiser verificar o pacote de aplicativos localmente, use o cmdlet Test-ServiceFabricApplicationPackage .If you want to verify the application package locally, use the Test-ServiceFabricApplicationPackage cmdlet.

O comando Copy-ServiceFabricApplicationPackage carrega o pacote de aplicativos no repositório de imagens do cluster.The Copy-ServiceFabricApplicationPackage command uploads the application package to the cluster image store.

Suponha que você crie e empacote um aplicativo chamado MyApplication no Visual Studio 2015.Suppose you build and package an application named MyApplication in Visual Studio 2015. Por padrão, o nome do tipo de aplicativo listado no ApplicationManifest. xml é "myapplicationtype".By default, the application type name listed in the ApplicationManifest.xml is "MyApplicationType". O pacote de aplicativos, que contém o manifesto do aplicativo, os manifestos do serviço e os pacotes de código/configuração/dados necessários, está localizado em C:\Users<username>\Documents\Visual Studio 2015 \ Projects\MyApplication\ MyApplication\pkg\Debug.The application package, which contains the necessary application manifest, service manifests, and code/config/data packages, is located in C:\Users<username>\Documents\Visual Studio 2015\Projects\MyApplication\MyApplication\pkg\Debug.

O comando a seguir lista o conteúdo do pacote de aplicativos:The following command lists the contents of the application package:

$path = 'C:\Users\<user\>\Documents\Visual Studio 2015\Projects\MyApplication\MyApplication\pkg\Debug'
tree /f $path
Folder PATH listing for volume OSDisk
Volume serial number is 0459-2393
C:\USERS\USER\DOCUMENTS\VISUAL STUDIO 2015\PROJECTS\MYAPPLICATION\MYAPPLICATION\PKG\DEBUG
│   ApplicationManifest.xml
│
└───Stateless1Pkg
    │   ServiceManifest.xml
    │
    ├───Code
    │       Microsoft.ServiceFabric.Data.dll
    │       Microsoft.ServiceFabric.Data.Interfaces.dll
    │       Microsoft.ServiceFabric.Internal.dll
    │       Microsoft.ServiceFabric.Internal.Strings.dll
    │       Microsoft.ServiceFabric.Services.dll
    │       ServiceFabricServiceModel.dll
    │       Stateless1.exe
    │       Stateless1.exe.config
    │       Stateless1.pdb
    │       System.Fabric.dll
    │       System.Fabric.Strings.dll
    │
    └───Config
            Settings.xml

Se o pacote de aplicativos for grande e/ou tiver muitos arquivos, você poderá compactá-lo.If the application package is large and/or has many files, you can compress it. A compactação reduz o tamanho e o número de arquivos.The compression reduces the size and the number of files. O efeito colateral é que o registro e o cancelamento do registro do tipo de aplicativo são mais rápidos.The side effect is that registering and un-registering the application type are faster. O tempo de carregamento pode ser mais lento no momento, especialmente se você incluir o tempo para compactar o pacote.Upload time may be slower currently, especially if you include the time to compress the package.

Para compactar um pacote, use o mesmo comando Copy-ServiceFabricApplicationPackage .To compress a package, use the same Copy-ServiceFabricApplicationPackage command. A compactação pode ser feita separada do carregamento, usando SkipCopy o sinalizador ou junto com a operação de upload.Compression can be done separate from upload, by using the SkipCopy flag, or together with the upload operation. Aplicar a compactação em um pacote compactado é não operacional.Applying compression on a compressed package is no-op. Para descompactar um pacote compactado, use o mesmo comando Copy-ServiceFabricApplicationPackage com a UncompressPackage opção.To uncompress a compressed package, use the same Copy-ServiceFabricApplicationPackage command with the UncompressPackage switch.

O cmdlet a seguir compacta o pacote sem copiá-lo para o repositório de imagens.The following cmdlet compresses the package without copying it to the image store. O pacote agora inclui arquivos compactados para Code os Config pacotes e.The package now includes zipped files for the Code and Config packages. O aplicativo e os manifestos do serviço não são compactados, pois são necessários para muitas operações internas (como compartilhamento de pacotes, extração de versão e nome de tipo de aplicativo para determinadas validações).The application and the service manifests are not zipped, because they are needed for many internal operations (like package sharing, application type name and version extraction for certain validations). O descompactar os manifestos tornaria essas operações ineficientes.Zipping the manifests would make these operations inefficient.

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -CompressPackage -SkipCopy
tree /f $path
Folder PATH listing for volume OSDisk
Volume serial number is 0459-2393
C:\USERS\USER\DOCUMENTS\VISUAL STUDIO 2015\PROJECTS\MYAPPLICATION\MYAPPLICATION\PKG\DEBUG
|   ApplicationManifest.xml
|
└───Stateless1Pkg
       Code.zip
       Config.zip
       ServiceManifest.xml

Para pacotes de aplicativos grandes, a compactação leva tempo.For large application packages, the compression takes time. Para obter melhores resultados, use uma unidade SSD rápida.For best results, use a fast SSD drive. Os tempos de compactação e o tamanho do pacote compactado também diferem com base no conteúdo do pacote.The compression times and the size of the compressed package also differ based on the package content. Por exemplo, aqui estão as estatísticas de compactação para alguns pacotes, que mostram o tamanho do pacote inicial e o compactado, com o tempo de compactação.For example, here is compression statistics for some packages, which show the initial and the compressed package size, with the compression time.

Tamanho inicial (MB)Initial size (MB) Contagem de arquivosFile count Tempo de compactaçãoCompression Time Tamanho do pacote compactado (MB)Compressed package size (MB)
100100 100100 00:00:03.354759200:00:03.3547592 6060
512512 100100 00:00:16.385030300:00:16.3850303 307307
10241024 500500 00:00:32.590795000:00:32.5907950 615615
20482048 10001000 00:01:04.377555400:01:04.3775554 12311231
50125012 100100 00:02:45.295128800:02:45.2951288 30743074

Depois que um pacote é compactado, ele pode ser carregado em um ou vários clusters Service Fabric, conforme necessário.Once a package is compressed, it can be uploaded to one or multiple Service Fabric clusters as needed. O mecanismo de implantação é o mesmo para pacotes compactados e descompactados.The deployment mechanism is same for compressed and uncompressed packages. Os pacotes compactados são armazenados como tal no repositório de imagens do cluster.Compressed packages are stored as such in the cluster image store. Os pacotes são descompactados no nó, antes da execução do aplicativo.The packages are uncompressed on the node, before the application is run.

O exemplo a seguir carrega o pacote no repositório de imagens, em uma pasta chamada "MyApplicationV1":The following example uploads the package to the image store, into a folder named "MyApplicationV1":

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -ApplicationPackagePathInImageStore MyApplicationV1 -TimeoutSec 1800

Se você não especificar o parâmetro -ApplicationPackagePathInImageStore , o pacote de aplicativo será copiado para a pasta "debug" no repositório de imagens.If you do not specify the -ApplicationPackagePathInImageStore parameter, the application package is copied into the "Debug" folder in the image store.

Nota

O Copy-ServiceFabricApplicationPackage detectará automaticamente a cadeia de conexão apropriada do repositório de imagens se a sessão do PowerShell estiver conectada a um Cluster Service Fabric.Copy-ServiceFabricApplicationPackage will automatically detect the appropriate image store connection string if the PowerShell session is connected to a Service Fabric cluster. Para Service Fabric versões anteriores a 5,6, o argumento -ImageStoreConnectionString deve ser fornecido explicitamente.For Service Fabric versions older than 5.6, the -ImageStoreConnectionString argument must be explicitly provided.

PS C:\> Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -ApplicationPackagePathInImageStore MyApplicationV1 -ImageStoreConnectionString (Get-ImageStoreConnectionStringFromClusterManifest(Get-ServiceFabricClusterManifest)) -TimeoutSec 1800

O cmdlet Get-ImageStoreConnectionStringFromClusterManifest , que faz parte do módulo Service Fabric SDK do PowerShell, é usado para obter a cadeia de conexão do repositório de imagens.The Get-ImageStoreConnectionStringFromClusterManifest cmdlet, which is part of the Service Fabric SDK PowerShell module, is used to get the image store connection string. Para importar o módulo SDK, execute:To import the SDK module, run:

Import-Module "$ENV:ProgramFiles\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\ServiceFabricSDK.psm1"

Consulte entender a cadeia de conexão do repositório de imagens para obter informações complementares sobre o repositório de imagens e a cadeia de conexão do repositório de imagens.See Understand the image store connection string for supplementary information about the image store and image store connection string.

O tempo necessário para carregar um pacote é diferente dependendo de vários fatores.The time it takes to upload a package differs depending on multiple factors. Alguns desses fatores são o número de arquivos no pacote, o tamanho do pacote e os tamanhos de arquivo.Some of these factors are the number of files in the package, the package size, and the file sizes. A velocidade de rede entre o computador de origem e o Service Fabric cluster também afeta o tempo de carregamento.The network speed between the source machine and the Service Fabric cluster also impacts the upload time. O tempo limite padrão para Copy-ServiceFabricApplicationPackage é de 30 minutos.The default timeout for Copy-ServiceFabricApplicationPackage is 30 minutes. Dependendo dos fatores descritos, talvez seja necessário aumentar o tempo limite.Depending on the described factors, you may have to increase the timeout. Se você estiver compactando o pacote na chamada de cópia, também precisará considerar o tempo de compactação.If you are compressing the package in the copy call, you need to also consider the compression time.

Registrar o pacote de aplicativosRegister the application package

O tipo de aplicativo e a versão declarados no manifesto do aplicativo tornam-se disponíveis para uso quando o pacote de aplicativos é registrado.The application type and version declared in the application manifest become available for use when the application package is registered. O sistema lê o pacote carregado na etapa anterior, verifica o pacote, processa o conteúdo do pacote e copia o pacote processado para um local interno do sistema.The system reads the package uploaded in the previous step, verifies the package, processes the package contents, and copies the processed package to an internal system location.

Execute o cmdlet Register-ServiceFabricApplicationType para registrar o tipo de aplicativo no cluster e torná-lo disponível para implantação:Run the Register-ServiceFabricApplicationType cmdlet to register the application type in the cluster and make it available for deployment:

Registrar o pacote de aplicativos copiado no repositório de imagensRegister the application package copied to image store

Quando um pacote foi copiado anteriormente para o repositório de imagens, a operação de registro especifica o caminho relativo no repositório de imagens.When a package was previously copied to the image store, the register operation specifies the relative path in the image store.

Register-ServiceFabricApplicationType -ApplicationPathInImageStore MyApplicationV1
Register application type succeeded

"MyApplicationV1" é a pasta no repositório de imagens onde o pacote de aplicativos está localizado."MyApplicationV1" is the folder in the image store where the application package is located. O tipo de aplicativo com o nome "myapplicationtype" e a versão "1.0.0" (ambos são encontrados no manifesto do aplicativo) agora está registrado no cluster.The application type with name "MyApplicationType" and version "1.0.0" (both are found in the application manifest) is now registered in the cluster.

Registrar o pacote de aplicativos copiado em um repositório externoRegister the application package copied to an external store

A partir do Service Fabric versão 6,1, o provisionamento oferece suporte ao download do pacote de um repositório externo.Starting with Service Fabric version 6.1, provision supports downloading the package from an external store. O URI de download representa o caminho para o sfpkg pacote de aplicativos de onde o pacote de aplicativos pode ser baixado usando protocolos http ou HTTPS.The download URI represents the path to the sfpkg application package from where the application package can be downloaded using HTTP or HTTPS protocols. O pacote deve ter sido previamente carregado nesse local externo.The package must have been previously uploaded to this external location. O URI deve permitir acesso de leitura para que Service Fabric possa baixar o arquivo.The URI must allow READ access so Service Fabric can download the file. O sfpkg arquivo deve ter a extensão ". sfpkg".The sfpkg file must have the extension ".sfpkg". A operação de provisionamento deve incluir as informações de tipo de aplicativo, conforme encontradas no manifesto do aplicativo.The provision operation should include the application type information, as found in the application manifest.

Register-ServiceFabricApplicationType -ApplicationPackageDownloadUri "https://sftestresources.blob.core.windows.net:443/sfpkgholder/MyAppPackage.sfpkg" -ApplicationTypeName MyApp -ApplicationTypeVersion V1 -Async

O comando Register-ServiceFabricApplicationType retorna somente depois que o sistema registrou com êxito o pacote de aplicativos.The Register-ServiceFabricApplicationType command returns only after the system has successfully registered the application package. O tempo que o registro leva depende do tamanho e do conteúdo do pacote de aplicativos.How long registration takes depends on the size and contents of the application package. Se necessário, o parâmetro -TimeoutSec pode ser usado para fornecer um tempo limite maior (o tempo limite padrão é de 60 segundos).If needed, the -TimeoutSec parameter can be used to supply a longer timeout (the default timeout is 60 seconds).

Se você tiver um pacote de aplicativo grande ou se estiver experimentando tempos limite, use o parâmetro -Async .If you have a large application package or if you are experiencing timeouts, use the -Async parameter. O comando retorna quando o cluster aceita o comando Register.The command returns when the cluster accepts the register command. A operação de registro continua conforme necessário.The register operation continues as needed. O comando Get-ServiceFabricApplicationType lista as versões de tipo de aplicativo e seu status de registro.The Get-ServiceFabricApplicationType command lists the application type versions and their registration status. Você pode usar esse comando para determinar quando o registro é feito.You can use this command to determine when the registration is done.

Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Remover um pacote de aplicativos do repositório de imagensRemove an application package from the image store

Se um pacote tiver sido copiado para o repositório de imagens, você deverá removê-lo do local temporário depois que o aplicativo for registrado com êxito.If a package was copied to the image store, you should remove it from the temporary location after the application is successfully registered. A exclusão de pacotes de aplicativos do repositório de imagens libera os recursos do sistema.Deleting application packages from the image store frees up system resources. Manter pacotes de aplicativos não utilizados consome armazenamento em disco e leva a problemas de desempenho de aplicativos.Keeping unused application packages consumes disk storage and leads to application performance issues.

Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore MyApplicationV1

Criar a aplicaçãoCreate the application

Você pode criar uma instância de um aplicativo de qualquer versão de tipo de aplicativo registrada com êxito usando o cmdlet New-ServiceFabricApplication .You can instantiate an application from any application type version that has been registered successfully by using the New-ServiceFabricApplication cmdlet. O nome de cada aplicativo deve começar com o esquema "Fabric:" e deve ser exclusivo para cada instância do aplicativo.The name of each application must start with the "fabric:" scheme and must be unique for each application instance. Todos os serviços padrão definidos no manifesto do aplicativo do tipo de aplicativo de destino também são criados.Any default services defined in the application manifest of the target application type are also created.

New-ServiceFabricApplication fabric:/MyApp MyApplicationType 1.0.0
ApplicationName        : fabric:/MyApp
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
ApplicationParameters  : {}

Várias instâncias de aplicativo podem ser criadas para qualquer versão específica de um tipo de aplicativo registrado.Multiple application instances can be created for any given version of a registered application type. Cada instância do aplicativo é executada isoladamente, com seu próprio diretório de trabalho e processo.Each application instance runs in isolation, with its own work directory and process.

Para ver quais aplicativos e serviços nomeados estão em execução no cluster, execute os cmdlets Get-ServiceFabricApplication e Get-ServiceFabricService :To see which named apps and services are running in the cluster, run the Get-ServiceFabricApplication and Get-ServiceFabricService cmdlets:

Get-ServiceFabricApplication  
ApplicationName        : fabric:/MyApp
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
ApplicationStatus      : Ready
HealthState            : Ok
ApplicationParameters  : {}
Get-ServiceFabricApplication | Get-ServiceFabricService
ServiceName            : fabric:/MyApp/Stateless1
ServiceKind            : Stateless
ServiceTypeName        : Stateless1Type
IsServiceGroup         : False
ServiceManifestVersion : 1.0.0
ServiceStatus          : Active
HealthState            : Ok

Remover uma aplicaçãoRemove an application

Quando uma instância do aplicativo não é mais necessária, você pode removê-la permanentemente pelo nome usando o cmdlet Remove-ServiceFabricApplication .When an application instance is no longer needed, you can permanently remove it by name using the Remove-ServiceFabricApplication cmdlet. Remove -ServiceFabricApplication remove automaticamente todos os serviços que pertencem ao aplicativo, removendo permanentemente todos os Estados de serviço.Remove-ServiceFabricApplication automatically removes all services that belong to the application as well, permanently removing all service state.

Aviso

Esta operação não pode ser revertida e o estado do aplicativo não pode ser recuperado.This operation cannot be reversed, and application state cannot be recovered.

Remove-ServiceFabricApplication fabric:/MyApp
Confirm
Continue with this operation?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):
Remove application instance succeeded
Get-ServiceFabricApplication

Cancelar o registro de um tipo de aplicativoUnregister an application type

Quando uma versão específica de um tipo de aplicativo não é mais necessária, você deve cancelar o registro do tipo de aplicativo usando o cmdlet Unregister-ServiceFabricApplicationType .When a particular version of an application type is no longer needed, you should unregister the application type using the Unregister-ServiceFabricApplicationType cmdlet. O cancelamento do registro de tipos de aplicativos não utilizados libera o espaço de armazenamento usado pelo repositório de imagens removendo os arquivos do tipo de aplicativo.Unregistering unused application types releases storage space used by the image store by removing the application type files. O cancelamento do registro de um tipo de aplicativo não remove o pacote de aplicativos copiado para o local temporário do repositório de imagens, se a cópia para o repositório de imagens foi usada.Unregistering an application type does not remove the application package copied to the image store temporary location, if copy to the image store was used. Um tipo de aplicativo pode ter seu registro cancelado, desde que nenhum aplicativo seja instanciado em relação a ele e que nenhuma atualização de aplicativos pendente faça referência a ele.An application type can be unregistered as long as no applications are instantiated against it and no pending application upgrades are referencing it.

Execute Get-ServiceFabricApplicationType para ver os tipos de aplicativos atualmente registrados no cluster:Run Get-ServiceFabricApplicationType to see the application types currently registered in the cluster:

Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Execute Unregister-ServiceFabricApplicationType para cancelar o registro de um tipo de aplicativo específico:Run Unregister-ServiceFabricApplicationType to unregister a specific application type:

Unregister-ServiceFabricApplicationType MyApplicationType 1.0.0

Resolução de problemasTroubleshooting

Copy-ServiceFabricApplicationPackage solicita um ImageStoreConnectionStringCopy-ServiceFabricApplicationPackage asks for an ImageStoreConnectionString

O ambiente SDK do Service Fabric já deve ter os padrões corretos configurados.The Service Fabric SDK environment should already have the correct defaults set up. Mas, se necessário, o ImageStoreConnectionString para todos os comandos deve corresponder ao valor que o Cluster Service Fabric está usando.But if needed, the ImageStoreConnectionString for all commands should match the value that the Service Fabric cluster is using. Você pode encontrar o ImageStoreConnectionString no manifesto do cluster, recuperado usando os comandos Get-ServiceFabricClusterManifest e Get-ImageStoreConnectionStringFromClusterManifest:You can find the ImageStoreConnectionString in the cluster manifest, retrieved using the Get-ServiceFabricClusterManifest and Get-ImageStoreConnectionStringFromClusterManifest commands:

Get-ImageStoreConnectionStringFromClusterManifest(Get-ServiceFabricClusterManifest)

O cmdlet Get-ImageStoreConnectionStringFromClusterManifest , que faz parte do módulo Service Fabric SDK do PowerShell, é usado para obter a cadeia de conexão do repositório de imagens.The Get-ImageStoreConnectionStringFromClusterManifest cmdlet, which is part of the Service Fabric SDK PowerShell module, is used to get the image store connection string. Para importar o módulo SDK, execute:To import the SDK module, run:

Import-Module "$ENV:ProgramFiles\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\ServiceFabricSDK.psm1"

O ImageStoreConnectionString é encontrado no manifesto do cluster:The ImageStoreConnectionString is found in the cluster manifest:

<ClusterManifest xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" Name="Server-Default-SingleNode" Version="1.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">

    [...]

    <Section Name="Management">
      <Parameter Name="ImageStoreConnectionString" Value="file:D:\ServiceFabric\Data\ImageStore" />
    </Section>

    [...]

Consulte entender a cadeia de conexão do repositório de imagens para obter informações complementares sobre o repositório de imagens e a cadeia de conexão do repositório de imagens.See Understand the image store connection string for supplementary information about the image store and image store connection string.

Implantar pacote de aplicativo grandeDeploy large application package

Problema: Copy-ServiceFabricApplicationPackage expira para um pacote de aplicativo grande (ordem de GB).Issue: Copy-ServiceFabricApplicationPackage times out for a large application package (order of GB). Experimente:Try:

  • Especifique um tempo limite maior para o comando Copy-ServiceFabricApplicationPackage com TimeoutSec o parâmetro.Specify a larger timeout for Copy-ServiceFabricApplicationPackage command, with TimeoutSec parameter. Por padrão, o tempo limite é de 30 minutos.By default, the timeout is 30 minutes.
  • Verifique a conexão de rede entre o computador de origem e o cluster.Check the network connection between your source machine and cluster. Se a conexão estiver lenta, considere usar um computador com uma conexão de rede melhor.If the connection is slow, consider using a machine with a better network connection. Se o computador cliente estiver em outra região do que o cluster, considere usar um computador cliente em uma região mais próxima ou igual à do cluster.If the client machine is in another region than the cluster, consider using a client machine in a closer or same region as the cluster.
  • Verifique se você está atingindo a limitação externa.Check if you are hitting external throttling. Por exemplo, quando o repositório de imagens é configurado para usar o armazenamento do Azure, o upload pode ser limitado.For example, when the image store is configured to use azure storage, upload may be throttled.

Problema: O carregamento do pacote foi concluído com êxito, mas o Register-ServiceFabricApplicationType expira. Experimente:Issue: Upload package completed successfully, but Register-ServiceFabricApplicationType times out. Try:

  • Compacte o pacote antes de copiar para o repositório de imagens.Compress the package before copying to the image store. A compactação reduz o tamanho e o número de arquivos, o que, por sua vez, reduz a quantidade de tráfego e o trabalho que o Service Fabric deve executar.The compression reduces the size and the number of files, which in turn reduces the amount of traffic and work that Service Fabric must perform. A operação de upload pode ser mais lenta (especialmente se você incluir o tempo de compactação), mas o registro e o cancelamento do registro do tipo de aplicativo são mais rápidos.The upload operation may be slower (especially if you include the compression time), but register and un-register the application type are faster.
  • Especifique um tempo limite maior para o registro-ServiceFabricApplicationType com TimeoutSec o parâmetro.Specify a larger timeout for Register-ServiceFabricApplicationType with TimeoutSec parameter.
  • Especifique Async a opção para Register-ServiceFabricApplicationType.Specify Async switch for Register-ServiceFabricApplicationType. O comando retorna quando o cluster aceita o comando e o registro do tipo de aplicativo continua de forma assíncrona.The command returns when the cluster accepts the command and the registration of the application type continues asynchronously. Por esse motivo, não há necessidade de especificar um tempo limite maior nesse caso.For this reason, there is no need to specify a higher timeout in this case. O comando Get-ServiceFabricApplicationType lista todas as versões de tipo de aplicativo registradas com êxito e seu status de registro.The Get-ServiceFabricApplicationType command lists all successfully registered application type versions and their registration status. Você pode usar esse comando para determinar quando o registro é feito.You can use this command to determine when the registration is done.
Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Implantar pacote de aplicativos com muitos arquivosDeploy application package with many files

Problema: Register-ServiceFabricApplicationType expira para um pacote de aplicativos com muitos arquivos (ordem de milhares).Issue: Register-ServiceFabricApplicationType times out for an application package with many files (order of thousands). Experimente:Try:

  • Compacte o pacote antes de copiar para o repositório de imagens.Compress the package before copying to the image store. A compactação reduz o número de arquivos.The compression reduces the number of files.
  • Especifique um tempo limite maior para o registro-ServiceFabricApplicationType com TimeoutSec o parâmetro.Specify a larger timeout for Register-ServiceFabricApplicationType with TimeoutSec parameter.
  • Especifique Async a opção para Register-ServiceFabricApplicationType.Specify Async switch for Register-ServiceFabricApplicationType. O comando retorna quando o cluster aceita o comando e o registro do tipo de aplicativo continua de forma assíncrona.The command returns when the cluster accepts the command and the registration of the application type continues asynchronously. Por esse motivo, não há necessidade de especificar um tempo limite maior nesse caso.For this reason, there is no need to specify a higher timeout in this case. O comando Get-ServiceFabricApplicationType lista todas as versões de tipo de aplicativo registradas com êxito e seu status de registro.The Get-ServiceFabricApplicationType command lists all successfully registered application type versions and their registration status. Você pode usar esse comando para determinar quando o registro é feito.You can use this command to determine when the registration is done.
Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Passos SeguintesNext steps

Criar pacote de uma aplicaçãoPackage an application

Atualização do aplicativo Service FabricService Fabric application upgrade

Introdução à integridade Service FabricService Fabric health introduction

Diagnosticar e solucionar problemas de um serviço de Service FabricDiagnose and troubleshoot a Service Fabric service

Modelar um aplicativo no Service FabricModel an application in Service Fabric