Tutorial: Menyebarkan kluster Service Fabric yang menjalankan Windows ke jaringan virtual Azure

Tutorial ini adalah bagian pertama dari seri. Dalam tutorial ini, Anda mempelajari cara menggunakan kluster Windows Service Fabric ke dalam jaringan virtual Azure dan grup keamanan jaringan dengan menggunakan PowerShell dan templat. Setelah selesai, Anda memiliki kluster yang berjalan di cloud tempat Anda dapat menyebarkan aplikasi. Untuk membuat kluster Linux yang menggunakan Azure CLI, lihat Membuat kluster Linux yang aman di Azure.

Tutorial ini menjelaskan skenario produksi. Jika Anda ingin membuat kluster yang lebih kecil untuk tujuan pengujian, lihat Membuat kluster pengujian.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat VNET di Azure menggunakan PowerShell
  • Membuat brankas kunci dan mengunggah sertifikat
  • Menyiapkan autentikasi Microsoft Entra
  • Mengonfigurasi koleksi diagnostik
  • Menyiapkan layanan EventStore
  • Menyiapkan log Azure Monitor
  • Membuat kluster Service Fabric yang aman di Azure PowerShell
  • Mengamankan kluster dengan sertifikat X.509
  • Menyambungkan ke kluster menggunakan Powershell
  • Menghapus kluster

Dalam tutorial ini, Anda akan belajar cara:

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Prasyarat

Sebelum Anda memulai tutorial ini:

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:

Templat ini menyebarkan kluster aman tujuh komputer virtual dan tiga jenis simpul ke dalam jaringan virtual dan grup keamanan jaringan. Contoh templat lainnya dapat ditemukan di GitHub. Laporan azuredeploy.json menyebar sejumlah sumber daya, termasuk yang berikut ini.

Kluster Service Fabric

Di sumber daya Microsoft.ServiceFabric/clusters, kluster Windows dikonfigurasi dengan karakteristik berikut:

  • Tiga jenis simpul.
  • Lima simpul dalam jenis simpul utama (dapat dikonfigurasi dalam parameter templat), dan satu simpul di masing-masing dari dua jenis simpul lainnya.
  • OS: Windows Server 2016 Datacenter dengan Kontainer (dapat dikonfigurasi dalam parameter templat).
  • Sertifikat aman (dapat dikonfigurasi dalam parameter templat).
  • Proksi terbalik diaktifkan.
  • Layanan DNS diaktifkan.
  • Tingkat durabilitas Bronze (dapat dikonfigurasi dalam parameter templat).
  • Tingkat keandalan Silver (dapat dikonfigurasi dalam parameter templat).
  • Endpoint 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, penyeimbang muatan dikonfigurasi. Pemeriksaan dan aturan disiapkan untuk port berikut:

  • Titik akhir koneksi klien: 19000
  • Titik akhir gateway HTTP: 19080
  • Port aplikasi: 80
  • Port aplikasi: 443
  • Proksi terbalik Service Fabric: 19081

Jika port aplikasi lain diperlukan, Anda harus menyesuaikan sumber daya Microsoft.Network/loadBalancers dan sumber daya Microsoft.Network/networkSecurityGroups untuk memungkinkan lalu lintas masuk.

Jaringan virtual, subjaringan, dan grup keamanan jaringan

Nama-nama jaringan virtual, subnet, dan grup keamanan jaringan 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: 172.16.0.0/20
  • Ruang alamat subnet Service Fabric: 172.16.2.0/23

Aturan lalu lintas masuk berikut ini diaktifkan di sumber daya Microsoft.Network/networkSecurityGroups. Anda dapat mengubah nilai port dengan mengubah variabel templat.

  • ClientConnectionEndpoint (TCP): 19000
  • HttpGatewayEndpoint (HTTP/TCP): 19080
  • SMB: 445
  • Internodekomunikasi: 1025, 1026, 1027
  • Kisaran port sementara: 49152 hingga 65534 (membutuhkan minimal 256 port).
  • Port untuk penggunaan aplikasi: 80 dan 443
  • Rentang port aplikasi: 49152 hingga 65534 (digunakan untuk komunikasi layanan ke layanan. Port lain tidak dibuka pada Load balancer).
  • Blok semua port lainnya

Jika port aplikasi lain diperlukan, Anda harus menyesuaikan sumber daya Microsoft.Network/loadBalancers dan sumber daya Microsoft.Network/networkSecurityGroups untuk memungkinkan lalu lintas masuk.

Pertahanan Windows

Secara default, program antivirus Windows Defender dipasang dan fungsional pada Windows Server 2016. Antarmuka pengguna dipasang secara default pada beberapa SKU, tetapi tidak wajib. Untuk setiap jenis simpul/set skala komputer virtual yang dideklarasikan dalam templat, ekstensi Azure VM Antimalware digunakan untuk mengecualikan direktori dan proses Service Fabric:

{
"name": "[concat('VMIaaSAntimalware','_vmNodeType0Name')]",
"properties": {
        "publisher": "Microsoft.Azure.Security",
        "type": "IaaSAntimalware",
        "typeHandlerVersion": "1.5",
        "settings": {
        "AntimalwareEnabled": "true",
        "Exclusions": {
                "Paths": "D:\\SvcFab;D:\\SvcFab\\Log;C:\\Program Files\\Microsoft Service Fabric",
                "Processes": "Fabric.exe;FabricHost.exe;FabricInstallerService.exe;FabricSetup.exe;FabricDeployer.exe;ImageBuilder.exe;FabricGateway.exe;FabricDCA.exe;FabricFAS.exe;FabricUOS.exe;FabricRM.exe;FileStoreService.exe"
        },
        "RealtimeProtectionEnabled": "true",
        "ScheduledScanSettings": {
                "isEnabled": "true",
                "scanType": "Quick",
                "day": "7",
                "time": "120"
        }
        },
        "protectedSettings": null
}
}

Set parameter templat

File parameter azuredeploy.parameters.jsfile mendeklarasikan banyak nilai yang digunakan untuk menyebarkan kluster dan sumber daya terkait. Berikut ini adalah parameter yang akan dimodifikasi untuk penyebaran Anda:

Parameter Contoh nilai Catatan
adminUserName vmadmin Nama pengguna admin untuk komputer virtual kluster. Persyaratan nama pengguna untuk komputer virtual.
adminPassword Kata sandi#1234 Kata sandi admin untuk komputer virtual kluster. Persyaratan kata sandi untuk komputer virtual.
clusterName mysfcluster123 Nama kluster. Hanya dapat berisi huruf dan angka. Panjangnya bisa antara 3 dan 23 karakter.
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".

Menyiapkan autentikasi klien Microsoft Entra

Untuk kluster Service Fabric yang diterapkan di jaringan publik yang dihosting di Azure, rekomendasi untuk autentikasi timbal balik klien-ke-simpul adalah:

  • Gunakan ID Microsoft Entra untuk identitas klien.
  • Gunakan sertifikat untuk identitas server dan enkripsi TLS komunikasi HTTP.

Menyiapkan ID Microsoft Entra untuk mengautentikasi klien untuk kluster Service Fabric harus dilakukan sebelum membuat kluster. MICROSOFT Entra ID memungkinkan organisasi (dikenal sebagai penyewa) untuk mengelola akses pengguna ke aplikasi.

Kluster Service Fabric menawarkan beberapa titik masuk ke fungsionalitas manajemennya, termasuk Service Fabric Explorer dan Visual Studio berbasis web. Akibatnya, Anda membuat dua aplikasi Microsoft Entra untuk mengontrol akses ke kluster: satu aplikasi web dan satu aplikasi asli. Setelah aplikasi dibuat, Anda tetapkan pengguna untuk peran baca-saja dan admin.

Catatan

Anda harus menyelesaikan langkah-langkah berikut sebelum membuat kluster. Karena skrip mengharapkan nama kluster dan titik akhir, nilai harus direncanakan dan bukan nilai yang telah Anda buat.

Dalam artikel ini, kami berasumsi bahwa Anda telah membuat penyewa. Jika belum, mulailah dengan membaca Cara mendapatkan penyewa Microsoft Entra.

Untuk menyederhanakan langkah-langkah yang terlibat dalam mengonfigurasi ID Microsoft Entra dengan kluster Service Fabric, kami telah membuat sekumpulan skrip Windows PowerShell. Unduh skrip ke komputer Anda.

Membuat aplikasi Microsoft Entra dan menetapkan pengguna ke peran

Buat dua aplikasi Microsoft Entra untuk mengontrol akses ke kluster: satu aplikasi web dan satu aplikasi asli. Setelah Anda membuat aplikasi untuk mewakili kluster Anda, tetapkan pengguna Anda ke peran yang didukung oleh Service Fabric: baca-saja dan admin.

Jalankan SetupApplications.ps1, dan berikan ID penyewa, nama klaster, dan URL balasan aplikasi web sebagai parameter. Tentukan nama pengguna dan kata sandi untuk pengguna. Contoh:

$Configobj = .\SetupApplications.ps1 -TenantId '<MyTenantID>' -ClusterName 'mysfcluster123' -WebApplicationReplyUrl 'https://mysfcluster123.eastus.cloudapp.azure.com:19080/Explorer/index.html' -AddResourceAccess
.\SetupUser.ps1 -ConfigObj $Configobj -UserName 'TestUser' -Password 'P@ssword!123'
.\SetupUser.ps1 -ConfigObj $Configobj -UserName 'TestAdmin' -Password 'P@ssword!123' -IsAdmin

Catatan

Untuk cloud nasional (misalnya Azure Government, Microsoft Azure yang dioperasikan oleh 21Vianet, Azure Jerman), tentukan parameter .-Location

Anda dapat menemukan TenantId,atau ID direktori, di portal Microsoft Azure. Pilih Properti ID>Microsoft Entra dan salin nilai ID Direktori.

ClusterName digunakan untuk mengawali aplikasi Microsoft Entra yang dibuat oleh skrip. Tidak perlu persis cocok dengan nama kluster yang sebenarnya. Ini hanya memudahkan untuk memetakan artefak Microsoft Entra ke kluster Service Fabric yang digunakan.

WebApplicationReplyUrl adalah titik akhir default yang dikembalikan ID Microsoft Entra kepada pengguna Anda setelah mereka selesai masuk. Tetapkan titik akhir ini sebagai titik akhir Service Fabric Explorer untuk kluster Anda, yang secara default adalah:

https:// cluster_domain <> :19080/Explorer

Anda diminta untuk masuk ke akun yang memiliki hak istimewa admin untuk penyewa Microsoft Entra. Setelah Anda masuk, skrip membuat web dan aplikasi asli untuk mewakili kluster Service Fabric Anda. Dalam aplikasi penyewa di portal Microsoft Azure, Anda akan melihat dua entri baru:

  • ClusterName_Cluster
  • ClusterName_Client

Skrip mencetak JSON yang diperlukan oleh templat Azure Resource Manager saat Anda membuat kluster, jadi ada baiknya untuk menjaga jendela PowerShell tetap terbuka.

"azureActiveDirectory": {
  "tenantId":"<guid>",
  "clusterApplication":"<guid>",
  "clientApplication":"<guid>"
},

Menambahkan konfigurasi Microsoft Entra untuk menggunakan ID Microsoft Entra untuk akses klien

Di azuredeploy.json, konfigurasikan ID Microsoft Entra di bagian Microsoft.ServiceFabric/clusters. Tambahkan parameter untuk ID penyewa, ID aplikasi kluster, dan ID aplikasi klien.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    ...

    "aadTenantId": {
      "type": "string",
      "defaultValue": "0e3d2646-78b3-4711-b8be-74a381d9890c"
    },
    "aadClusterApplicationId": {
      "type": "string",
      "defaultValue": "cb147d34-b0b9-4e77-81d6-420fef0c4180"
    },
    "aadClientApplicationId": {
      "type": "string",
      "defaultValue": "7a8f3b37-cc40-45cc-9b8f-57b8919ea461"
    }
  },

...

{
  "apiVersion": "2018-02-01",
  "type": "Microsoft.ServiceFabric/clusters",
  "name": "[parameters('clusterName')]",
  ...
  "properties": {
    ...
    "azureActiveDirectory": {
      "tenantId": "[parameters('aadTenantId')]",
      "clusterApplication": "[parameters('aadClusterApplicationId')]",
      "clientApplication": "[parameters('aadClientApplicationId')]"
    },
    ...
  }
}

Tambahkan nilai parameter dalam file parameter azuredeploy.parameters.json. Contohnya:

"aadTenantId": {
"value": "0e3d2646-78b3-4711-b8be-74a381d9890c"
},
"aadClusterApplicationId": {
"value": "cb147d34-b0b9-4e77-81d6-420fef0c4180"
},
"aadClientApplicationId": {
"value": "7a8f3b37-cc40-45cc-9b8f-57b8919ea461"
}

Mengonfigurasi koleksi diagnostik pada kluster

Ketika Anda menjalankan kluster Service Fabric, ada baiknya untuk mengumpulkan log dari semua simpul di lokasi pusat. Memiliki log di lokasi pusat membantu Anda menganalisis dan memecahkan masalah di kluster Anda, atau masalah dalam aplikasi dan layanan yang berjalan di kluster tersebut.

Salah satu cara untuk mengunggah dan mengumpulkan log adalah dengan menggunakan ekstensi Azure Diagnostics (WAD), yang mengunggah log ke Azure Storage, dan juga memiliki opsi untuk mengirim log ke Azure Application Insights atau Azure Event Hubs. Anda juga dapat menggunakan proses eksternal untuk membaca peristiwa dari penyimpanan dan menempatkannya di produk platform analisis, seperti log Azure Monitor atau solusi penguraian log lainnya.

Jika Anda mengikuti tutorial ini, koleksi diagnostik sudah dikonfigurasi dalam templat.

Jika Anda memiliki kluster yang sudah ada yang tidak memiliki Diagnostik yang disebarkan, Anda dapat menambahkan atau memperbaruinya melalui templat kluster. Ubah templat Resource Manager yang digunakan untuk membuat kluster yang ada atau unduh templat dari portal. Ubah template.json dengan melakukan tugas berikut:

Tambahkan sumber daya penyimpanan baru ke bagian sumber daya di templat:

"resources": [
...
{
  "apiVersion": "2015-05-01-preview",
  "type": "Microsoft.Storage/storageAccounts",
  "name": "[parameters('applicationDiagnosticsStorageAccountName')]",
  "location": "[parameters('computeLocation')]",
  "sku": {
    "accountType": "[parameters('applicationDiagnosticsStorageAccountType')]"
  },
  "tags": {
    "resourceType": "Service Fabric",
    "clusterName": "[parameters('clusterName')]"
  }
},
...
]

Selanjutnya, tambahkan parameter untuk nama akun penyimpanan dan ketikkan ke bagian parameter templat. Ganti nama akun penyimpanan teks tempat penampung di sini dengan nama akun penyimpanan yang Anda inginkan.

"parameters": {
...
"applicationDiagnosticsStorageAccountType": {
    "type": "string",
    "allowedValues": [
    "Standard_LRS",
    "Standard_GRS"
    ],
    "defaultValue": "Standard_LRS",
    "metadata": {
    "description": "Replication option for the application diagnostics storage account"
    }
},
"applicationDiagnosticsStorageAccountName": {
    "type": "string",
    "defaultValue": "**STORAGE ACCOUNT NAME GOES HERE**",
    "metadata": {
    "description": "Name for the storage account that contains application diagnostics data from the cluster"
    }
},
...
}

Selanjutnya, tambahkan ekstensi IaaSDiagnostics ke array ekstensi properti VirtualMachineProfile dari setiap sumber daya Microsoft.Compute/virtualMachineScaleSets di kluster. Jika Anda menggunakan sampel templat, ada tiga set skala komputer virtual (satu untuk setiap jenis simpul di kluster).

"apiVersion": "2018-10-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[variables('vmNodeType1Name')]",
"properties": {
    ...
    "virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat(parameters('vmNodeType0Name'),'_Microsoft.Insights.VMDiagnosticsSettings')]",
                    "properties": {
                        "type": "IaaSDiagnostics",
                        "autoUpgradeMinorVersion": true,
                        "protectedSettings": {
                        "storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]",
                        "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
                        "storageAccountEndPoint": "https://core.windows.net/"
                        },
                        "publisher": "Microsoft.Azure.Diagnostics",
                        "settings": {
                        "WadCfg": {
                            "DiagnosticMonitorConfiguration": {
                            "overallQuotaInMB": "50000",
                            "EtwProviders": {
                                "EtwEventSourceProviderConfiguration": [
                                {
                                    "provider": "Microsoft-ServiceFabric-Actors",
                                    "scheduledTransferKeywordFilter": "1",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricReliableActorEventTable"
                                    }
                                },
                                {
                                    "provider": "Microsoft-ServiceFabric-Services",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricReliableServiceEventTable"
                                    }
                                }
                                ],
                                "EtwManifestProviderConfiguration": [
                                {
                                    "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
                                    "scheduledTransferLogLevelFilter": "Information",
                                    "scheduledTransferKeywordFilter": "4611686018427387904",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricSystemEventTable"
                                    }
                                }
                                ]
                            }
                            }
                        },
                        "StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
                        },
                        "typeHandlerVersion": "1.5"
                    }
                }
            ...
            ]
        }
    }
}

Mengonfigurasi layanan EventStore

Layanan EventStore adalah opsi pemantauan di Service Fabric. EventStore menyediakan cara untuk memahami keadaan kluster atau beban kerja Anda pada titik waktu tertentu. EventStore adalah layanan Service Fabric yang kuat yang menyimpan peristiwa dari kluster. Peristiwa ini dipaparkan melalui Service Fabric Explorer, REST dan API. EventStore mengkueri kluster secara langsung untuk mendapatkan data diagnostik pada entitas apa pun di kluster Anda dan harus digunakan untuk membantu:

  • Mendiagnosis masalah dalam pengembangan atau pengujian, atau tempat Anda mungkin menggunakan alur pemantauan
  • Mengkonfirmasikan bahwa tindakan manajemen yang Anda lakukan pada kluster Anda sedang diproses dengan benar
  • Mendapatkan "rekam jepret" tentang bagaimana Service Fabric berinteraksi dengan entitas tertentu

Untuk mengaktifkan layanan EventStore pada kluster Anda, tambahkan yang berikut ini ke properti fabricSettings dari sumber daya Microsoft.ServiceFabric/clusters:

"apiVersion": "2018-02-01",
"type": "Microsoft.ServiceFabric/clusters",
"name": "[parameters('clusterName')]",
"properties": {
    ...
    "fabricSettings": [
        ...
        {
            "name": "EventStoreService",
            "parameters": [
                {
                "name": "TargetReplicaSetSize",
                "value": "3"
                },
                {
                "name": "MinReplicaSetSize",
                "value": "1"
                }
            ]
        }
    ]
}

Menyiapkan log Azure Monitor untuk kluster

Log Azure Monitor adalah rekomendasi kami untuk memantau kejadian tingkat kluster. Untuk menyiapkan log Azure Monitor untuk memantau kluster, Anda harus memiliki diagnostik aktif untuk melihat kejadian tingkat kluster.

Ruang kerja harus tersambungkan ke data diagnostik yang berasal dari kluster Anda. Data log ini disimpan dalam akun penyimpanan aplikasiDiagnosticsStorageAccountName, di tabel WADServiceFabric*EventTable, WADWindowsEventLogsTable, dan WADETWEventTable.

Tambahkan ruang kerja Azure Log Analytics dan tambahkan solusi ke ruang kerja:

"resources": [
    ...
    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[parameters('omsWorkspacename')]",
        "type": "Microsoft.OperationalInsights/workspaces",
        "properties": {
            "sku": {
                "name": "Free"
            }
        },
        "resources": [
            {
                "apiVersion": "2015-11-01-preview",
                "name": "[concat(variables('applicationDiagnosticsStorageAccountName'),parameters('omsWorkspacename'))]",
                "type": "storageinsightconfigs",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]",
                    "[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]"
                ],
                "properties": {
                    "containers": [],
                    "tables": [
                        "WADServiceFabric*EventTable",
                        "WADWindowsEventLogsTable",
                        "WADETWEventTable"
                    ],
                    "storageAccount": {
                        "id": "[resourceId('Microsoft.Storage/storageaccounts/', variables('applicationDiagnosticsStorageAccountName'))]",
                        "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-06-15').key1]"
                    }
                }
            },
            {
                "apiVersion": "2015-11-01-preview",
                "type": "datasources",
                "name": "sampleWindowsPerfCounter",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
                ],
                "kind": "WindowsPerformanceCounter",
                "properties": {
                    "objectName": "Memory",
                    "instanceName": "*",
                    "intervalSeconds": 10,
                    "counterName": "Available MBytes"
                }
            },
            {
                "apiVersion": "2015-11-01-preview",
                "type": "datasources",
                "name": "sampleWindowsPerfCounter2",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
                ],
                "kind": "WindowsPerformanceCounter",
                "properties": {
                    "objectName": "Service Fabric Service",
                    "instanceName": "*",
                    "intervalSeconds": 10,
                    "counterName": "Average milliseconds per request"
                }
            }
        ]
    },
    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[variables('solution')]",
        "type": "Microsoft.OperationsManagement/solutions",
        "dependsOn": [
            "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
        ],
        "properties": {
            "workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
        },
        "plan": {
            "name": "[variables('solution')]",
            "publisher": "Microsoft",
            "product": "[Concat('OMSGallery/', variables('solutionName'))]",
            "promotionCode": ""
        }
    }
]

Selanjutnya, tambahkan parameter

"parameters": {
    ...
    "omsWorkspacename": {
        "type": "string",
        "defaultValue": "mysfomsworkspace",
        "metadata": {
            "description": "Name of your OMS Log Analytics Workspace"
        }
    },
    "omsRegion": {
        "type": "string",
        "defaultValue": "West Europe",
        "allowedValues": [
            "West Europe",
            "East US",
            "Southeast Asia"
        ],
        "metadata": {
            "description": "Specify the Azure Region for your OMS workspace"
        }
    }
}

Selanjutnya, tambahkan variabel:

"variables": {
    ...
    "solution": "[Concat('ServiceFabric', '(', parameters('omsWorkspacename'), ')')]",
    "solutionName": "ServiceFabric"
}

Tambahkan ekstensi agen Analitik Log ke setiap skala komputer virtual yang diatur dalam kluster dan sambungkan agen ke ruang kerja Analitik Log. Ini mengaktifkan pengumpulan data diagnostik tentang kontainer, aplikasi, dan pemantauan performa. Dengan menambahkannya sebagai ekstensi ke sumber daya set skala komputer virtual, Azure Resource Manager memastikan bahwa itu akan dipasang pada setiap simpul, bahkan ketika menskalakan kluster.

"apiVersion": "2018-10-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[variables('vmNodeType1Name')]",
"properties": {
    ...
    "virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat(variables('vmNodeType0Name'),'OMS')]",
                    "properties": {
                        "publisher": "Microsoft.EnterpriseCloud.Monitoring",
                        "type": "MicrosoftMonitoringAgent",
                        "typeHandlerVersion": "1.0",
                        "autoUpgradeMinorVersion": true,
                        "settings": {
                            "workspaceId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')), '2015-11-01-preview').customerId]"
                        },
                        "protectedSettings": {
                            "workspaceKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')),'2015-11-01-preview').primarySharedKey]"
                        }
                    }
                }
            ...
            ]
        }
    }
}

Menyebarkan jaringan virtual dan kluster

Selanjutnya, siapkan topologi jaringan dan sebarkan kluster Service Fabric. Templat Resource Manager azuredeploy.json membuat jaringan virtual, subnet, dan grup keamanan jaringan untuk Service Fabric. Templat juga menggunakan kluster dengan keamanan sertifikat diaktifkan. Untuk kluster produksi, gunakan sertifikat dari otoritas sertifikat 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 cmdlet New-AzServiceFabricCluster dan templat untuk menerapkan kluster baru di Azure. Cmdlet membuat brankas kunci baru di Azure dan mengunggah sertifikat Anda.

# Variables.
$groupname = "sfclustertutorialgroup"
$clusterloc="southcentralus"  # Must match the location parameter in the template
$templatepath="C:\temp\cluster"

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
$clustername = "mysfcluster123"  # Must match the clustername parameter in the template
$vaultname = "clusterkeyvault123"
$vaultgroupname="clusterkeyvaultgroup123"
$subname="$clustername.$clusterloc.cloudapp.azure.com"

# Sign in to your Azure account and select your subscription
Connect-AzAccount
Get-AzSubscription
Set-AzContext -SubscriptionId <guid>

# Create a new resource group for your deployment, and give it a name and a location.
New-AzResourceGroup -Name $groupname -Location $clusterloc

# Create the Service Fabric cluster.
New-AzServiceFabricCluster  -ResourceGroupName $groupname -TemplateFile "$templatepath\azuredeploy.json" `
-ParameterFile "$templatepath\azuredeploy.parameters.json" -CertificatePassword $certpwd `
-KeyVaultName $vaultname -KeyVaultResourceGroupName $vaultgroupname -CertificateFile $certpath

Membuat kluster dengan menggunakan sertifikat baru yang ditandatangani sendiri

Skrip berikut menggunakan cmdlet New-AzServiceFabricCluster dan templat untuk menerapkan kluster baru di Azure. Cmdlet membuat brankas kunci baru di Azure, menambahkan sertifikat bertanda tangan mandiri baru ke brankas kunci, dan mengunduh file sertifikat secara lokal.

# Variables.
$groupname = "sfclustertutorialgroup"
$clusterloc="southcentralus"  # Must match the location parameter in the template
$templatepath="C:\temp\cluster"

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
$certfolder="c:\mycertificates\"
$clustername = "mysfcluster123"
$vaultname = "clusterkeyvault123"
$vaultgroupname="clusterkeyvaultgroup123"
$subname="$clustername.$clusterloc.cloudapp.azure.com"

# Sign in to your Azure account and select your subscription
Connect-AzAccount
Get-AzSubscription
Set-AzContext -SubscriptionId <guid>

# Create a new resource group for your deployment, and give it a name and a location.
New-AzResourceGroup -Name $groupname -Location $clusterloc

# Create the Service Fabric cluster.
New-AzServiceFabricCluster  -ResourceGroupName $groupname -TemplateFile "$templatepath\azuredeploy.json" `
-ParameterFile "$templatepath\azuredeploy.parameters.json" -CertificatePassword $certpwd `
-CertificateOutputFolder $certfolder -KeyVaultName $vaultname -KeyVaultResourceGroupName $vaultgroupname -CertificateSubjectName $subname

Menyambungkan ke kluster aman

Sambungkan ke kluster dengan menggunakan modul Service Fabric PowerShell yang dipasang dengan Service Fabric SDK. Pertama, instal sertifikat ke toko Pribadi (Saya) pengguna saat ini di komputer Anda. Jalankan perintah PowerShell berikut:

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My `
        -FilePath C:\mycertificates\mysfcluster20170531104310.pfx `
        -Password $certpwd

Anda sekarang siap untuk terhubung ke kluster aman Anda.

Modul PowerShell Service Fabric menyediakan banyak cmdlet untuk mengelola kluster, aplikasi, dan layanan Service Fabric. Gunakan cmdlet Connect-ServiceFabricCluster untuk menyambungkan ke kluster aman. Thumbprint SHA1 sertifikat dan detail titik akhir koneksi ditemukan dalam output dari langkah sebelumnya.

Jika sebelumnya Anda menyiapkan autentikasi klien Microsoft Entra, jalankan perintah berikut:

Connect-ServiceFabricCluster -ConnectionEndpoint mysfcluster123.southcentralus.cloudapp.azure.com:19000 `
        -KeepAliveIntervalInSec 10 `
        -AzureActiveDirectory `
        -ServerCertThumbprint C4C1E541AD512B8065280292A8BA6079C3F26F10

Jika Anda tidak menyiapkan autentikasi klien Microsoft Entra, jalankan perintah berikut:

Connect-ServiceFabricCluster -ConnectionEndpoint mysfcluster123.southcentralus.cloudapp.azure.com:19000 `
          -KeepAliveIntervalInSec 10 `
          -X509Credential -ServerCertThumbprint C4C1E541AD512B8065280292A8BA6079C3F26F10 `
          -FindType FindByThumbprint -FindValue C4C1E541AD512B8065280292A8BA6079C3F26F10 `
          -StoreLocation CurrentUser -StoreName My

Periksa apakah Anda tersambung dan bahwa kluster ini sehat dengan menggunakan cmdlet Get-ServiceFabricClusterHealth.

Get-ServiceFabricClusterHealth

Membersihkan sumber daya

Artikel lain dalam seri tutorial ini menggunakan kluster yang telah Anda buat. Jika Anda tidak segera beralih ke artikel berikutnya, Anda mungkin ingin menghapus kluster untuk menghindari biaya yang dikenakan.

Langkah berikutnya

Lanjutkan ke tutorial berikut untuk mempelajari cara menskalakan kluster Anda.

  • Membuat VNET di Azure menggunakan PowerShell
  • Membuat brankas kunci dan mengunggah sertifikat
  • Menyiapkan autentikasi Microsoft Entra
  • Mengonfigurasi koleksi diagnostik
  • Menyiapkan layanan EventStore
  • Menyiapkan log Azure Monitor
  • Membuat kluster Service Fabric yang aman di Azure PowerShell
  • Mengamankan kluster dengan sertifikat X.509
  • Menyambungkan ke kluster menggunakan Powershell
  • Menghapus kluster

Lanjutkan ke tutorial berikut untuk mempelajari cara menskalakan kluster Anda.