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

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

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

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

هام

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

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

  1. سجِّل الدخول إلى مدخل Azure

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

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

    az network vnet create -n <VNet_Name> -l eastus2 -g <Resource_Group_Name> --subnet-name <Subnet Name>
    

    إشعار

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

    • تخزين Azure
    • Azure KeyVault
    • مجموعات توسعة الأجهزة الظاهرية في Azure
    • مراقبة Azure
    • معرِّف Microsoft Entra
    • أمان Azure
  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 في الأمر السابق قيم ثابتة، أدخل هذه القيم تماما كما هو مذكور في الأمر . سيؤدي عدم القيام بذلك إلى أخطاء عند إنشاء المجموعة. إذا واجهت أي أخطاء عند تنفيذ هذا الأمر، فقد لا يكون لديك أذونات لتشغيله، ويُرجى التواصل مع المسؤول للحصول على أذونات.

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

    إشعار

    قيمة المتغير delegatedManagementSubnetId الذي سوف توفر أدناه هو بالضبط نفس قيمة --scope التي قمت بتوفيرها في الأمر أعلاه:

    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='3.11' # 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. وأخيرا، قم بإنشاء مركز بيانات للمجموعة، مع ثلاث عقد، Standard D8s v4 VM SKU، مع 4 أقراص P30 مرفقة لكل عقدة، باستخدام الأمر 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 وحدات SKU المتوفرة التالية:

    • Standard_E8s_v4
    • Standard_E16s_v4
    • Standard_E20s_v4
    • Standard_E32s_v4
    • Standard_DS13_v2
    • Standard_DS14_v2
    • Standard_D8s_v4
    • Standard_D16s_v4
    • Standard_D32s_v4

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

    تحذير

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

  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 التي تم إنشاؤها حديثًا، يجب عليك إنشاء مورد آخر داخل الشبكة الظاهرية. يمكن أن يكون هذا المورد تطبيقا أو جهازا ظاهريا مع تثبيت CQLSH لأداة الاستعلام مفتوحة المصدر من Apache. يمكنك استخدام قالب Resource Manager لنشر جهاز ظاهري Ubuntu.

الاتصال من CQLSH

بعد نشر الجهاز الظاهري، استخدم SSH للاتصال بالجهاش وتثبيت CQLSH كما هو موضح في الأوامر التالية:

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

# Install the Cassandra libraries in order to get CQLSH:
echo "deb http://archive.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
sudo apt-get update
sudo apt-get install cassandra

# Export the SSL variables:
export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false

# Connect to CQLSH (replace <IP> with the private IP addresses of a node in your Datacenter):
host=("<IP>")
initial_admin_password="Password provided when creating the cluster"
cqlsh $host 9042 -u cassandra -p $initial_admin_password --ssl

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

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

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

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

إشعار

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

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

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

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

إذا كنت ترغب في تنفيذ مصادقة شهادة العميل إلى العقدة أو أمان طبقة النقل المتبادل (mTLS)، فأنت بحاجة إلى توفير الشهادات عبر Azure CLI. سيقوم الأمر أدناه بتحميل شهادات العميل وتطبيقها على مخزن الثقة لمجموعة Cassandra Managed Instance (أي أنك لا تحتاج إلى تحرير 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

استكشاف الأخطاء وإصلاحها

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

إشعار

يتم استخدام تعيين دور Azure Cosmos DB لأغراض التثبيت فقط. لا يشتمل المثيل المدار بـ Azure لـ Apache Cassandra على تبعيات خلفية على Azure Cosmos DB.

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

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

az group delete --name <Resource_Group_Name>

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

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