البرنامج التعليمي: نشر تطبيق Java على مجموعة نسيج الخدمة في Azure

هذا البرنامج التعليمي هو الجزء الثالث من سلسلة ويوضح لك كيفية نشر تطبيق Service Fabric إلى نظام مجموعة في Azure.

في الجزء الثالث من السلسلة، تعلم كيفية:

  • أنشئ مجموعة Linux آمنة في Azure
  • نشر تطبيق إلى نظام مجموعة

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

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

قبل أن تبدأ هذا البرنامج التعليمي:

قم بإنشاء مجموعة نسيج الخدمة في Azure

تُنشئ الخطوات التالية الموارد اللازمة المطلوبة لنشر تطبيقك في مجموعة Service Fabric. بالإضافة إلى ذلك، يتم إعداد الموارد اللازمة لمراقبة صحة الحل الخاص بك باستخدام مكدس ELK (Elasticsearch وLogstash وKibana). على وجه التحديد، يتم استخدام مراكز الأحداث Event Hubs كمستودع للسجلات من Service Fabric. تم تكوينه لإرسال السجلات من مجموعة نسيج الخدمة إلى مثيل Logstash الخاص بك.

  1. افتح محطة طرفية وقم بتنزيل الحزمة التالية التي تحتوي على البرامج النصية المساعدة والقوالب اللازمة لإنشاء الموارد في Azure

    git clone https://github.com/Azure-Samples/service-fabric-java-quickstart.git
    
  2. قم بتسجيل الدخول إلى حساب Azure الخاص بك

    az login
    
  3. قم بتعيين اشتراك Azure الذي تريد استخدامه لإنشاء الموارد

    az account set --subscription [SUBSCRIPTION-ID]
    
  4. من المجلد service-fabric-java-quickstart/AzureCluster، قم بتشغيل الأمر التالي لإنشاء شهادة مجموعة في Key Vault. تُستخدم هذه الشهادة لتأمين مجموعة Service Fabric الخاصة بك. قم بتوفير المنطقة (يجب أن تكون هي نفسها مثل مجموعة نسيج الخدمة)، واسم مجموعة موارد مخزن المفاتيح، واسم مخزن المفاتيح، وكلمة مرور الشهادة، واسم DNS للمجموعة.

    ./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'
    

    يُرجع الأمر السابق المعلومات التالية التي يجب تدوينها لاستخدامها لاحقاً.

    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>
    
  5. قم بإنشاء مجموعة موارد لحساب التخزين الذي يخزن سجلاتك

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name teststorageaccountrg
    
  6. قم بإنشاء حساب تخزين سيُستخدم لتخزين السجلات التي سيتم إنتاجها

    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
    
  7. قم بالوصول إلى مدخل Microsoft Azure وانتقل إلى علامة التبويب Shared Access Signature لحساب التخزين الخاص بك. قم بإنشاء الرمز المميز لـ SAS على النحو التالي.

    Generate SAS for Storage

  8. انسخ عنوان URL الخاص بحساب SAS وضعه جانباً لاستخدامه عند إنشاء مجموعة Service Fabric. إنه يشبه عنوان URL التالي:

    ?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
    
  9. أنشئ مجموعة موارد تحتوي على موارد Event Hub. يتم استخدام مراكز الأحداث لإرسال رسائل من Service Fabric إلى الخادم الذي يقوم بتشغيل موارد ELK.

    az group create --location [REGION] --name [RESOURCE-GROUP-NAME]
    
    Example: az group create --location westus --name testeventhubsrg
    
  10. أنشئ مورد مراكز الأحداث باستخدام الأمر التالي. اتبع المطالبات لإدخال تفاصيل مساحة الاسم، وeventHubName، وConsumerGroupName، وsendAuthorizationRule، وReceiverAuthorizationRule.

    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
    

    انسخ محتويات الحقل output في إخراج JSON للأمر السابق. يتم استخدام معلومات المرسل عند إنشاء مجموعة نسيج الخدمة. يجب حفظ اسم ومفتاح جهاز الاستقبال للاستخدام في البرنامج التعليمي التالي عندما يتم تكوين خدمة Logstash لتلقي الرسائل من Event Hub. blob التالي هو مثال لإخراج 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"
        }
    }
    
  11. قم بتشغيل البرنامج النصي eventhubssastoken.py لإنشاء عنوان URL لـ SAS لمورد EventHubs الذي أنشأته. يتم استخدام عنوان URL لـ SAS بواسطة مجموعة نسيج الخدمة لإرسال السجلات إلى مراكز الأحداث. نتيجة لذلك، يتم استخدام سياسة المرسل لإنشاء عنوان URL. يقوم البرنامج النصي بإرجاع عنوان URL لـ SAS لمورد مراكز الأحداث المستخدم في الخطوة التالية:

    python3 eventhubssastoken.py 'testeventhubs' 'testeventhubs' 'sender' '[PRIMARY-KEY]'
    

    تم إرجاع قيمة الحقل sr في JSON. قيمة الحقل sr هي رمز SAS المميز لـ EventHubs. يعد عنوان URL التالي مثالاً للحقل sr:

    https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender
    

    يتبع عنوان URL الخاص بـ SAS الخاص بـ EventHubs البنية: https://<namespacename>.servicebus.windows.net/<eventhubsname>?sr=<sastoken>. على سبيل المثال، https://testeventhubnamespace.servicebus.windows.net/testeventhub?sr=https%3A%2F%testeventhub.servicebus.windows.net%testeventhub&sig=7AlFYnbvEm%2Bat8ALi54JqHU4i6imoFxkjKHS0zI8z8I%3D&se=1517354876&skn=sender

  12. افتح الملف sfdeploy.parameters.json واستبدل المحتويات التالية من الخطوات السابقة. تمت الإشارة إلى [SAS-URL-STORAGE-ACCOUNT] في الخطوة 8. تمت الإشارة إلى [SAS-URL-EVENT-HUBS] في الخطوة 11.

    "applicationDiagnosticsStorageAccountName": {
        "value": "teststorageaccount"
    },
    "applicationDiagnosticsStorageAccountSasToken": {
        "value": "[SAS-URL-STORAGE-ACCOUNT]"
    },
    "loggingEventHubSAS": {
        "value": "[SAS-URL-EVENT-HUBS]"
    }
    
  13. يفتح sfdeploy.parameters.json. قم بتغيير المعلمات التالية ثم احفظ الملف.

    • اسم نظام مجموعة. استخدم فقط الأحرف الصغيرة والأرقام.
    • adminUserName (إلى قيمة غير فارغة)
    • adminPassword (لقيمة أخرى غير فارغة)
  14. قم بتشغيل الأمر التالي لإنشاء مجموعة نسيج الخدمة

    az sf cluster create --location 'westus' --resource-group 'testlinux' --template-file sfdeploy.json --parameter-file sfdeploy.parameters.json --secret-identifier <certificate_url_from_step4>
    

نشر التطبيق الخاص بك إلى نظام مجموعة

  1. قبل نشر تطبيقك، تحتاج إلى إضافة المقتطف التالي إلى ملف Voting/VotingApplication /ApplicationManifest.xml. الحقل X509FindValue هو بصمة الإبهام التي تم إرجاعها من الخطوة 4 من قسم Create a Service Fabric cluster in Azure. تم تضمين هذا المقتطف ضمن حقل ApplicationManifest (الحقل الجذر).

    <Certificates>
          <SecretsCertificate X509FindType="FindByThumbprint" X509FindValue="[CERTIFICATE-THUMBPRINT]" />
    </Certificates>
    
  2. لنشر التطبيق الخاص بك إلى هذه نظام مجموعة، يجب عليك استخدام SFCTL لتأسيس اتصال بنظام مجموعة. يتطلب SFCTL ملف PEM مع كل من المفتاح العام والخاص للاتصال بالمجموعة. قم بتشغيل الأمر التالي لإنتاج ملف PEM باستخدام المفتاح العام والخاص.

    openssl pkcs12 -in <clustername>.<region>.cloudapp.azure.com.pfx -out sfctlconnection.pem -nodes -passin pass:<password>
    
  3. قم بتشغيل الأمر التالي للاتصال بالمجموعة.

    sfctl cluster select --endpoint https://<clustername>.<region>.cloudapp.azure.com:19080 --pem sfctlconnection.pem --no-verify
    
  4. لنشر التطبيق الخاص بك، انتقل إلى المجلد Voting/Scripts وقم بتشغيل البرنامج النصي install.sh.

    ./install.sh
    
  5. للوصول إلى Service Fabric Explorer، افتح متصفحك المفضل واكتب https://testlinuxcluster.westus.cloudapp.azure.com:19080. اختر الشهادة من مخزن الشهادات التي تريد استخدامها للاتصال بنقطة النهاية هذه. إذا كنت تستخدم جهاز Linux، فيجب استيراد الشهادات التي تم إنشاؤها بواسطة البرنامج النصي new-service-fabric-cluster-certificate.sh إلى Chrome لعرض Service Fabric Explorer. إذا كنت تستخدم جهاز Mac، فيجب عليك تثبيت ملف PFX في Keychain الخاص بك. لعلك لاحظت أن التطبيق الخاص بك قد تم تثبيته على نظام مجموعة.

    SFX Java Azure

  6. للوصول إلى التطبيق الخاص بك، اكتب https://testlinuxcluster.westus.cloudapp.azure.com:8080

    Voting App Java Azure

  7. لإلغاء تثبيت التطبيق الخاص بك من المجموعة، قم بتشغيل البرنامج النصي uninstall.sh في مجلد Scripts

    ./uninstall.sh
    

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

في هذا البرنامج التعليمي، نتعلم طريقة القيام بما يأتي:

  • أنشئ مجموعة Linux آمنة في Azure
  • إنشاء الموارد اللازمة للرصد مع ELK

تقدم إلى البرنامج التعليمي الآتي: