Udostępnij za pomocą


Samouczek: wdrażanie aplikacji Java w klastrze usługi Service Fabric na platformie Azure

Ten samouczek jest trzecią częścią serii i pokazuje, jak wdrożyć aplikację usługi Service Fabric w klastrze na platformie Azure.

W trzeciej części serii dowiesz się, jak wykonywać następujące działania:

  • Tworzenie bezpiecznego klastra systemu Linux na platformie Azure
  • Wdrażanie aplikacji w klastrze

Z tej serii samouczków dowiesz się, jak wykonywać następujące działania:

Wymagania wstępne

Przed rozpoczęciem tego samouczka:

Tworzenie klastra usługi Service Fabric na platformie Azure

Poniższe kroki umożliwiają utworzenie niezbędnych zasobów wymaganych do wdrożenia aplikacji w klastrze usługi Service Fabric. Ponadto konfigurowane są zasoby niezbędne do monitorowania kondycji rozwiązania przy użyciu stosu ELK (Elasticsearch, Logstash, Kibana). W szczególności usługa Event Hubs jest używana jako ujście dzienników z usługi Service Fabric. Skonfigurowano go do wysyłania dzienników z klastra usługi Service Fabric do wystąpienia usługi Logstash.

  1. Otwórz terminal i pobierz następujący pakiet zawierający niezbędne skrypty pomocnika i szablony, aby utworzyć zasoby na platformie Azure

    git clone https://github.com/Azure-Samples/service-fabric-java-quickstart.git
    
  2. Zaloguj się do swojego konta platformy Azure

    az login
    
  3. Ustaw subskrypcję platformy Azure, której chcesz użyć do utworzenia zasobów

    az account set --subscription [SUBSCRIPTION-ID]
    
  4. W folderze service-fabric-java-quickstart/AzureCluster uruchom następujące polecenie, aby utworzyć certyfikat klastra w usłudze Key Vault. Ten certyfikat służy do zabezpieczania klastra usługi Service Fabric. Podaj region (musi być taki sam jak klaster usługi Service Fabric), nazwa grupy zasobów magazynu kluczy, nazwa magazynu kluczy, hasło certyfikatu i nazwa DNS klastra.

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

    Poprzednie polecenie zwraca następujące informacje, które należy zauważyć do późniejszego użycia.

    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. Utwórz grupę zasobów dla konta magazynowego przechowującego twoje dzienniki

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name teststorageaccountrg
    
  6. Utwórz konto magazynowe, które posłuży do przechowywania dzienników, które zostaną utworzone.

    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. Uzyskaj dostęp do portalu Azure i przejdź do karty Współdzielona sygnatura dostępu dla Twojego konta magazynu. Wygeneruj token SAS w następujący sposób.

    Generowanie SAS dla magazynu

  8. Skopiuj adres URL SAS konta i zachowaj go do wykorzystania podczas tworzenia klastru Service Fabric. Przypomina on następujący adres 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. Utwórz grupę zasobów zawierającą zasoby centrum zdarzeń. Usługa Event Hubs służy do wysyłania komunikatów z usługi Service Fabric do serwera z uruchomionymi zasobami ELK.

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name testeventhubsrg
    
  10. Utwórz zasób usługi Event Hubs przy użyciu następującego polecenia. Postępuj zgodnie z monitami, aby wprowadzić szczegóły dla przestrzeni nazw, eventHubName, consumerGroupName, sendAuthorizationRule i 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
    

    Skopiuj zawartość pola output w danych wyjściowych JSON wcześniejszego polecenia. Informacje o nadawcy są używane podczas tworzenia klastra usługi Service Fabric. Nazwa i klucz odbiorcy powinny być zapisywane do użycia w następnym samouczku, gdy usługa Logstash jest skonfigurowana do odbierania komunikatów z centrum zdarzeń. Poniższy obiekt blob to przykładowe dane wyjściowe 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. Uruchom skrypt eventhubssastoken.py, aby wygenerować URL sygnatury dostępu współdzielonego dla utworzonego zasobu EventHubs. Ten adres URL sygnatury dostępu współdzielonego jest używany przez klaster usługi Service Fabric do wysyłania dzienników do usługi Event Hubs. W związku z tym zasady nadawcy są używane do generowania adresu URL. Skrypt zwraca URL SAS dla zasobu Event Hubs, który jest używany w kolejnym kroku.

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

    Skopiuj wartość pola sr w zwróconym formacie JSON. Wartość pola sr jest tokenem SAS dla usługi EventHubs. Następujący adres URL to przykład pola sr :

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

    Adres URL sygnatury dostępu współdzielonego dla usługi EventHubs jest zgodny ze strukturą: https://<namespacename>.servicebus.windows.net/<eventhubsname>?sr=<sastoken>. Na przykład https://testeventhubnamespace.servicebus.windows.net/testeventhub?sr=https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender

  12. Otwórz plik sfdeploy.parameters.json i zastąp następującą zawartość z poprzednich kroków. [SAS-URL-STORAGE-ACCOUNT] zostało zanotowane w kroku 8. [SAS-URL-EVENT-HUBS] został zanotowany w kroku 11.

    "applicationDiagnosticsStorageAccountName": {
        "value": "teststorageaccount"
    },
    "applicationDiagnosticsStorageAccountSasToken": {
        "value": "[SAS-URL-STORAGE-ACCOUNT]"
    },
    "loggingEventHubSAS": {
        "value": "[SAS-URL-EVENT-HUBS]"
    }
    
  13. Otwiera sfdeploy.parameters.json. Zmień następujące parametry, a następnie zapisz plik.

    • clusterName. Używaj tylko małych liter i cyfr.
    • adminUserName (do wartości innej niż pusta)
    • adminPassword (do wartości innej niż pusta)
  14. Uruchom następujące polecenie, aby utworzyć klaster usługi 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>
    

Wdrażanie aplikacji w klastrze

  1. Przed wdrożeniem aplikacji należy dodać następujący fragment kodu do pliku Voting/VotingApplication/ApplicationManifest.xml . Pole X509FindValue to odcisk palca zwrócony w kroku 4 sekcji Tworzenie klastra usługi Service Fabric na platformie Azure . Ten fragment kodu jest zagnieżdżony w polu ApplicationManifest (pole główne).

    <Certificates>
          <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" />
    </Certificates>
    
  2. Aby wdrożyć aplikację w tym klastrze, należy użyć biblioteki SFCTL do nawiązania połączenia z klastrem. Protokół SFCTL wymaga pliku PEM z kluczem publicznym i prywatnym w celu nawiązania połączenia z klastrem. Uruchom następujące polecenie, aby utworzyć plik PEM z kluczem publicznym i prywatnym.

    openssl pkcs12 -in <clustername>.<region>.cloudapp.azure.com.pfx -out sfctlconnection.pem -nodes -passin pass:<password>
    
  3. Uruchom następujące polecenie, aby nawiązać połączenie z klastrem.

    sfctl cluster select --endpoint https://<clustername>.<region>.cloudapp.azure.com:19080 --pem sfctlconnection.pem --no-verify
    
  4. Aby wdrożyć aplikację, przejdź do folderu Voting/Scripts i uruchom skrypt install.sh .

    ./install.sh
    
  5. Aby uzyskać dostęp do narzędzia Service Fabric Explorer, otwórz swoją przeglądarkę i wpisz https://testlinuxcluster.westus.cloudapp.azure.com:19080. Wybierz certyfikat z magazynu certyfikatów, którego chcesz użyć do nawiązania połączenia z tym punktem końcowym. Jeśli używasz maszyny z systemem Linux, certyfikaty wygenerowane przez skrypt new-service-fabric-cluster-certificate.sh muszą zostać zaimportowane do przeglądarki Chrome, aby wyświetlić program Service Fabric Explorer. Jeśli używasz komputera Mac, musisz zainstalować plik PFX w pęku kluczy. Zauważysz, że aplikacja została zainstalowana w klastrze.

    SFX Java Azure

  6. Aby uzyskać dostęp do aplikacji, wpisz https://testlinuxcluster.westus.cloudapp.azure.com:8080

    Aplikacja do głosowania w języku Java Na platformie Azure

  7. Aby odinstalować aplikację z klastra, uruchom skrypt uninstall.sh w folderze Scripts

    ./uninstall.sh
    

Dalsze kroki

W tym samouczku nauczyłeś się następujących rzeczy:

  • Tworzenie bezpiecznego klastra systemu Linux na platformie Azure
  • Tworzenie zasobów niezbędnych do monitorowania za pomocą rozwiązania ELK

Przejdź do następnego samouczka: