مشاركة عبر


إنشاء ارتباط خاص وإدارته لقاعدة بيانات Azure ل MySQL - خادم مرن باستخدام Azure CLI

في هذه المقالة، ستتعلم كيفية استخدام Azure CLI لإنشاء نقطة نهاية خاصة للوصول إلى قاعدة بيانات Azure لخادم MySQL المرن من جهاز ظاهري في VNet.

إطلاق Azure Cloud Shell

Azure Cloud Shell هو عبارة عن غلاف تفاعلي مجاني يمكنك استخدامه لتنفيذ الخطوات الواردة في هذه المقالة. يحتوي على أدوات Azure القياسية المثبتة مسبقا والمكونة للاستخدام مع حسابك.

لفتح Cloud Shell، حدد Try it من الزاوية اليمنى العليا لقالب التعليمات البرمجية. يمكنك أيضًا تشغيل Cloud Shell في علامة تبويب متصفح منفصلة من خلال الانتقال إلى https://shell.azure.com/bash. حدد "نسخ" لنسخ مجموعات التعليمات البرمجية، والصقها في "Cloud Shell"، ثم حدد "إدخال" لتشغيلها.

إذا كنت تفضل تثبيت CLI واستخدامه محليًا، فإن هذا البدء السريع يتطلب Azure CLI الإصدار 2.0 أو إصدارًا أحدث. قم بتشغيل az --version للعثور على الإصدار. راجع تثبيت Azure CLI إذا كنت بحاجة إلى التثبيت أو الترقية.

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

يجب عليك تسجيل الدخول إلى حسابك باستخدام الأمر az login . لاحظ خاصية معرف، الذي يشير إلى معرف الاشتراك لحساب Azure الخاص بك.

az login

حدد معرف اشتراك معينًا ضمن حسابك باستخدام الأمر az account set. في الأمر ، لاحظ قيمة المعرف من إخراج تسجيل الدخول az لاستخدامها كقيمة كوسيطة الاشتراك . في حال وجود اشتراكات متعددة، فيمكن اختيار الاشتراك المناسب الذي يجب أن يتم فيه فوترة المورد. استخدم قائمة حسابات az للحصول على جميع اشتراكاتك.

az account set --subscription <subscription id>

إنشاء مجموعة موارد

قبل إنشاء أي مورد، يجب إنشاء مجموعة موارد لاستضافة الشبكة الظاهرية. أنشئ مجموعة موارد باستخدام إنشاء مجموعة az. ينشأ هذا المثال مجموعة موارد تسمى myResourceGroup في موقع westeurope:

az group create --name myResourceGroup --location westeurope

إنشاء شبكة ظاهرية.

قم بإنشاء شبكة ظاهرية باستخدام az network vnet create. ينشأ هذا المثال شبكة ظاهرية افتراضية باسم myVirtualNetwork وشبكة فرعية واحدة باسمmySubnet:

az network vnet create \
 --name myVirtualNetwork \
 --resource-group myResourceGroup \
 --subnet-name mySubnet

تعطيل نهج نقطة النهاية الخاصة بالشبكة الفرعية

يوزع Azure الموارد للشبكة الفرعية من خلال الشبكة الظاهرية؛ لذلك تحتاج إلى إنشاء الشبكة الفرعية أو تحديثها لتعطيل سياسات شبكة نقطة النهاية الخاصة. قم بتحديث تكوين الشبكة الفرعية المسمى mySubnet مع تحديث الشبكة الفرعية لشبكة az network vnet:

az network vnet subnet update \
 --name mySubnet \
 --resource-group myResourceGroup \
 --vnet-name myVirtualNetwork \
 --disable-private-endpoint-network-policies true

إنشاء جهاز ظاهري

إنشاء جهاز ظاهري باستخدام az vm create. عند المطالبة، يجب تقديم كلمة مرور لاستخدامها على أنها بيانات اعتماد للجهاز الظاهري. ينشأ هذا المثال جهازًا ظاهريًا باسم myVM1:

az vm create \
  --resource-group myResourceGroup \
  --name myVm \
  --image Win2019Datacenter

إشعار

سجل عنوان IP العام للجهاز الظاهري كما هو مطلوب للاتصال من الإنترنت في الخطوة التالية.

إنشاء مثيل Azure Database for MySQL Flexible Server مع وصول عام في مجموعة الموارد

إنشاء قاعدة بيانات Azure لمثيل خادم MySQL المرن مع وصول عام وإضافة عنوان IP للعميل للوصول إليه.

az mysql flexible-server create \
  --name mydemoserver \
  --resource-group myResourcegroup \
  --location westeurope \
  --admin-user mylogin \
  --admin-password <server_admin_password> \
  --public-access <my_client_ip>

إشعار

في بعض الحالات، يكون مثيل Azure Database for MySQL Flexible Server والشبكة الفرعية VNet في اشتراكات مختلفة. في هذه الحالات، يجب عليك التأكد من التكوينات التالية:

  • تأكد من تسجيل موفر موارد Microsoft.DBforMySQL/flexibleServer لكلا الاشتراكين. لمزيد من المعلومات، راجع تسجيل resource-manager.

قم بإنشاء نقطة النهاية الخاصة

إنشاء نقطة نهاية خاصة لقاعدة بيانات Azure لخادم MySQL المرن في شبكتك الظاهرية:

az network private-endpoint create \
    --name myPrivateEndpoint \
    --resource-group myResourceGroup \
    --vnet-name myVirtualNetwork  \
    --subnet mySubnet \
    --private-connection-resource-id $(az resource show -g myResourcegroup -n mydemoserver --resource-type "Microsoft.DBforMySQL/flexibleServers" --query "id" -o tsv) \
    --group-id mysqlServer \
    --connection-name myConnection \
    --location location

تكوين منطقة DNS الخاصة

إنشاء منطقة DNS خاصة لمجال Azure Database for MySQL Flexible Server وإنشاء ارتباط اقتران مع الشبكة الظاهرية.

az network private-dns zone create --resource-group myResourceGroup \
   --name  "privatelink.mysql.database.azure.com"
az network private-dns link vnet create --resource-group myResourceGroup \
   --zone-name  "privatelink.mysql.database.azure.com"\
   --name MyDNSLink \
   --virtual-network myVirtualNetwork \
   --registration-enabled false

# Query for the network interface ID
$networkInterfaceId=$(az network private-endpoint show --name myPrivateEndpoint --resource-group myResourceGroup --query 'networkInterfaces[0].id' -o tsv)

az resource show --ids $networkInterfaceId --api-version 2019-04-01 -o json
# Copy the content for privateIPAddress and FQDN matching the MySQL flexible server name

# Create DNS records
az network private-dns record-set a create --name myserver --zone-name privatelink.mysql.database.azure.com --resource-group myResourceGroup
az network private-dns record-set a add-record --record-set-name myserver --zone-name privatelink.mysql.database.azure.com --resource-group myResourceGroup -a <Private IP Address>

إشعار

لا يحل FQDN في إعداد DNS الخاص بالعميل عنوان IP الخاص الذي تم تكوينه. يجب إعداد منطقة DNS ل FQDN المكون كما هو موضحهنا.

الاتصال بجهاز افتراضي من الإنترنت

اتصل بـVM myVm من الإنترنت على النحو التالي:

  1. في شريط بحث مدخل Azure، أدخِل myVm.

  2. حدد الزر توصيل. بعد تحديد زر Connect، يتم فتح الاتصال إلى الجهاز الظاهري.

  3. حدد Download RDP File. يعمل "Azure" على إنشاء ملف "Remote Desktop Protocol" (.rdp)وتنزيله إلى الكمبيوتر.

  4. افتح الملف downloaded.rdp.

    1. إذا تمت المطالبة، فحدد Connect.

. أدخل اسم المستخدم ورمز الوصول اللذين حددتهما عند إنشاء الجهاز الظاهري. > [ملاحظة!]
> قد تحتاج إلى تحديد المزيد من الخيارات استخدم حسابا مختلفا، لتحديد بيانات الاعتماد التي أدخلتها عند إنشاء الجهاز الظاهري.

  1. حدد موافق.

  2. قد تتلقى تحذيرًا بشأن الشهادة أثناء عملية تسجيل الدخول. حدد نعم أو متابعة إذا تلقيت تحذير شهادة.

  3. بمجرد ظهور سطح مكتب الجهاز الظاهري، قم بتقليصه للعودة إلى سطح المكتب المحلي.

الوصول إلى مثيل Azure Database for MySQL Flexible Server بشكل خاص من الجهاز الظاهري

  1. في سطح المكتب البعيد الخاص بـ myVM، افتح PowerShell.

  2. أدخل nslookup mydemomysqlserver.privatelink.mysql.database.azure.com.

    ستتلقى رسالة مشابهة لهذه النتائج:

    Server:  UnKnown
    Address:  168.63.129.16
    Non-authoritative answer:
    Name:    mydemomysqlserver.privatelink.mysql.database.azure.com
    Address:  10.1.3.4
    
  3. اختبر اتصال الارتباط الخاص لمثيل Azure Database for MySQL Flexible Server باستخدام أي عميل متوفر. يستخدم المثال التالي MySQL Workbench للقيام بالعملية.

  4. في الاتصال الجديد، قم بإدخال أو تحديد هذه المعلومات:

    الإعداد القيمة‬
    اسم الاتصال حدد اسم الاتصال من اختيارك.
    اسم المضيف حدد mydemoserver.privatelink.mysql.database.azure.com
    اسم مستخدم أدخل اسم المستخدم كما username@servername المقدمة أثناء إنشاء مثيل Azure Database for MySQL Flexible Server.
    كلمة المرور أدخل كلمة مرور تم توفيرها أثناء إنشاء مثيل Azure Database for MySQL Flexible Server.
  5. حدد اتصال.

  6. تصفح قواعد البيانات من القائمة اليسرى.

  7. (اختياريا) إنشاء معلومات أو الاستعلام عن معلومات من قاعدة بيانات Azure لخادم MySQL المرن.

  8. أغلق اتصال سطح المكتب البعيد بالجهاز الظاهري myVM.

تنظيف الموارد

عند عدم الحاجة إليها، يمكنك استخدام az group delete لإزالة مجموعة الموارد وجميع الموارد التي لديها:

az group delete --name myResourceGroup --yes

سرد الموارد الفرعية الخاصة القابلة للربط (groupIds)

az network private-link-resource list --id {PrivateLinkResourceID}  // or -g MyResourceGroup -n MySA --type Microsoft.Storage/storageAccounts

سرد اتصالات نقطة النهاية الخاصة على مورد معين

az network private-endpoint-connection list --id {PrivateLinkResourceID}

الموافقة على اتصالات نقطة النهاية الخاصة على مورد معين

az network private-endpoint-connection approve --id {PrivateEndpointConnectionID}  --description "Approved!"

رفض اتصالات نقطة النهاية الخاصة على مورد معين

az network private-endpoint-connection reject --id {PrivateEndpointConnectionID}  --description "Rejected!"

حذف اتصالات نقطة النهاية الخاصة على مورد معين

az network private-endpoint-connection delete --id {PrivateEndpointConnectionID}