Självstudie: Distribuera ett Java-program till ett Service Fabric-kluster i Azure

Den här självstudien är del tre i en serie och visar hur du distribuerar ett Service Fabric-program till ett kluster i Azure.

I den tredje delen i serien får du lära dig att:

  • Skapa ett säkert Linux-kluster i Azure
  • Distribuera ett program till klustret

I den här självstudieserien får du lära du dig att:

Förutsättningar

Innan du börjar den här självstudien:

Skapa ett Service Fabric-kluster i Azure

Följande steg skapar de resurser som krävs för att distribuera programmet till ett Service Fabric-kluster. Dessutom konfigureras resurser som behövs för att övervaka hälsotillståndet för din lösning med hjälp av ELK-stacken (Elasticsearch, Logstash, Kibana). Mer specifikt används Event Hubs som mottagare för loggar från Service Fabric. Den är konfigurerad för att skicka loggar från Service Fabric-klustret till logstash-instansen.

  1. Öppna en terminal och ladda ned följande paket som innehåller nödvändiga hjälpskript och mallarna för att skapa resurserna i Azure

    git clone https://github.com/Azure-Samples/service-fabric-java-quickstart.git
    
  2. Logga in på ditt Azure-konto

    az login
    
  3. Ange din Azure-prenumeration som du vill använda för att skapa resurserna

    az account set --subscription [SUBSCRIPTION-ID]
    
  4. Från mappen service-fabric-java-quickstart/AzureCluster kör du följande kommando för att skapa ett klustercertifikat i Key Vault. Det här certifikatet används för att skydda Service Fabric-klustret. Ange regionen (måste vara samma som service fabric-klustret), resursgruppens namn för nyckelvalvet, nyckelvalvets namn, certifikatlösenord och klustrets DNS-namn.

    ./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'
    

    Föregående kommando returnerar följande information som bör noteras för senare användning.

    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. Skapa en resursgrupp för lagringskontot som lagrar dina loggar

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name teststorageaccountrg
    
  6. Skapa ett lagringskonto som ska användas för att lagra loggarna som ska skapas

    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. Gå till Azure-portalen och gå till fliken Signatur för delad åtkomst för ditt Lagringskonto. Generera SAS-token på följande sätt.

    Generera SAS för lagring

  8. Kopiera kontots SAS-URL och lägg den åt sidan för användning när du skapar Service Fabric-klustret. Den liknar följande 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. Skapa en resursgrupp som innehåller Event Hub-resurserna. Event Hubs används för att skicka meddelanden från Service Fabric till servern som kör ELK-resurserna.

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name testeventhubsrg
    
  10. Skapa en Event Hubs-resurs med hjälp av följande kommando. Följ anvisningarna för att ange information för namespaceName, eventHubName, consumerGroupName, sendAuthorizationRule och 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
    

    Kopiera innehållet i utdatafältet i JSON-utdata från föregående kommando. Avsändarinformationen används när Service Fabric-klustret skapas. Mottagarnamnet och nyckeln ska sparas för användning i nästa självstudie när Logstash-tjänsten har konfigurerats för att ta emot meddelanden från Händelsehubb. Följande blob är ett exempel på JSON-utdata:

    "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. Kör eventhubssastoken.py-skriptet för att generera SAS-URL:en för den EventHubs-resurs som du skapade. Den här SAS-URL:en används av Service Fabric-klustret för att skicka loggar till Event Hubs. Därför används avsändarprincipen för att generera URL:en. Skriptet returnerar SAS-URL:en för event hubs-resursen som används i följande steg:

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

    Kopiera värdet för sr-fältet i JSON som returneras. SR-fältvärdet är SAS-token för EventHubs. Följande URL är ett exempel på sr-fältet :

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

    Din SAS-URL för EventHubs följer strukturen: https://<namespacename>.servicebus.windows.net/<eventhubsname>?sr=<sastoken>. Till exempel: https://testeventhubnamespace.servicebus.windows.net/testeventhub?sr=https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender

  12. Öppna filensfdeploy.parameters.json och ersätt följande innehåll från föregående steg. [SAS-URL-STORAGE-ACCOUNT] antecknades i steg 8. [SAS-URL-EVENT-HUBS] noterades i steg 11.

    "applicationDiagnosticsStorageAccountName": {
        "value": "teststorageaccount"
    },
    "applicationDiagnosticsStorageAccountSasToken": {
        "value": "[SAS-URL-STORAGE-ACCOUNT]"
    },
    "loggingEventHubSAS": {
        "value": "[SAS-URL-EVENT-HUBS]"
    }
    
  13. Öppnar sfdeploy.parameters.json. Ändra följande parametrar och spara sedan filen.

    • clusterName. Använd endast gemener och siffror.
    • adminUserName (till ett annat värde än tomt)
    • adminPassword (till ett annat värde än tomt)
  14. Kör följande kommando för att skapa ditt Service Fabric-kluster

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

Distribuera ditt program till klustret

  1. Innan du distribuerar programmet måste du lägga till följande kodfragment i filen Voting/VotingApplication/ApplicationManifest.xml . Fältet X509FindValue är tumavtrycket som returneras från steg 4 i avsnittet Skapa ett Service Fabric-kluster i Azure . Det här kodfragmentet är kapslat under fältet ApplicationManifest (rotfältet).

    <Certificates>
          <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" />
    </Certificates>
    
  2. Om du vill distribuera programmet till det här klustret måste du använda SFCTL för att upprätta en anslutning till klustret. SFCTL kräver en PEM-fil med både den offentliga och privata nyckeln för att ansluta till klustret. Kör följande kommando för att skapa en PEM-fil med både den offentliga och den privata nyckeln.

    openssl pkcs12 -in <clustername>.<region>.cloudapp.azure.com.pfx -out sfctlconnection.pem -nodes -passin pass:<password>
    
  3. Kör följande kommando för att ansluta till klustret.

    sfctl cluster select --endpoint https://<clustername>.<region>.cloudapp.azure.com:19080 --pem sfctlconnection.pem --no-verify
    
  4. Om du vill distribuera ditt program går du till mappen Voting/Scripts och kör skriptet install.sh .

    ./install.sh
    
  5. Om du vill komma åt Service Fabric Explorer öppnar du din favoritwebbläsare och skriver in https://testlinuxcluster.westus.cloudapp.azure.com:19080. Välj certifikatet från certifikatarkivet som du vill använda för att ansluta till den här slutpunkten. Om du använder en Linux-dator måste certifikaten som genererades av new-service-fabric-cluster-certificate.sh-skriptet importeras till Chrome för att visa Service Fabric Explorer. Om du använder en Mac måste du installera PFX-filen i nyckelringen. Du märker att programmet har installerats i klustret.

    SFX Java Azure

  6. Om du vill komma åt ditt program skriver du in https://testlinuxcluster.westus.cloudapp.azure.com:8080

    Voting App Java Azure

  7. Om du vill avinstallera programmet från klustret kör du skriptet uninstall.sh i mappen Skript

    ./uninstall.sh
    

Nästa steg

I den här handledningen lärde du dig att:

  • Skapa ett säkert Linux-kluster i Azure
  • Skapa resurser som krävs för övervakning med ELK

Gå vidare till nästa kurs: