Menyebarkan kluster Service Fabric ke jaringan virtual Azure
Dalam artikel ini Anda mempelajari cara menyebarkan kluster Linux Service Fabric ke dalam jaringan virtual Azure (VNET) menggunakan Azure CLI dan templat. Setelah selesai, Anda memiliki kluster yang berjalan di cloud tempat Anda dapat menyebarkan aplikasi. Untuk membuat kluster Windows menggunakan PowerShell, lihat Membuat kluster Windows yang aman di Azure.
Prasyarat
Sebelum Anda mulai:
- Jika Anda tidak memiliki langganan Azure, buatlah akun gratis
- Pasang Service Fabric CLI
- Pasang Azure CLI
- Untuk mempelajari konsep utama kluster, baca Ringkasan kluster Azure
- Rencanakan dan persiapkan penyebaran kluster produksi.
Prosedur berikut membuat kluster Service Fabric tujuh node. Gunakan Kalkulator Harga Azure untuk menghitung biaya yang dikeluarkan dengan menjalankan kluster Service Fabric di Azure.
Mengunduh dan menjelajahi templat
Unduh file templat Azure Resource Manager berikut ini:
Untuk Ubuntu 18.04 LTS:
- AzureDeploy.json
- Atribut vmImageSku untuk "18.04-LTS"
- Sumber daya Microsoft.ServiceFabric/clusters
- apiVersion yang diatur ke "2019-03-01"
- properti vmImage diatur ke "Ubuntu18_04"
- AzureDeploy.Parameters.json
Untuk Ubuntu 20.04 LTS:
- AzureDeploy.json
- Atribut vmImageSku untuk "20.04-LTS"
- Sumber daya Microsoft.ServiceFabric/clusters
- apiVersion yang diatur ke "2019-03-01"
- Properti vmImage yang diatur ke "Ubuntu20_04"
- AzureDeploy.Parameters.json
Templat ini menyebarkan kluster aman tujuh mesin virtual dan tiga jenis simpul ke dalam jaringan virtual. Contoh templat lainnya dapat ditemukan di GitHub. AzureDeploy.json menyebarkan sejumlah sumber daya, termasuk berikut ini.
Kluster Service Fabric
Di sumber daya Microsoft.ServiceFabric/clusters, kluster Linux diterapkan dengan karakteristik berikut:
- Tiga jenis node
- Lima node dalam jenis node utama (dapat dikonfigurasi dalam parameter templat), dan satu node di masing-masing dari dua jenis node lainnya
- OS: (Ubuntu 18.04 LTS / Ubuntu 20.04) (dapat dikonfigurasi dalam parameter templat)
- sertifikat aman (dapat dikonfigurasi dalam parameter templat)
- Layanan DNS diaktifkan
- Tingkat durabilitas Bronze (dapat dikonfigurasi dalam parameter templat)
- Tingkat keandalan Silver (dapat dikonfigurasi dalam parameter templat)
- titik akhir koneksi klien: 19000 (dapat dikonfigurasi dalam parameter templat)
- Titik akhir gateway HTTP: 19080 (dapat dikonfigurasi dalam parameter templat)
Penyeimbang beban Azure
Di sumber daya Microsoft.Network/loadBalancers, load balancer dikonfigurasi dan pemeriksaan serta aturan disiapkan untuk port berikut:
- titik akhir koneksi klien: 19000
- Titik akhir gateway HTTP: 19080
- port aplikasi: 80
- port aplikasi: 443
Jaringan virtual dan subnet
Nama jaringan virtual dan subnet dideklarasikan dalam parameter templat. Ruang alamat jaringan virtual dan subnet juga dideklarasikan dalam parameter templat dan dikonfigurasi di sumber daya Microsoft.Network/virtualNetworks:
- ruang alamat jaringan virtual: 10.0.0.0/16
- Ruang alamat subnet Service Fabric: 10.0.2.0/24
Jika ada port aplikasi lain yang diperlukan, maka Anda harus menyesuaikan sumber daya Microsoft.Network/loadBalancers untuk memungkinkan lalu lintas masuk.
Ekstensi Service Fabric
Di sumber daya Microsoft.Compute/virtualMachineScaleSets, ekstensi Service Fabric Linux dikonfigurasi. Ekstensi ini digunakan untuk bootstrap Service Fabric ke Azure Virtual Machines dan mengonfigurasi Node Security.
Berikut ini adalah cuplikan templat untuk ekstensi Service Fabric Linux:
"extensions": [
{
"name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
"properties": {
"type": "ServiceFabricLinuxNode",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"protectedSettings": {
"StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
},
"publisher": "Microsoft.Azure.ServiceFabric",
"settings": {
"clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
"nodeTypeRef": "[variables('vmNodeType0Name')]",
"durabilityLevel": "Silver",
"enableParallelJobs": true,
"nicPrefixOverride": "[variables('subnet0Prefix')]",
"certificate": {
"commonNames": [
"[parameters('certificateCommonName')]"
],
"x509StoreName": "[parameters('certificateStoreValue')]"
}
},
"typeHandlerVersion": "2.0"
}
},
Set parameter templat
File AzureDeploy.Parameters mendeklarasikan banyak nilai yang digunakan untuk menyebarkan kluster dan sumber daya terkait. Beberapa parameter yang mungkin perlu Anda ubah untuk penyebaran Anda:
Parameter | Contoh nilai | Catatan |
---|---|---|
adminUserName | vmadmin | Nama pengguna admin untuk komputer virtual kluster. |
adminPassword | Kata sandi#1234 | Kata sandi admin untuk komputer virtual kluster. |
clusterName | mysfcluster123 | Nama kluster. |
lokasi | southcentralus | Lokasi kluster. |
certificateThumbprint | Nilai harus kosong jika membuat sertifikat yang ditandatangani sendiri atau menyediakan file sertifikat. Untuk menggunakan sertifikat yang sudah ada yang sebelumnya diunggah ke key vault, isi nilai thumbprint SHA1 sertifikat. Misalnya, "6190390162C988701DB5676EB81083EA608DCCF3". |
|
certificateUrlValue | Nilai harus kosong jika membuat sertifikat yang ditandatangani sendiri atau menyediakan file sertifikat. Untuk menggunakan sertifikat yang sudah ada yang sebelumnya diunggah ke key vault, isi nilai thumbprint URL sertifikat. Misalnya, "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346". |
|
sourceVaultValue | Nilai harus kosong jika membuat sertifikat yang ditandatangani sendiri atau menyediakan file sertifikat. Untuk menggunakan sertifikat yang sudah ada yang sebelumnya diunggah ke key vault, isi nilai vault sumber. Misalnya, "/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT". |
Menyebarkan jaringan virtual dan kluster
Selanjutnya, siapkan topologi jaringan dan sebarkan kluster Service Fabric. Templat Resource Manager AzureDeploy.json membuat jaringan virtual (VNET) dan subnet untuk Service Fabric. Templat juga menggunakan kluster dengan keamanan sertifikat diaktifkan. Untuk kluster produksi, gunakan sertifikat dari otoritas sertifikat (CA) sebagai sertifikat kluster. Sertifikat yang ditandatangani sendiri dapat digunakan untuk mengamankan kluster pengujian.
Templat dalam artikel ini menyebarkan kluster yang menggunakan thumbprint sertifikat untuk mengidentifikasi sertifikat kluster. Tidak ada dua sertifikat yang dapat memiliki thumbprint yang sama, yang membuat manajemen sertifikat lebih sulit. Mengalihkan kluster yang disebarkan dari thumbprint sertifikat ke nama umum sertifikat mempermudah manajemen sertifikat. Untuk mempelajari cara memperbarui kluster untuk menggunakan nama umum sertifikat demi manajemen sertifikat, baca mengubah kluster ke manajemen nama umum sertifikat.
Membuat kluster dengan menggunakan sertifikat yang sudah ada
Skrip berikut menggunakan perintah buat kluster az sf dan templat untuk menyebarkan kluster baru yang diamankan dengan sertifikat yang ada. Cmdlet membuat key vault baru di Azure dan mengunggah sertifikat Anda.
ResourceGroupName="sflinuxclustergroup"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates\MyCertificate.pem"
# sign in to your Azure account and select your subscription
az login
az account set --subscription <guid>
# Create a new resource group for your deployment and give it a name and a location.
az group create --name $ResourceGroupName --location $Location
# Create the Service Fabric cluster.
az sf cluster create --resource-group $ResourceGroupName --location $Location \
--certificate-password $Password --certificate-file $CertPath \
--vault-name $VaultName --vault-resource-group $ResourceGroupName \
--template-file AzureDeploy.json --parameter-file AzureDeploy.Parameters.json
Membuat kluster dengan menggunakan sertifikat baru yang ditandatangani sendiri
Skrip berikut menggunakan perintah buat kluster az sf dan templat untuk menyebarkan kluster baru di Azure. Cmdlet membuat key vault baru di Azure, menambahkan sertifikat bertanda tangan mandiri baru ke key vault, dan mengunduh file sertifikat secara lokal.
ResourceGroupName="sflinuxclustergroup"
ClusterName="sflinuxcluster"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates"
az sf cluster create --resource-group $ResourceGroupName --location $Location \
--cluster-name $ClusterName --template-file C:\temp\cluster\AzureDeploy.json \
--parameter-file C:\temp\cluster\AzureDeploy.Parameters.json --certificate-password $Password \
--certificate-output-folder $CertPath --certificate-subject-name $ClusterName.$Location.cloudapp.azure.com \
--vault-name $VaultName --vault-resource-group $ResourceGroupName
Menyambungkan ke kluster aman
Sambungkan ke kluster menggunakan perintah Service Fabric CLI sfctl cluster select
dengan kunci Anda. Catatan, hanya gunakan opsi --no-verify untuk sertifikat yang ditandatangani sendiri.
sfctl cluster select --endpoint https://aztestcluster.southcentralus.cloudapp.azure.com:19080 \
--pem ./aztestcluster201709151446.pem --no-verify
Periksa apakah Anda tersambung dan kluster berjalan baik menggunakan perintah sfctl cluster health
.
sfctl cluster health
Membersihkan sumber daya
Jika Anda tidak segera beralih ke artikel berikutnya, Anda mungkin ingin menghapus kluster untuk menghindari biaya yang dikenakan.
Langkah berikutnya
Pelajari cara menskalakan Kluster.
Templat dalam artikel ini menyebarkan kluster yang menggunakan thumbprint sertifikat untuk mengidentifikasi sertifikat kluster. Tidak ada dua sertifikat yang dapat memiliki thumbprint yang sama, yang membuat manajemen sertifikat lebih sulit. Mengalihkan kluster yang disebarkan dari thumbprint sertifikat ke nama umum sertifikat mempermudah manajemen sertifikat. Untuk mempelajari cara memperbarui kluster untuk menggunakan nama umum sertifikat demi manajemen sertifikat, baca mengubah kluster ke manajemen nama umum sertifikat.