Bagikan melalui


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:

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:

Untuk Ubuntu 20.04 LTS:

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.