Tutorial: Menyebarkan aplikasi Java ke kluster Service Fabric di Azure

Tutorial ini adalah bagian ketiga dari seri dan menunjukkan kepada Anda cara menggunakan aplikasi Service Fabric ke klaster di Azure.

Di bagian ketiga seri ini, Anda mempelajari cara:

  • Membuat kluster Linux yang aman di Azure
  • Menyebarkan aplikasi ke kluster.

Dalam tutorial ini, Anda akan belajar cara:

Prasyarat

Sebelum Anda memulai tutorial ini:

Membuat kluster Service Fabric di Azure

Langkah-langkah berikut membuat sumber daya yang diperlukan untuk menyebarkan aplikasi Anda ke kluster Service Fabric. Selain itu, sumber daya yang diperlukan untuk memantau kesehatan solusi Anda menggunakan tumpukan ELK (Elasticsearch, Logstash, Kibana) diatur. Secara khusus, Azure Event Hubs digunakan sebagai wastafel untuk log dari Service Fabric. Dikonfigurasi untuk mengirim log dari kluster Service Fabric ke instans Logstash Anda.

  1. Membuka terminal dan unduh paket berikut yang berisi skrip pembantu yang diperlukan dan templat untuk membuat sumber daya di Azure

    git clone https://github.com/Azure-Samples/service-fabric-java-quickstart.git
    
  2. Masuk ke akun Azure Anda

    az login
    
  3. Mengatur langganan Azure yang ingin Anda gunakan untuk membuat sumber daya

    az account set --subscription [SUBSCRIPTION-ID]
    
  4. Dari folder service-fabric-java-quickstart/AzureCluster, jalankan perintah berikut untuk membuat sertifikat kluster di Key Vault. Sertifikat ini digunakan untuk mengamankan kluster Service Fabric Anda. Sediakan wilayah (harus sama dengan kluster Service Fabric Anda), nama grup sumber daya brankas kunci, nama brankas kunci, kata sandi sertifikat, dan nama DNS kluster.

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

    Perintah sebelumnya mengembalikan informasi berikut yang harus dicatat untuk digunakan nanti.

    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. Membuat grup sumber daya untuk akun penyimpanan yang menyimpan log Anda

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name teststorageaccountrg
    
  6. Membuat akun penyimpanan yang akan digunakan untuk menyimpan log yang akan diproduksi

    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. Akses portal Microsoft Azure dan navigasi ke tab Tanda Tangan Akses Bersama untuk akun Storage Anda. Hasilkan token SAS sebagai berikut.

    Generate SAS for Storage

  8. Salin URL SAS akun dan sisihkan untuk digunakan saat membuat kluster Service Fabric Anda. Ini menyerupai URL berikut:

    ?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. Buat grup sumber daya yang berisi sumber daya Hub Peristiwa. Azure Event Hubs digunakan untuk mengirim pesan dari Service Fabric ke server yang menjalankan sumber daya ELK.

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name testeventhubsrg
    
  10. Buat sumber daya Azure Event Hubs menggunakan perintah berikut. Ikuti perintah untuk memasukkan detail untuk namespaceName, eventHubName, consumerGroupName, sendAuthorizationRule, dan 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
    

    Salin konten bidang output dalam output JSON dari perintah sebelumnya. Informasi pengirim digunakan ketika kluster Service Fabric dibuat. Nama penerima dan kunci harus disimpan untuk digunakan dalam tutorial berikutnya ketika layanan Logstash dikonfigurasi untuk menerima pesan dari Hub Peristiwa. Blob berikut adalah contoh 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. Jalankan skrip eventhubssastoken.py untuk menghasilkan url SAS untuk sumber daya Azure Event Hubs yang Anda buat. URL SAS ini digunakan oleh kluster Service Fabric untuk mengirim log ke Azure Event Hubs. Akibatnya, kebijakan pengirim digunakan untuk menghasilkan URL. Skrip mengembalikan URL SAS untuk sumber daya Azure Event Hubs yang digunakan dalam langkah berikut:

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

    Salin nilai bidang sr di JSON yang dikembalikan. Nilai bidang sr adalah token SAS untuk Azure EventHubs. URL berikut adalah contoh bidang sr:

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

    URL SAS Anda untuk Azure EventHubs mengikuti struktur: https://<namespacename>.servicebus.windows.net/<eventhubsname>?sr=<sastoken>. Misalnya: https://testeventhubnamespace.servicebus.windows.net/testeventhub?sr=https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender

  12. Buka file sfdeploy.parameters.js dan ganti konten berikut dari langkah-langkah sebelumnya. [SAS-URL-STORAGE-ACCOUNT] dicatat pada langkah 8. [SAS-URL-EVENT-HUBS] dicatat pada langkah 11.

    "applicationDiagnosticsStorageAccountName": {
        "value": "teststorageaccount"
    },
    "applicationDiagnosticsStorageAccountSasToken": {
        "value": "[SAS-URL-STORAGE-ACCOUNT]"
    },
    "loggingEventHubSAS": {
        "value": "[SAS-URL-EVENT-HUBS]"
    }
    
  13. Membuka sfdeploy.parameters.jspada. Ubah parameter berikut lalu simpan file.

    • clusterName. Gunakan hanya huruf kecil dan angka.
    • adminUserName (ke nilai selain kosong)
    • adminUserName (ke nilai selain kosong)
  14. Jalankan perintah berikut untuk menghapus kluster 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>
    

Menyebarkan aplikasi ke kluster

  1. Sebelum menyebarkan aplikasi, Anda perlu menambahkan cuplikan berikut ke file Voting/VotingApplication/ApplicationManifest.xml. Bidang X509FindValue adalah thumbprint yang dikembalikan dari Langkah 4 bagian Buat kluster Service Fabric di Azure. Cuplikan ini bersarang di bawah bidang ApplicationManifest (bidang akar).

    <Certificates>
          <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" />
    </Certificates>
    
  2. Untuk menyebarkan aplikasi Anda ke kluster ini, Anda harus menggunakan SFCTL untuk membuat koneksi ke kluster. SFCTL memerlukan file PEM dengan kunci publik dan privat untuk terhubung ke kluster. Jalankan perintah berikut untuk menghasilkan file PEM dengan kunci publik dan privat.

    openssl pkcs12 -in <clustername>.<region>.cloudapp.azure.com.pfx -out sfctlconnection.pem -nodes -passin pass:<password>
    
  3. Jalankan perintah berikut untuk menyambungkan ke kluster lokal Anda.

    sfctl cluster select --endpoint https://<clustername>.<region>.cloudapp.azure.com:19080 --pem sfctlconnection.pem --no-verify
    
  4. Untuk menyebarkan aplikasi Anda, navigasi ke folder Voting/Scripts dan jalankan skrip install.sh.

    ./install.sh
    
  5. Untuk mengakses Explorer Service Fabric, buka browser favorit Anda dan ketik https://testlinuxcluster.westus.cloudapp.azure.com:19080. Pilih sertifikat dari penyimpanan sertifikat yang ingin Anda gunakan untuk menyambungkan ke titik akhir ini. Jika Anda menggunakan komputer Linux, sertifikat yang dihasilkan oleh skrip new-service-fabric-cluster-certificate.sh harus diimpor ke Chrome untuk melihat Explorer Service Fabric. Jika Anda menggunakan Mac, Anda harus menginstal file PFX ke Rantai kunci Anda. Anda melihat aplikasi Anda telah dipasang pada kluster.

    SFX Java Azure

  6. Untuk mengakses aplikasi Anda, ketik https://testlinuxcluster.westus.cloudapp.azure.com:8080

    Voting App Java Azure

  7. Untuk mencopot pemasangan aplikasi Anda dari kluster, jalankan skrip uninstall.sh di folder Skrip

    ./uninstall.sh
    

Langkah berikutnya

Dalam tutorial ini, Anda mempelajari cara:

  • Membuat kluster Linux yang aman di Azure
  • Membuat sumber daya yang diperlukan untuk pemantauan dengan ELK

Melanjutkan ke tutorial berikutnya: