Condividi tramite


Esercitazione: Distribuire un'applicazione Java in un cluster di Service Fabric in Azure

Questa esercitazione è la terza parte di una serie e illustra come distribuire un'applicazione di Service Fabric in un cluster in Azure.

Nella terza parte della serie si apprenderà come:

  • Creare un cluster Linux sicuro in Azure
  • Distribuire un'applicazione nel cluster

In questa serie di esercitazioni si apprenderà come:

Prerequisiti

Prima di iniziare questa esercitazione:

Creare un cluster di Service Fabric in Azure

La procedura seguente consente di creare le risorse necessarie per distribuire l'applicazione in un cluster di Service Fabric. Inoltre, vengono configurate le risorse necessarie per monitorare l'integrità della soluzione usando lo stack ELK (Elasticsearch, Logstash, Kibana). In particolare, Event Hubs viene usato come destinazione per i log di Service Fabric. È configurato per inviare log dal cluster di Service Fabric all'istanza logstash.

  1. Aprire un terminale e scaricare il pacchetto seguente che contiene gli script helper necessari e i modelli per creare le risorse in Azure

    git clone https://github.com/Azure-Samples/service-fabric-java-quickstart.git
    
  2. Accedere con l'account Azure

    az login
    
  3. Impostare la sottoscrizione di Azure da usare per creare le risorse

    az account set --subscription [SUBSCRIPTION-ID]
    
  4. Dalla cartella service-fabric-java-quickstart/AzureCluster eseguire il comando seguente per creare un certificato cluster in Key Vault. Questo certificato viene usato per proteggere il cluster di Service Fabric. Specificare l'area (deve corrispondere al cluster di Service Fabric), il nome del gruppo di risorse dell'insieme di credenziali delle chiavi, il nome dell'insieme di credenziali delle chiavi, la password del certificato e il nome DNS del 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'
    

    Il comando precedente restituisce le informazioni seguenti che devono essere annotate per l'uso in un secondo momento.

    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. Creare un gruppo di risorse per l'account di archiviazione in cui sono archiviati i log

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name teststorageaccountrg
    
  6. Creare un account di archiviazione che verrà usato per archiviare i log che verranno prodotti

    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. Accedere al portale di Azure e passare alla scheda Firma di accesso condiviso per l'account di archiviazione. Generare il "SAS token" come indicato di seguito.

    Generare SAS per l'archiviazione

  8. Copia l'URL SAS dell'account e conservalo per usarlo durante la creazione del cluster Service Fabric. È simile all'URL seguente:

    ?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. Creare un gruppo di risorse contenente le risorse dell'hub eventi. Hub eventi viene usato per inviare messaggi da Service Fabric al server che esegue le risorse ELK.

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name testeventhubsrg
    
  10. Creare una risorsa di Hub eventi usando il comando seguente. Seguire le istruzioni per immettere i dettagli per 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
    

    Copiare il contenuto del campo output nell'output JSON del comando precedente. Le informazioni sul mittente vengono usate quando viene creato il cluster di Service Fabric. Il nome e la chiave del ricevitore devono essere salvati per l'uso nell'esercitazione successiva quando il servizio Logstash è configurato per ricevere messaggi dall'hub eventi. Il BLOB seguente è un esempio di output 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. Eseguire lo script eventhubssastoken.py per generare l'URL di firma di accesso condiviso per la risorsa di Hub eventi creata. Questo URL SAS viene usato dal cluster di Service Fabric per inviare i log a Event Hub. Di conseguenza, i criteri del mittente vengono usati per generare l'URL. Lo script restituisce l'URL SAS per la risorsa Event Hubs utilizzata nel passaggio seguente:

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

    Copiare il valore del campo sr nel codice JSON restituito. Il valore del campo sr è il token SAS per Event Hubs. L'URL seguente è un esempio del campo sr :

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

    L'URL SAS per EventHubs segue la struttura: https://<namespacename>.servicebus.windows.net/<eventhubsname>?sr=<sastoken>. Ad esempio, https://testeventhubnamespace.servicebus.windows.net/testeventhub?sr=https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender

  12. Aprire il file sfdeploy.parameters.json e sostituire il contenuto seguente dei passaggi precedenti. [SAS-URL-STORAGE-ACCOUNT] è stato annotato nel passaggio 8. [SAS-URL-EVENT-HUBS] è stato annotato nel passaggio 11.

    "applicationDiagnosticsStorageAccountName": {
        "value": "teststorageaccount"
    },
    "applicationDiagnosticsStorageAccountSasToken": {
        "value": "[SAS-URL-STORAGE-ACCOUNT]"
    },
    "loggingEventHubSAS": {
        "value": "[SAS-URL-EVENT-HUBS]"
    }
    
  13. Apre sfdeploy.parameters.json. Modificare i parametri seguenti e quindi salvare il file.

    • clusterName. Usare solo lettere minuscole e numeri.
    • adminUserName (su un valore diverso da zero)
    • adminPassword (a un valore diverso da blank)
  14. Eseguire il comando seguente per creare il cluster di 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>
    

Distribuire l'applicazione nel cluster

  1. Prima di distribuire l'applicazione, è necessario aggiungere il frammento di codice seguente al file Voting/VotingApplication/ApplicationManifest.xml . Il campo X509FindValue è l'impronta digitale restituita dal passaggio 4 della sezione Creare un cluster di Service Fabric in Azure. Questo frammento di codice è annidato nel campo ApplicationManifest (campo radice).

    <Certificates>
          <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" />
    </Certificates>
    
  2. Per distribuire l'applicazione in questo cluster, è necessario usare SFCTL per stabilire una connessione al cluster. SFCTL richiede un file PEM con la chiave pubblica e privata per connettersi al cluster. Eseguire il comando seguente per produrre un file PEM con la chiave pubblica e privata.

    openssl pkcs12 -in <clustername>.<region>.cloudapp.azure.com.pfx -out sfctlconnection.pem -nodes -passin pass:<password>
    
  3. Eseguire il comando seguente per connettersi al cluster.

    sfctl cluster select --endpoint https://<clustername>.<region>.cloudapp.azure.com:19080 --pem sfctlconnection.pem --no-verify
    
  4. Per distribuire l'applicazione, passare alla cartella Voting/Scripts ed eseguire lo script di install.sh .

    ./install.sh
    
  5. Per accedere a Service Fabric Explorer, aprire il browser preferito e digitare .https://testlinuxcluster.westus.cloudapp.azure.com:19080 Scegliere il certificato dall'archivio certificati che si vuole usare per connettersi a questo endpoint. Se si usa un computer Linux, i certificati generati dallo script di new-service-fabric-cluster-certificate.sh devono essere importati in Chrome per visualizzare Service Fabric Explorer. Se si usa un Mac, è necessario installare il file PFX nel Keychain. Ti accorgi che la tua applicazione è stata installata nel cluster.

    SFX Java Azure

  6. Per accedere all'applicazione, digitare in https://testlinuxcluster.westus.cloudapp.azure.com:8080

    Voting App Java Azure

  7. Per disinstallare l'applicazione dal cluster, eseguire lo script uninstall.sh nella cartella Scripts

    ./uninstall.sh
    

Passaggi successivi

In questo tutorial, hai imparato come:

  • Creare un cluster Linux sicuro in Azure
  • Creare risorse necessarie per il monitoraggio con ELK

Passare all'esercitazione successiva: