Självstudie: Distribuera en Java-tillämpning till ett Service Fabric-kluster i Azure
Den här självstudien är del tre i en serie. Här får du se hur du distribuerar en Service Fabric-tillämpning 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:
- Skapa ett Java Service Fabric Reliable Services-program
- distribuera och felsöka programmet på ett lokalt kluster
- Distribuera programmet till ett Azure-kluster
- konfigurera övervakning och diagnostik för programmet
- konfigurera CI/CD
Förutsättningar
Innan du börjar den här självstudien:
- Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto
- Installera Azure CLI
- Installera Service Fabric SDK för Mac eller Linux
- Installera Python 3
Skapa ett Service Fabric-kluster i Azure
Med följande steg skapar du de resurser som krävs för att distribuera tillämpningen till ett Service Fabric-kluster. Du skapar också de resurser som krävs för att övervaka hälsotillståndet hos din lösning med hjälp av ELK (Elasticsearch, Logstash, Kibana). Mer specifikt används Event Hubs som en kanalmottagare för loggar från Service Fabric. Den är konfigurerad för att skicka loggarna från Service Fabric-klustret till din Logstash-instans.
Öppna en terminal och hämta följande paket, som innehåller nödvändiga hjälpskript och mallarna för att skapa resurser i Azure
git clone https://github.com/Azure-Samples/service-fabric-java-quickstart.git
Logga in på ditt Azure-konto
az login
Ange vilken Azure-prenumeration som du vill använda för att skapa resurserna
az account set --subscription [SUBSCRIPTION-ID]
Från mappen service-fabric-java-quickstart/AzureCluster kör du sedan följande kommando för att skapa ett klustercertifikat i Key Vault. Det här certifikatet används för att skydda ditt Service Fabric-kluster. Ange region (måste vara samma som för ditt Service Fabric-kluster), namnet på Key Vault-resursgruppen, Key Vault-namn, lösenord för certifikatet 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 antecknas för användning senare.
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>
Skapa en resursgrupp för lagringskontot där dina loggar sparas
az group create --location [REGION] --name [RESOURCE-GROUP-NAME] Example: az group create --location westus --name teststorageaccountrg
Skapa ett lagringskonto som ska användas för att spara de loggar som 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
Öppna Azure-portalen och gå till flikenSignatur för delad åtkomst för ditt lagringskonto. Generera din SAS-token på följande sätt.
Kopiera kontots SAS-URL och ha den tillgänglig när du skapar ditt Service Fabric-kluster. 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
Skapa en resursgrupp som innehåller Event Hub-resurserna. Event Hubs används för att skicka meddelanden från Service Fabric till den server som kör ELK-resurserna.
az group create --location [REGION] --name [RESOURCE-GROUP-NAME] Example: az group create --location westus --name testeventhubsrg
Skapa en resurs för Event Hubs med hjälp av följande kommando. Följ anvisningarna för att fylla i 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 fältet utdata i JSON-utdata från föregående kommando. Information om avsändaren används när Service Fabric-klustret skapas. Mottagarens namn och nyckel ska sparas för användning i nästa självstudie, där Logstash-tjänsten konfigureras för att ta emot meddelanden från Event Hub. 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" } }
Kör skriptet eventhubssastoken.py för att generera SAS-URL:en för EventHubs-resursen du skapade. SAS-URL:en används av Service Fabric-klustret för att skicka loggar till Event Hubs. Som ett resultat av det används avsändarens princip för att generera URL:en. Skriptet returnerar SAS-URL:en för den Event Hubs-resurs som används i följande steg:
python3 eventhubssastoken.py 'testeventhubs' 'testeventhubs' 'sender' '[PRIMARY-KEY]'
Kopiera värdet från fältet sr i den JSON som returneras. Fältvärdet sr används som SAS-token för EventHubs. Följande URL är ett exempel på fältet sr:
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
Öppna filen sfdeploy.parameters.json och ersätt följande innehåll från föregående steg. [SAS-URL-STORAGE-ACCOUNT] beskrevs i steg 8. [SAS-URL-EVENT-HUBS] beskrevs i steg 11.
"applicationDiagnosticsStorageAccountName": { "value": "teststorageaccount" }, "applicationDiagnosticsStorageAccountSasToken": { "value": "[SAS-URL-STORAGE-ACCOUNT]" }, "loggingEventHubSAS": { "value": "[SAS-URL-EVENT-HUBS]" }
Öppnar sfdeploy.parameters.json. Ändra följande parametrar och spara därefter filen.
- clusterName. Använd bara gemena bokstäver och siffror.
- adminUserName (till ett värde som inte är tomt)
- adminPassword (till ett värde som inte är tomt)
Kör följande kommando för att skapa Service Fabric-klustret
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 din tillämpning till klustret
Innan du distribuerar din tillämpning måste du lägga till följande kodfragment i filen Voting/VotingApplication/ApplicationManifest.xml. Fältet X509FindValue är det tumavtryck som returnerades från Steg 4 i avsnittet Skapa ett Service Fabric-kluster i Azure. Kodfragmentet är kapslat under fältet ApplicationManifest (rotfältet).
<Certificates> <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" /> </Certificates>
För att kunna distribuera din tillämpning till klustret måste du etablera en anslutning till klustret med hjälp av SFCTL. SFCTL kräver en PEM-fil med både offentlig och privat nyckel för att bevilja anslutning till klustret. Kör följande kommando om du vill skapa en PEM-fil med både offentlig och privat nyckel.
openssl pkcs12 -in <clustername>.<region>.cloudapp.azure.com.pfx -out sfctlconnection.pem -nodes -passin pass:<password>
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
Om du vill distribuera programmet går du till mappen Voting/Scripts (Röstning/Skript) och kör skriptet install.sh.
./install.sh
Du kommer åt Service Fabric Explorer genom at öppna din vanliga webbläsare och skriva
https://testlinuxcluster.westus.cloudapp.azure.com:19080
. Välj certifikatet från det certifikatarkiv som du vill använda för att ansluta till slutpunkten. Om du använder en Linux-dator måste de certifikat som genererats av skriptet new-service-fabric-cluster-certificate.sh importeras till Chrome för att du ska kunna visa Service Fabric Explorer. Om du använder en Mac-dator måste du installera PFX-filen i din nyckelring. Du kan nu se att din tillämpning har installerats i klustret.Du kommer åt din tillämpning genom att skriva
https://testlinuxcluster.westus.cloudapp.azure.com:8080
Om du vill avinstallera din tillämpning från klustret kör du skriptet uninstall.sh i Skript-mappen
./uninstall.sh
Nästa steg
I den här självstudiekursen lärde du dig att:
- Skapa ett säkert Linux-kluster i Azure
- Skapa nödvändiga resurser för övervakning med ELK
Gå vidare till nästa kurs: