البدء السريع: إنشاء Azure Managed Instance لمجموعة Apache Cassandra باستخدام Azure CLI

Azure Managed Instance ل Apache Cassandra هو خدمة مدارة بالكامل لمجموعات Apache Cassandra مفتوحة المصدر النقية. تسمح الخدمة أيضا بتجاوز التكوينات، اعتمادا على الاحتياجات المحددة لكل حمل عمل، للحصول على أقصى قدر من المرونة والتحكم.

توضح هذه البداية السريعة كيفية استخدام أوامر Azure CLI لإنشاء عنقود يحتوي على Azure Managed Instance ل Apache Cassandra. كما يوضح كيفية إنشاء مركز بيانات وتوسيع نطاق العقد لأعلى أو لأسفل داخل مركز البيانات.

Prerequisites

  • استخدم شبكة افتراضية Azure مع اتصال ببيئتك المستضافة ذاتيا أو في الموقع. لمزيد من المعلومات حول كيفية ربط البيئات المحلية ب Azure، راجع Connect شبكة داخلية إلى Azure.
  • إذا لم يكن لديك اشتراك Azure، أنشئ حسابا مجاني قبل أن تبدأ.

Important

تتطلب هذه المقالة إصدار Azure CLI 2.30.0 أو أحدث. إذا كنت تستخدم Azure Cloud Shell، فإن الإصدار الأخير مثبت بالفعل.

إنشاء نظام مجموعة مثيل مدار

  1. سجل الدخول إلى بوابة Azure.

  2. قم بتعيين معرف اشتراكك في Azure CLI:

    az account set --subscription <Subscription_ID>
    
  3. إنشاء شبكة ظاهرية باستخدام شبكة فرعية مخصصة في مجموعة الموارد الخاصة بك:

    az network vnet create --name <VNet_Name> --location eastus2 \
      --resource-group <Resource_Group_Name> --subnet-name <Subnet Name>
    

    يتطلب نشر نسخة من Azure Managed Instance لأباتشي كاساندرا وصولا إلى الإنترنت. يفشل التثبيت في البيئات التي يكون فيها الوصول إلى الإنترنت مقيدًا. تأكد من أنك لا تحجب الوصول في شبكتك الافتراضية إلى الخدمات Azure التالية المطلوبة Azure Managed Instance ليعمل Apache Cassandra بشكل صحيح:

    • تخزين Azure
    • Azure Key Vault
    • مجموعات توسعة الأجهزة الظاهرية في Azure
    • Azure Monitor
    • Microsoft Entra ID
    • Microsoft Defender for Cloud
  4. تطبيق هذه الأذونات المحددة على الشبكة الظاهرية. يتطلب المثيل المدار ذلك. az role assignment create استخدم الأمر واستبدل <subscriptionID><resourceGroupName>و و <vnetName> بالقيم المناسبة:

    az role assignment create \
      --assignee a232010e-820c-4083-83bb-3ace5fc29d0b \
      --role 4d97b98b-1d4f-4787-a291-c67834d212e7 \
      --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/virtualNetworks/<vnetName>
    

    assignee القيمتان و role قيمتان ثابتتان. أدخل هذه القيم تماما كما هو مذكور في الأمر . يؤدي عدم القيام بذلك إلى حدوث أخطاء عند إنشاء نظام المجموعة. إذا واجهت أي أخطاء عند تشغيل هذا الأمر، فقد لا يكون لديك أذونات لتشغيله. تواصل مع مسؤول Azure الخاص بك للحصول على الأصوات.

  5. إنشاء نظام المجموعة في الشبكة الظاهرية التي تم إنشاؤها حديثا باستخدام الأمر az managed-cassandra cluster create . قم بتشغيل الأمر التالي بقيمة delegatedManagementSubnetId المتغير . (قيمة delegatedManagementSubnetId هي نفس اسم الشبكة الظاهرية التي تم تطبيق الأذونات لها.)

    resourceGroupName='<Resource_Group_Name>'
    clusterName='<Cluster_Name>'
    location='eastus2'
    delegatedManagementSubnetId='/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Network/virtualNetworks/<VNet name>/subnets/<subnet name>'
    initialCassandraAdminPassword='myPassword'
    cassandraVersion='5.0' # set to 4.0 for a Cassandra 4.0 cluster
    
    az managed-cassandra cluster create \
      --cluster-name $clusterName \
      --resource-group $resourceGroupName \
      --location $location \
      --delegated-management-subnet-id $delegatedManagementSubnetId \
      --initial-cassandra-admin-password $initialCassandraAdminPassword \
      --cassandra-version $cassandraVersion \
      --debug
    
  6. إنشاء مركز بيانات للمجموعة مع ثلاثة أجهزة ظاهرية (VMs). استخدم التكوين التالي:

    • حجم الجهاز الظاهري: E8s v5 قياسي
    • أقراص البيانات: يتم ربط أربعة أقراص P30 بكل جهاز افتراضي تم نشره. عند تحديد حجم التخزين، خطط لاستخدام مستمر أقصى يبلغ 50% لتوفير مساحة رأس كافية لاستخدام شواهد القبور والأقراص من قبل خدمات النظام. بالإضافة إلى ذلك، تستهلك النسخ الاحتياطية مساحة القرص المحلية مؤقتا قبل أن تبقى في تخزين Blob.

    بعد أن تكون جميع المعلومات في مكانها، استخدم الأمر az managed-cassandra datacenter create :

    dataCenterName='dc1'
    dataCenterLocation='eastus2'
    virtualMachineSKU='Standard_D8s_v4'
    noOfDisksPerNode=4
    
    az managed-cassandra datacenter create \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --data-center-name $dataCenterName \
      --data-center-location $dataCenterLocation \
      --delegated-subnet-id $delegatedManagementSubnetId \
      --node-count 3 \
      --sku $virtualMachineSKU \
      --disk-capacity $noOfDisksPerNode \
      --availability-zone false
    

    اختر قيمة --sku من أحجام الأجهزة الظاهرية المتوفرة التالية:

    • Standard_E8s_v5
    • Standard_E16s_v5
    • Standard_E20s_v5
    • Standard_E32s_v5

    بشكل افتراضي، يتم تعيين --availability-zone إلى false. لتمكين مناطق التوفر، قم بتعيينها إلى true. تساعد مناطق التوفر على زيادة توفر الخدمة. لمزيد من المعلومات، راجع اتفاقيات مستوى الخدمة ل خدمات الإنترنت.

    مناطق التوفر غير مدعومة في جميع مناطق Azure. تفشل عمليات النشر إذا حددت منطقة لا يتم فيها دعم مناطق التوفر. للمناطق المدعومة، راجع قائمة المناطق Azure .

    يخضع النشر الناجح لمناطق التوفر لتوفر موارد الحوسبة في جميع المناطق في المنطقة التي حددتها. تفشل عمليات النشر إذا لم يكن حجم الجهاز الظاهري الذي اخترته متوفرا في المنطقة التي حددتها.

  7. بعد إنشاء مركز البيانات، يمكنك تشغيل الأمر az managed-cassandra datacenter update لتوسيع نطاق نظام المجموعة أو توسيع نطاقه. غير قيمة المعلمة node-count إلى القيمة التي تريدها:

    resourceGroupName='<Resource_Group_Name>'
    clusterName='<Cluster Name>'
    dataCenterName='dc1'
    dataCenterLocation='eastus2'
    
    az managed-cassandra datacenter update \
      --resource-group $resourceGroupName \
      --cluster-name $clusterName \
      --data-center-name $dataCenterName \
      --node-count 9
    

تواصل مع مجموعتك

Azure Managed Instance Apache Cassandra لا ينشئ عقد بعناوين IP عامة. للاتصال بمجموعة Cassandra الجديدة، يجب إنشاء مورد آخر داخل نفس الشبكة الظاهرية. يمكن أن يكون هذا المورد تطبيقا أو جهازا ظاهريا مع Cassandra Query Language Shell (CQLSH) مثبتا. CQLSH هي أداة استعلام Apache مفتوحة المصدر.

يمكنك استخدام قالب Azure Resource Manager لنشر جهاز افتراضي لأوبونتو.

بسبب بعض المشاكل known مع إصدارات Python، نوصي باستخدام صورة أوبونتو 22.04 تأتي مع Python3.10.12 أو بيئة افتراضية Python لتشغيل CQLSH.

الاتصال من CQLSH

بعد نشر الجهاز الظاهري، استخدم Secure Shell للاتصال بالجهاز وتثبيت CQLSH. استخدم الأوامر التالية:

# Install default-jre and default-jdk
sudo apt update
sudo apt install openjdk-8-jdk openjdk-8-jre

تحقق من إصدارات Cassandra التي لا تزال مدعومة وحدد الإصدار الذي تحتاجه. نوصي باستخدام إصدار ثابت.

قم بتثبيت مكتبات Cassandra للحصول على CQLSH. اتبع الخطوات الرسمية من وثائق كاساندرا.

الاتصال من تطبيق

كما هو الحال مع CQLSH، عند استخدام أحد برامج تشغيل عميل Apache Cassandra المدعومة للاتصال من أحد التطبيقات، يجب تمكين تشفير بروتوكول أمان طبقة النقل/طبقة مآخذ التوصيل الآمنة (TLS/SSL) ويجب تعطيل التحقق من الشهادة. للحصول على عينات، انظر Java، .NET، Node.js، و Python.

نوصي بتعطيل التحقق من الشهادة لأنه لا يعمل إلا إذا قمت بتعيين عناوين IP لعقد نظام المجموعة إلى المجال المناسب. إذا كان نهج داخلي ينص على إجراء التحقق من شهادة TLS/SSL لأي تطبيق، أضف إدخالات مثل 10.0.1.5 host1.managedcassandra.cosmos.azure.com في ملف المضيفين لكل عقدة لتسهيل هذا الإعداد. إذا اتبعت هذا النهج، فستحتاج أيضا إلى إضافة إدخالات جديدة كلما قمت بتوسيع نطاق العقد.

بالنسبة Java، نوصي بتفعيل سياسة التنفيذ speculative plans حيث تكون التطبيقات حساسة لتأخير الذيل. للحصول على عرض توضيحي يوضح كيف يعمل هذا النهج ولمعرفة كيفية تفعيل السياسة، راجع تنفيذ سياسة التنفيذ المضاربي.

عادة لا تحتاج إلى تكوين شهادات (مثل rootCA، node، client، أو truststore) للاتصال ب Azure Managed Instance لأباتشي كاساندرا. يستخدم تشفير TLS/SSL مخزن الثقة الافتراضي وكلمة مرور وقت التشغيل التي اختارها العميل. للحصول على نموذج كود، انظر Java، .NET، Node.js، و Python). الشهادات موثوق بها بشكل افتراضي. إذا لم يكن الأمر كما هو، فستضيفها إلى مخزن الثقة.

تكوين شهادات العميل (اختياري)

تكوين شهادات العميل اختياري. يمكن لتطبيق العميل الاتصال ب Azure Managed Instance Apache Cassandra بعد اتباع الخطوات السابقة. إذا كنت تفضل ذلك، يمكنك أيضا إنشاء وتكوين شهادات العميل للمصادقة. بشكل عام، هناك طريقتان لإنشاء الشهادات:

  • الشهادات الموقعة ذاتيا: الشهادات الخاصة والعامة التي لا تحتوي على مرجع مصدق (CA) لكل عقدة. في هذه الحالة، جميع الشهادات العامة مطلوبة.
  • الشهادات الموقعة من قبل المرجع المصدق: الشهادات الصادرة عن مرجع مصدق موقع ذاتيا أو مرجع مصدق عام. لهذا الإعداد، تحتاج إلى شهادة المرجع المصدق الجذر وجميع الشهادات الوسيطة، إذا كان ذلك ممكنا. لمزيد من المعلومات، راجع إعداد شهادات SSL للإنتاج.

لتنفيذ مصادقة شهادات العميل إلى العقدة أو أمان طبقة النقل المتبادلة، قدم الشهادات باستخدام Azure CLI. الأمر التالي يرفع ويطبق شهادات العميل الخاصة بك على مخزن الثقة الخاص ب Azure Managed Instance عنقود Apache Cassandra. لا تحتاج إلى تعديل cassandra.yaml الإعدادات. بعد تطبيق الشهادات، يتطلب نظام المجموعة من Cassandra التحقق من الشهادات أثناء اتصالات العميل. لمزيد من المعلومات ، انظر require_client_auth: true في Cassandra client_encryption_options.

resourceGroupName='<Resource_Group_Name>'
clusterName='<Cluster Name>'

az managed-cassandra cluster update \
  --resource-group $resourceGroupName \
  --cluster-name $clusterName \
  --client-certificates /usr/csuser/clouddrive/rootCert.pem /usr/csuser/clouddrive/intermediateCert.pem

Troubleshooting

إذا واجهت خطأ عند تطبيق الأذونات على شبكتك الافتراضية باستخدام Azure CLI، يمكنك تطبيق نفس الإذن يدويا من بوابة Azure. مثال على مثل هذا الخطأ هو "لا يمكن العثور على المستخدم أو المحطة الرئيسية في قاعدة بيانات الرسوم البيانية ل e5007d2c-4b13-4a74-9b6a-605d99f03501." لمزيد من المعلومات، انظر استخدم بوابة Azure لإضافة Azure Cosmos DB مبدأ الخدمة.

يتم استخدام تعيين الدور في Azure Cosmos DB لأغراض النشر فقط. Azure Managed Instanced for Apache Cassandra ليس لديه dependencies back-end على Azure Cosmos DB.

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

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

az group delete --name <Resource_Group_Name>

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

في هذا البداية السريعة، تعلمت كيفية إنشاء Azure Managed Instance لمجموعة Apache Cassandra باستخدام Azure CLI. يمكنك الآن بدء العمل مع نظام المجموعة: