بداية سريعة: نشر حاويات Windows على نسيج الخدمة

Azure Service Fabric عبارة عن نظام أساسي للأنظمة الموزعة لنشر وإدارة خدمات وحاويات قابلة للتطوير وموثوق بها.

لا يتطلب تشغيل تطبيق موجود في حاوية Windows على مجموعة Service Fabric أي تغييرات على التطبيق الخاص بك. توضح لك هذه البداية السريعة كيفية نشر صورة حاوية Docker سابقة الإنشاء في تطبيق Service Fabric. عند الانتهاء، سيكون لديك خادم Windows Server Core 2016 وحاوية IIS قيد التشغيل. تصف هذه البداية السريعة نشر حاوية Windows. اقرأ هذه البداية السريعة لنشر حاوية Linux.

صفحة ويب IIS الافتراضية

ستتعلم في هذه البداية السريعة كيفية:

  • قم بتعبئة حاوية صورة Docker
  • تكوين الاتصال
  • بناء وحزم تطبيق نسيج الخدمة
  • انشر تطبيق الحاوية على Azure

ملاحظة

نوصي باستخدام وحدة Azure Az PowerShell للتفاعل مع Azure. راجع تثبيت Azure PowerShell للبدء. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

المتطلبات الأساسية

قم بتعبئة حاوية صورة Docker باستخدام Visual Studio

توفر مجموعة أدوات تطوير البرمجيات Service Fabric SDK وأدواتها قالب خدمة لمساعدتك في نشر حاوية إلى مجموعة Service Fabric.

بدء Visual Studio كـ "المسؤول". حدد ملف>مشروع>جديد.

حدد تطبيق Service Fabric، وأطلق عليه اسم "MyFirstContainer"، ثم انقر فوق إنشاء.

حدد حاوية من نماذج الحاويات والتطبيقات المستضافة.

في اسم الصورة، أدخل "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016"، وWindows Server Core Server وصورة قاعدة IIS.

قم بتكوين تعيين منفذ الحاوية إلى منفذ المضيف بحيث يتم تعيين الطلبات الواردة إلى الخدمة على المنفذ 80 إلى المنفذ 80 في الحاوية. عيّن Container Port على "80" واضبط Host Port على "80".

قم بتسمية خدمتك "MyContainerService"، وانقر فوق موافق.

مربع حوار خدمة جديدة

حدد إصدار نظام التشغيل لصورة الحاوية الخاصة بك

قد لا يتم تشغيل الحاويات التي تم إنشاؤها باستخدام إصدار معين من Windows Server على مضيف يقوم بتشغيل إصدار مختلف من Windows Server. على سبيل المثال، لا تعمل الحاويات التي تم إنشاؤها باستخدام الإصدار 1709 من Windows Server على الأجهزة المضيفة التي تعمل بنظام Windows Server 2016. لمعرفة المزيد، راجع نظام تشغيل Windows Server والتوافق مع نظام التشغيل المضيف .

باستخدام الإصدار 6.1 من وقت تشغيل Service Fabric والإصدارات الأحدث، يمكنك تحديد عدة صور لنظام التشغيل لكل حاوية ووضع علامة على كل منها بإصدار إنشاء نظام التشغيل الذي يجب نشره فيه. يساعد هذا في التأكد من أن التطبيق الخاص بك سيعمل عبر مضيفين يقومون بتشغيل إصدارات مختلفة من نظام التشغيل Windows. لمعرفة المزيد، راجع تحديد صور حاوية معينة لنظام التشغيل .

تنشر Microsoft صورًا مختلفة لإصدارات IIS المبنية على إصدارات مختلفة من Windows Server. للتأكد من أن Service Fabric تنشر حاوية متوافقة مع إصدار Windows Server الذي يتم تشغيله على عقد المجموعة حيث تنشر التطبيق الخاص بك، أضف الأسطر التالية إلى ملف ApplicationManifest.xml. إصدار البناء لـ Windows Server 2016 هو 14393 وإصدار البناء لـ Windows Server الإصدار 1709 هو 16299.

    <ContainerHostPolicies CodePackageRef="Code"> 
      <ImageOverrides> 
        ...
	      <Image Name="mcr.microsoft.com/windows/servercore/iis:windowsservercore-1803" /> 
          <Image Name= "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016" Os="14393" /> 
          <Image Name="mcr.microsoft.com/windows/servercore/iis:windowsservercore-1709" Os="16299" /> 
      </ImageOverrides> 
    </ContainerHostPolicies> 

يستمر بيان الخدمة في تحديد صورة واحدة فقط لخادم النانو، mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016.

أيضًا في ملف ApplicationManifest.xml، قم بتغيير PasswordEncrypted إلى خطأ. الحساب وكلمة المرور فارغان لصورة الحاوية العامة الموجودة على Docker Hub، لذلك قمنا بإيقاف التشفير لأن تشفير كلمة مرور فارغة سيؤدي إلى حدوث خطأ في الإنشاء.

<RepositoryCredentials AccountName="" Password="" PasswordEncrypted="false" />

إنشاء نظام مجموعة

يُنشئ البرنامج النصي التالي عينة مجموعة نسيج خدمة مكونة من خمس عقد مؤمنة بشهادة X.509. يقوم الأمر بإنشاء شهادة موقعة ذاتيًّا وتحميلها إلى مخزن مفاتيح جديد. يتم أيضًا نسخ الشهادة إلى دليل محلي. يمكنك معرفة المزيد حول إنشاء مجموعة باستخدام هذا البرنامج النصي في إنشاء مجموعة نسيج الخدمة .

إذا لزم الأمر، قم بتثبيت Azure PowerShell باستخدام الإرشادات الموجودة في دليل Azure PowerShell .

قبل تشغيل البرنامج النصي التالي، في PowerShell، قم بتشغيل Connect-AzAccount لإنشاء اتصال مع Azure.

انسخ البرنامج النصي التالي إلى الحافظة وافتح Windows PowerShell ISE. قم بلصق المحتويات في إطار Untitled1.ps1 الفارغ. ثم قدم قيمًا للمتغيرات في البرنامج النصي: subscriptionId و certpwd و certfolder و adminuser و adminpwd وما إلى ذلك. يجب أن يكون الدليل الذي تحدده لـ certfolder موجودًا قبل تشغيل البرنامج النصي.

#Provide the subscription Id
$subscriptionId = 'yourSubscriptionId'

# Certificate variables.
$certpwd="Password#1234" | ConvertTo-SecureString -AsPlainText -Force
$certfolder="c:\mycertificates\"

# Variables for VM admin.
$adminuser="vmadmin"
$adminpwd="Password#1234" | ConvertTo-SecureString -AsPlainText -Force 

# Variables for common values
$clusterloc="SouthCentralUS"
$clustername = "mysfcluster"
$groupname="mysfclustergroup"       
$vmsku = "Standard_D2_v2"
$vaultname = "mykeyvault"
$subname="$clustername.$clusterloc.cloudapp.azure.com"

# Set the number of cluster nodes. Possible values: 1, 3-99
$clustersize=5 

# Set the context to the subscription Id where the cluster will be created
Select-AzSubscription -SubscriptionId $subscriptionId

# Create the Service Fabric cluster.
New-AzServiceFabricCluster -Name $clustername -ResourceGroupName $groupname -Location $clusterloc `
-ClusterSize $clustersize -VmUserName $adminuser -VmPassword $adminpwd -CertificateSubjectName $subname `
-CertificatePassword $certpwd -CertificateOutputFolder $certfolder `
-OS WindowsServer2016DatacenterwithContainers -VmSku $vmsku -KeyVaultName $vaultname

بمجرد تقديم القيم الخاصة بك للمتغيرات، اضغط على F5 لتشغيل البرنامج النصي.

بعد تشغيل البرنامج النصي وإنشاء المجموعة، ابحث عن ClusterEndpoint في الإخراج. على سبيل المثال:

...
ClusterEndpoint : https://southcentralus.servicefabric.azure.com/runtime/clusters/b76e757d-0b97-4037-a184-9046a7c818c0

قم بتثبيت الشهادة الخاصة بالمجموعة

سنقوم الآن بتثبيت PFX في مخزن شهادات CurrentUser \ My. سيكون ملف PFX في الدليل الذي حددته باستخدام متغير البيئة certfolder في برنامج PowerShell النصي أعلاه.

غيّر إلى هذا الدليل، ثم قم بتشغيل أمر PowerShell التالي، واستبدل اسم ملف PFX الموجود في الدليل certfolder وكلمة المرور التي حددتها في المتغير certpwd. في هذا المثال، تم تعيين الدليل الحالي على الدليل المحدد بواسطة المتغير certfolder في البرنامج النصي PowerShell. من هناك Import-PfxCertificate يتم تشغيل الأمر:

PS C:\mycertificates> Import-PfxCertificate -FilePath .\mysfclustergroup20190130193456.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString Password#1234 -AsPlainText -Force)

يقوم الأمر بإرجاع البصمة:

  ...
  PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My

Thumbprint                                Subject
----------                                -------
0AC30A2FA770BEF566226CFCF75A6515D73FC686  CN=mysfcluster.SouthCentralUS.cloudapp.azure.com

تذكر قيمة بصمة الإبهام للخطوة التالية.

انشر التطبيق على Azure باستخدام Visual Studio

الآن وبعد أن أصبح التطبيق جاهزًا، يمكنك نشره على مجموعة مباشرة من Visual Studio.

انقر بزر الماوس الأيمن فوق MyFirstContainer في مستكشف الحلول واختر نشر. يظهر مربع الحوار نشر Publish.

انسخ المحتوى التالي CN = في نافذة PowerShell عندما قمت بتشغيل الأمر Import-PfxCertificate أعلاه، وقم بإضافة منفذ 19000 إليه. على سبيل المثال، ⁧mysfcluster.SouthCentralUS.cloudapp.azure.com:19000⁩. انسخه في حقل نقطة نهاية الاتصال. تذكر هذه القيمة لأنك ستحتاج إليها في خطوة مستقبلية.

انقر فوق معلمات الاتصال المتقدمة وتحقق من معلومات معلمة الاتصال. يجب أن تتطابق قيم FindValue و ServerCertThumbprint مع بصمة الشهادة المثبتة عند تشغيلك Import-PfxCertificate في الخطوة السابقة.

نشر الحوار

انقر على نشر.

يجب أن يكون لكل تطبيق في الكتلة اسم فريد. إذا كان هناك تعارض في الأسماء، فقم بإعادة تسمية مشروع Visual Studio ونشره مرة أخرى.

افتح متصفحًا وانتقل إلى العنوان الذي أدخلته في حقل نقطة نهاية الاتصال في الخطوة السابقة. يمكنك اختياريًّا إلحاق معرف النظام، http://، وإلحاق المنفذ، :80، بعنوان URL. على سبيل المثال، http://mysfcluster.SouthCentralUS.cloudapp.azure.com:80.

يجب أن تشاهد صفحة الويب الافتراضية لـ IIS: صفحة الويب الافتراضية لـ IIS

تنظيف

تستمر في تحمل الرسوم أثناء تشغيل المجموعة. ضع في الاعتبار حذف المجموعة الخاصة بك .

الخطوات التالية

في هذه البداية السريعة، تعلمت كيفية:

  • قم بتعبئة حاوية صورة Docker
  • تكوين الاتصال
  • بناء وحزم تطبيق نسيج الخدمة
  • انشر تطبيق الحاوية على Azure

لمعرفة المزيد حول العمل مع حاويات Windows في Service Fabric، تابع إلى البرنامج التعليمي لتطبيقات حاوية Windows.