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:
- Jika Anda tidak memiliki langganan Azure, buatlah akun gratis
- Instal Azure CLI
- Memasang SDK Service Fabric untuk Mac atau Linux
- Memasang Python 3
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.
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
Masuk ke akun Azure Anda
az login
Mengatur langganan Azure yang ingin Anda gunakan untuk membuat sumber daya
az account set --subscription [SUBSCRIPTION-ID]
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>
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
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
Akses portal Microsoft Azure dan navigasi ke tab Tanda Tangan Akses Bersama untuk akun Storage Anda. Hasilkan token SAS sebagai berikut.
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
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
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" } }
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
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]" }
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)
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
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>
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>
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
Untuk menyebarkan aplikasi Anda, navigasi ke folder Voting/Scripts dan jalankan skrip install.sh.
./install.sh
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.Untuk mengakses aplikasi Anda, ketik
https://testlinuxcluster.westus.cloudapp.azure.com:8080
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: