Share via


Tutorial: Implementar uma aplicação Java num cluster do Service Fabric no Azure

Este tutorial é a terceira parte de uma série e mostra-lhe como implementar uma aplicação do Service Fabric num cluster no Azure.

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

  • Criar um cluster do Linux seguro no Azure
  • Implementar uma aplicação 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

Os passos seguintes criam os recursos necessários para implementar a sua aplicação num cluster do Service Fabric. Além disso, são configurados os recursos necessários para monitorizar o estado de funcionamento da sua solução através da pilha ELK (Elasticsearch Logstash, Kibana). Especificamente, os Hubs de Eventos são utilizados como sink para registos do Service Fabric. É configurado para enviar registos do cluster do Service Fabric para a sua instância do Logstash.

  1. Abrir um terminal e transferir o pacote seguinte 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. Definir a subscrição do Azure que quer utilizar para criar os recursos

    az account set --subscription [SUBSCRIPTION-ID]
    
  4. Na pasta service-fabric-java-quickstart/AzureCluster, execute o comando seguinte para criar um certificado de cluster no Key Vault. Este certificado é utilizado para proteger o cluster do Service Fabric. Indique a região (tem de 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 palavra-passe 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 devolve as informações seguintes, que deve anotar para utilização 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 os registos

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name teststorageaccountrg
    
  6. Criar uma conta de armazenamento que será utilizada para armazenar os registos 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. Aceda ao portal do Azure e navegue para o separador Assinatura de Acesso Partilhado da conta de armazenamento. Gere o token SAS da seguinte forma.

    Generate SAS for Storage

  8. Copie o URL de SAS da conta e defina-o separadamente para utilização quando criar o cluster do Service Fabric. Assemelha-se 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 com os recursos do Hub de Eventos. Os Hubs de Eventos são utilizados 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 dos Hubs de Eventos com o seguinte comando. Siga as indicações para introduzir 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 saída na saída JSON do comando anterior. As informações do remetente são utilizadas quando é criado o cluster do Service Fabric. O nome e a chave do recetor devem ser guardados para utilização no próximo tutorial quando o serviço Logstash está configurado para receber mensagens do Hub de Eventos. O blob seguinte é uma saída JSON de exemplo:

    "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 o URL de SAS para o recurso EventHubs que criou. Este URL de SAS é utilizado pelo cluster do Service Fabric para enviar registos aos Hubs de Eventos. Como resultado, é utilizada a política do remetente para gerar o URL. O script devolve o URL de SAS para o recurso dos Hubs de Eventos utilizado no passo seguinte:

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

    Copie o valor do campo sr no JSON devolvido. O valor do campo sr é o token SAS para EventHubs. O URL seguinte é 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 ficheiro sfdeploy.parameters.json e substitua o conteúdo seguinte dos passos anteriores. [SAS-URL-STORAGE-ACCOUNT] foi indicado no passo 8. [SAS-URL-EVENT-HUBS] foi indicado no passo 11.

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

    • clusterName. Utilize apenas letras minúsculas e números.
    • adminUserName (para um valor diferente de zero)
    • adminPassword (para um valor diferente de zero)
  14. Execute o seguinte comando para criar o 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>
    

Implemente a aplicação no cluster

  1. Antes de implementar a aplicação, tem de adicionar o fragmento seguinte ao ficheiro Voting/VotingApplication/ApplicationManifest.xml. O campo X509FindValue é o thumbprint devolvido no Passo 4 da secção Criar um cluster do Service Fabric no Azure. Este fragmento está aninhado no campo ApplicationManifest (o campo raiz).

    <Certificates>
          <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" />
    </Certificates>
    
  2. Para implementar a aplicação neste cluster, tem de utilizar o SFCTL para estabelecer uma ligação ao cluster. O SFCTL necessita de um ficheiro PEM com chave pública e chave privada para se ligar ao cluster. Execute o seguinte comando para produzir um ficheiro PEM com chave pública e chave privada.

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

    sfctl cluster select --endpoint https://<clustername>.<region>.cloudapp.azure.com:19080 --pem sfctlconnection.pem --no-verify
    
  4. Para implementar a aplicação, navegue para a pasta Voting/Scripts e execute o script install.sh.

    ./install.sh
    
  5. Para aceder ao Service Fabric Explorer, abra o seu browser favorito e escreva https://testlinuxcluster.westus.cloudapp.azure.com:19080. Escolha o certificado no arquivo de certificados que quer utilizar para ligar a este ponto final. Se estiver a utilizar uma máquina Linux, os certificados gerados pelo script new-service-fabric-cluster-certificate.sh têm de ser importados para o Chrome para ver o Service Fabric Explorer. Se estiver a utilizar um Mac, tem de instalar o ficheiro PFX na Keychain. Repare se a aplicação foi instalada no cluster.

    SFX Java Azure

  6. Para aceder à sua aplicação, escreva https://testlinuxcluster.westus.cloudapp.azure.com:8080

    Voting App Java Azure

  7. Para desinstalar a aplicação do cluster, execute o script uninstall.sh na pasta Scripts

    ./uninstall.sh
    

Próximos passos

Neste tutorial, ficou a saber como:

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

Avance para o tutorial seguinte: