🚀 جرب Zilliz Cloud، الـ Milvus المدارة بالكامل، مجاناً — تجربة أداء أسرع بـ 10 أضعاف! جرب الآن>>

milvus-logo
LFAI
الصفحة الرئيسية
  • دليل الإدارة

إعداد موازن تحميل من الطبقة 7 لميلفوس على GCP

عند مقارنته بموازن التحميل من الطبقة 4، فإن موازن التحميل من الطبقة 7 يوفر موازنة تحميل ذكية وإمكانيات تخزين مؤقت، وهو خيار رائع للخدمات السحابية الأصلية.

يرشدك هذا الدليل إلى كيفية إعداد موازن تحميل من الطبقة 7 لمجموعة Milvus التي تعمل بالفعل خلف موازن تحميل من الطبقة 4.

قبل البدء

تعديل تكوينات Milvus

يفترض هذا الدليل أنك قمت بالفعل بنشر مجموعة Milvus خلف موازن تحميل من الطبقة 4 على GCP.

قبل إعداد موازن تحميل من الطبقة السابعة لمجموعة Milvus العنقودية هذه، قم بتشغيل الأمر التالي لإزالة موازن تحميل الطبقة الرابعة.

helm upgrade my-release milvus/milvus --set service.type=ClusterIP

كخدمة خلفية لموازن تحميل الطبقة 7، يجب على Milvus تلبية متطلبات تشفير معينة حتى يتمكن من فهم طلبات HTTP/2 من موازن التحميل. لذلك، تحتاج إلى تمكين TLS على مجموعة Milvus الخاصة بك على النحو التالي.

helm upgrade my-release milvus/milvus -f tls.yaml

محتوى tls.yaml

extraConfigFiles:
  user.yaml: |+
    common:
      security:
        tlsMode: 1

إعداد نقطة نهاية التحقق من الصحة

لضمان توافر الخدمة، تتطلب موازنة التحميل من الطبقة السابعة على GCP فحص الظروف الصحية للخدمة الخلفية. لذلك، نحن بحاجة إلى إعداد BackendConfig لتغليف نقطة نهاية التحقق من الصحة وربط BackendConfig بخدمة Milvus من خلال التعليقات التوضيحية.

المقتطف التالي هو إعدادات BackendConfig. احفظه بصيغة backendconfig.yaml لاستخدامه لاحقًا.

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: my-release-backendconfig
  namespace: default
spec:
  healthCheck:
    port: 9091
    requestPath: /healthz
    type: HTTP

ثم قم بتشغيل الأمر التالي لإنشاء نقطة نهاية التحقق من الصحة.

kubectl apply -f backendconfig.yaml

أخيرًا، قم بتحديث التعليقات التوضيحية لخدمة Milvus لتطلب من موازن تحميل الطبقة السابعة الذي سننشئه لاحقًا إجراء فحوصات الصحة باستخدام نقطة النهاية التي تم إنشاؤها للتو.

kubectl annotate service my-release-milvus \
    cloud.google.com/app-protocols='{"milvus":"HTTP2"}' \
    cloud.google.com/backend-config='{"default": "my-release-backendconfig"}' \
    cloud.google.com/neg='{"ingress": true}' --overwrite
  • بالنسبة للتعليق التوضيحي الأول,

    فإن Milvus أصلي ل gRPC، وهو مبني على HTTP/2. لذلك، يمكننا استخدام HTTP/2 كبروتوكول اتصال بين موازن تحميل الطبقة السابعة وميلفوس.

  • أما بالنسبة للتعليق التوضيحي الثاني,

    يقدم Milvus نقطة نهاية التحقق من الصحة فقط عبر gRPC و HTTP/1. نحتاج إلى إعداد BackendConfig لتغليف نقطة نهاية التحقق من الصحة وربطها بخدمة Milvus بحيث يقوم موازن تحميل الطبقة السابعة باستكشاف نقطة النهاية هذه لمعرفة الحالة الصحية ل Milvus.

  • أما بالنسبة للتعليق التوضيحي الثالث,

    فهو يطلب إنشاء مجموعة نقطة نهاية الشبكة (NEG) بعد إنشاء نقطة نهاية الشبكة (Ingress). عند استخدام NEGs مع GKE Ingress، تسهل وحدة التحكم في الدخول إنشاء جميع جوانب موازن التحميل. يتضمن ذلك إنشاء عنوان IP الافتراضي، وقواعد إعادة التوجيه، والتحقق من الصحة، وقواعد جدار الحماية، والمزيد. لمزيد من التفاصيل، راجع مستندات Google Cloud.

إعداد شهادات TLS

يتطلب TLS شهادات للعمل. هناك طريقتان لإنشاء الشهادات، وهما المدارة ذاتيًا والمدارة من Google.

يستخدم هذا الدليل my-release.milvus.io كاسم مجال للوصول إلى خدمة Milvus.

إنشاء شهادات مُدارة ذاتيًا

قم بتشغيل الأوامر التالية لإنشاء شهادة.

# Generates a tls.key.
openssl genrsa -out tls.key 2048

# Creates a certificate and signs it with the preceding key.
openssl req -new -key tls.key -out tls.csr \
    -subj "/CN=my-release.milvus.io"

openssl x509 -req -days 99999 -in tls.csr -signkey tls.key \
    -out tls.crt

ثم قم بإنشاء سر في مجموعة GKE الخاصة بك مع هذه الملفات لاستخدامها لاحقًا.

kubectl create secret tls my-release-milvus-tls --cert=./tls.crt --key=./tls.key

إنشاء شهادات مُدارة من Google

المقتطف التالي هو إعداد شهادة مُدارة. احفظه بصيغة managed-crt.yaml لاستخدامه لاحقاً.

apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
  name: my-release-milvus-tls
spec:
  domains:
    - my-release.milvus.io

قم بإنشاء شهادة مُدارة من خلال تطبيق الإعداد على مجموعة GKE العنقودية الخاصة بك على النحو التالي:

kubectl apply -f ./managed-crt.yaml

قد يستمر هذا لفترة من الوقت. يمكنك التحقق من التقدم عن طريق تشغيل

kubectl get -f ./managed-crt.yaml -o yaml -w

يجب أن تكون المخرجات مشابهة لما يلي:

status:
  certificateName: mcrt-34446a53-d639-4764-8438-346d7871a76e
  certificateStatus: Provisioning
  domainStatus:
  - domain: my-release.milvus.io
    status: Provisioning

بمجرد تحول certificateStatus إلى نشط، تكون جاهزًا لإعداد موازن التحميل.

قم بإنشاء مدخل لإنشاء موازن تحميل من الطبقة السابعة

قم بإنشاء ملف YAML بأحد المقتطفات التالية.

  • استخدام الشهادات المُدارة ذاتيًا

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-release-milvus
      namespace: default
    spec:
      tls:
      - hosts:
        - my-release.milvus.io
        secretName: my-release-milvus-tls
      rules:
      - host: my-release.milvus.io
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-release-milvus
                port:
                  number: 19530
    
  • باستخدام الشهادات المُدارة ذاتيًا

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-release-milvus
      namespace: default
      annotations:
        networking.gke.io/managed-certificates: "my-release-milvus-tls"
    spec:
      rules:
      - host: my-release.milvus.io
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-release-milvus
                port:
                  number: 19530
    

ثم يمكنك إنشاء Ingress من خلال تطبيق الملف على مجموعة GKE الخاصة بك.

kubectl apply -f ingress.yaml

الآن، انتظر حتى تقوم جوجل بإعداد موازن تحميل الطبقة السابعة. يمكنك التحقق من التقدم عن طريق تشغيل

kubectl  -f ./config/samples/ingress.yaml get -w

يجب أن يكون الناتج مشابهًا لما يلي:

NAME                CLASS    HOSTS                  ADDRESS   PORTS   AGE
my-release-milvus   <none>   my-release.milvus.io             80      4s
my-release-milvus   <none>   my-release.milvus.io   34.111.144.65   80, 443   41m

بمجرد عرض عنوان IP في حقل ADDRESS، يكون موازن تحميل Layer-7 جاهزًا للاستخدام. يتم عرض كل من المنفذ 80 والمنفذ 443 في الإخراج أعلاه. تذكر أنه يجب عليك دائمًا استخدام المنفذ 443 لمصلحتك.

تحقق من الاتصال من خلال موازن التحميل Layer-7

يستخدم هذا الدليل PyMilvus للتحقق من الاتصال بخدمة Milvus خلف موازن تحميل Layer-7 الذي أنشأناه للتو. للاطلاع على الخطوات التفصيلية، اقرأ هذا.

لاحظ أن معلمات الاتصال تختلف بالطريقة التي تختارها لإدارة الشهادات في إعداد شهادات TLS.

from pymilvus import (
    connections,
    utility,
    FieldSchema,
    CollectionSchema,
    DataType,
    Collection,
)

# For self-managed certificates, you need to include the certificate in the parameters used to set up the connection.
connections.connect("default", host="34.111.144.65", port="443", server_pem_path="tls.crt", secure=True, server_name="my-release.milvus.io")

# For Google-managed certificates, there is not need to do so.
connections.connect("default", host="34.111.144.65", port="443", secure=True, server_name="my-release.milvus.io")
  • يجب أن يتطابق عنوان IP ورقم المنفذ في المضيف والمنفذ مع تلك المدرجة في نهاية إنشاء مدخل لإنشاء موازن تحميل من الطبقة السابعة.
  • إذا كنت قد قمت بإعداد سجل DNS لتعيين اسم المجال إلى عنوان IP المضيف، استبدل عنوان IP في المضيف باسم المجال واحذف اسم_المخدم.

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟