Partilhar via


Tutorial: Implantar um aplicativo Java em um cluster do Service Fabric no Azure

Este tutorial é a terceira parte de uma série e mostra como implantar um aplicativo do Service Fabric em um cluster no Azure.

Na terceira parte da série, ficará a saber como:

  • Criar um cluster Linux seguro no Azure
  • Implantar um aplicativo no cluster

Nesta série de tutoriais, ficará a saber como:

Pré-requisitos

Antes de começar este tutorial:

Criar um cluster do Service Fabric no Azure

As etapas a seguir criam os recursos necessários para implantar seu aplicativo em um cluster do Service Fabric. Além disso, os recursos necessários para monitorizar a saúde da sua solução usando a pilha ELK (Elasticsearch, Logstash, Kibana) são configurados. Especificamente, os Hubs de Eventos são usados como destino para logs do Service Fabric. Ele está configurado para enviar logs do cluster do Service Fabric para sua instância do Logstash.

  1. Abra um terminal e baixe o seguinte pacote que contém os scripts auxiliares necessários e os modelos para criar os recursos no Azure

    git clone https://github.com/Azure-Samples/service-fabric-java-quickstart.git
    
  2. Inicie sessão na sua conta do Azure

    az login
    
  3. Defina sua assinatura do Azure que você deseja usar para criar os recursos

    az account set --subscription [SUBSCRIPTION-ID]
    
  4. Na pasta service-fabric-java-quickstart/AzureCluster , execute o seguinte comando para criar um certificado de cluster no Cofre da Chave. Esse certificado é usado para proteger seu cluster do Service Fabric. Forneça a região (deve ser a mesma do cluster do Service Fabric), o nome do grupo de recursos do cofre de chaves, o nome do cofre de chaves, a senha do certificado e o nome DNS do cluster.

    ./new-service-fabric-cluster-certificate.sh [REGION] [KEY-VAULT-RESOURCE-GROUP] [KEY-VAULT-NAME] [CERTIFICATE-PASSWORD] [CLUSTER-DNS-NAME-FOR-CERTIFICATE]
    
    Example: ./new-service-fabric-cluster-certificate.sh 'westus' 'testkeyvaultrg' 'testkeyvault' '<password>' 'testservicefabric.westus.cloudapp.azure.com'
    

    O comando anterior retorna as seguintes informações que devem ser anotadas para uso posterior.

    Source Vault Resource Id: /subscriptions/<subscription_id>/resourceGroups/testkeyvaultrg/providers/Microsoft.KeyVault/vaults/<name>
    Certificate URL: https://<name>.vault.azure.net/secrets/<cluster-dns-name-for-certificate>/<guid>
    Certificate Thumbprint: <THUMBPRINT>
    
  5. Criar um grupo de recursos para a conta de armazenamento que armazena seus logs

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name teststorageaccountrg
    
  6. Crie uma conta de armazenamento que será usada para armazenar os logs que serão produzidos

    az storage account create -g [RESOURCE-GROUP-NAME] -l [REGION] --name [STORAGE-ACCOUNT-NAME] --kind Storage
    
    Example: az storage account create -g teststorageaccountrg -l westus --name teststorageaccount --kind Storage
    
  7. Acesse o portal do Azure e navegue até a guia Assinatura de Acesso Compartilhado da sua conta de Armazenamento. Gere o token SAS da seguinte maneira.

    Gerar SAS para armazenamento

  8. Copie a URL SAS da conta e reserve-a para uso ao criar seu cluster do Service Fabric. É semelhante ao seguinte URL:

    ?sv=2017-04-17&ss=bfqt&srt=sco&sp=rwdlacup&se=2018-01-31T03:24:04Z&st=2018-01-30T19:24:04Z&spr=https,http&sig=IrkO1bVQCHcaKaTiJ5gilLSC5Wxtghu%2FJAeeY5HR%2BPU%3D
    
  9. Crie um grupo de recursos que contenha os recursos do Hub de Eventos. Os Hubs de Eventos são usados para enviar mensagens do Service Fabric para o servidor que executa os recursos ELK.

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name testeventhubsrg
    
  10. Crie um recurso de Hubs de Eventos usando o comando a seguir. Siga as instruções para inserir detalhes para namespaceName, eventHubName, consumerGroupName, sendAuthorizationRule e receiveAuthorizationRule.

    az deployment group create -g [RESOURCE-GROUP-NAME] --template-file eventhubsdeploy.json
    
    Example:
    az deployment group create -g testeventhubsrg --template-file eventhubsdeploy.json
    Please provide string value for 'namespaceName' (? for help): testeventhubnamespace
    Please provide string value for 'eventHubName' (? for help): testeventhub
    Please provide string value for 'consumerGroupName' (? for help): testeventhubconsumergroup
    Please provide string value for 'sendAuthorizationRuleName' (? for help): sender
    Please provide string value for 'receiveAuthorizationRuleName' (? for help): receiver
    

    Copie o conteúdo do campo de saída na saída JSON do comando anterior. As informações do remetente são usadas quando o cluster do Service Fabric é criado. O nome e a chave do recetor devem ser salvos para uso no próximo tutorial quando o serviço Logstash estiver configurado para receber mensagens do Hub de Eventos. O blob a seguir é um exemplo de saída JSON:

    "outputs": {
        "receiver Key": {
            "type": "String",
            "value": "[KEY]"
        },
        "receiver Name": {
            "type": "String",
            "value": "receiver"
        },
        "sender Key": {
            "type": "String",
            "value": "[KEY]"
        },
        "sender Name": {
            "type": "String",
            "value": "sender"
        }
    }
    
  11. Execute o script eventhubssastoken.py para gerar a URL SAS para o recurso EventHubs que você criou. Essa URL SAS é usada pelo cluster do Service Fabric para enviar logs para Hubs de Eventos. Como resultado, a política de remetente é usada para gerar a URL. O script retorna a URL SAS para o recurso Hubs de Eventos usado na seguinte etapa:

    python3 eventhubssastoken.py 'testeventhubs' 'testeventhubs' 'sender' '[PRIMARY-KEY]'
    

    Copie o valor do campo sr do JSON retornado. O valor do campo sr é o token SAS para EventHubs. O seguinte URL é um exemplo do campo sr :

    https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender
    

    Sua URL SAS para os EventHubs segue a estrutura: https://<namespacename>.servicebus.windows.net/<eventhubsname>?sr=<sastoken>. Por exemplo, https://testeventhubnamespace.servicebus.windows.net/testeventhub?sr=https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender

  12. Abra o arquivo sfdeploy.parameters.json e substitua o seguinte conteúdo das etapas anteriores. [SAS-URL-STORAGE-ACCOUNT] foi anotado na etapa 8. [SAS-URL-EVENT-HUBS] foi registrado na etapa 11.

    "applicationDiagnosticsStorageAccountName": {
        "value": "teststorageaccount"
    },
    "applicationDiagnosticsStorageAccountSasToken": {
        "value": "[SAS-URL-STORAGE-ACCOUNT]"
    },
    "loggingEventHubSAS": {
        "value": "[SAS-URL-EVENT-HUBS]"
    }
    
  13. Abre sfdeploy.parameters.json. Altere os seguintes parâmetros e, em seguida, salve o arquivo.

    • clusterName. Use apenas letras minúsculas e algarismos.
    • adminUserName (para um valor diferente de branco)
    • adminPassword (para um valor diferente de branco)
  14. Execute o seguinte comando para criar seu cluster do Service Fabric:

    az sf cluster create --location 'westus' --resource-group 'testlinux' --template-file sfdeploy.json --parameter-file sfdeploy.parameters.json --secret-identifier <certificate_url_from_step4>
    

Implantar seu aplicativo no cluster

  1. Antes de implantar seu aplicativo, você precisa adicionar o seguinte trecho ao arquivo Voting/VotingApplication/ApplicationManifest.xml . O campo X509FindValue é o hash retornado da Etapa 4 da seção Criar um cluster do Service Fabric no Azure. Esse trecho é aninhado no campo ApplicationManifest (o campo raiz).

    <Certificates>
          <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" />
    </Certificates>
    
  2. Para implantar seu aplicativo nesse cluster, você deve usar SFCTL para estabelecer uma conexão com o cluster. O SFCTL requer um arquivo PEM com a chave pública e privada para se conectar ao cluster. Execute o seguinte comando para produzir um arquivo PEM com a chave pública e privada.

    openssl pkcs12 -in <clustername>.<region>.cloudapp.azure.com.pfx -out sfctlconnection.pem -nodes -passin pass:<password>
    
  3. Execute o seguinte comando para se conectar ao cluster.

    sfctl cluster select --endpoint https://<clustername>.<region>.cloudapp.azure.com:19080 --pem sfctlconnection.pem --no-verify
    
  4. Para implantar seu aplicativo, navegue até a pasta Voting/Scripts e execute o script install.sh .

    ./install.sh
    
  5. Para acessar o Service Fabric Explorer, abra seu navegador favorito e digite https://testlinuxcluster.westus.cloudapp.azure.com:19080. Escolha o certificado do armazenamento de certificados que o/a utilizador(a) deseja usar para se conectar a este ponto de ligação. Se estiver a utilizar uma máquina Linux, os certificados que foram gerados pelo script new-service-fabric-cluster-certificate.sh têm de ser importados para o Chrome para visualizar o Service Fabric Explorer. Se estiver a utilizar um Mac, tem de instalar o ficheiro PFX no seu porta-chaves. Você percebe que seu aplicativo foi instalado no cluster.

    SFX Java Azure

  6. Para acessar seu aplicativo, digite https://testlinuxcluster.westus.cloudapp.azure.com:8080

    Aplicativo de votação Java Azure

  7. Para desinstalar o aplicativo do cluster, execute o script uninstall.sh na pasta Scripts

    ./uninstall.sh
    

Próximos passos

Neste tutorial, você aprendeu como:

  • Criar um cluster Linux seguro no Azure
  • Crie os recursos necessários para o monitoramento com ELK

Avance para o tutorial seguinte: