🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
Beranda
  • Panduan Administrasi
  • Home
  • Docs
  • Panduan Administrasi

  • Penyebaran

  • Di Atas Awan

  • Penyeimbangan Beban Lapisan-7

  • GCP

Menyiapkan Penyeimbang Beban Layer-7 untuk Milvus di GCP

Jika dibandingkan dengan penyeimbang beban Layer-4, penyeimbang beban Layer-7 menawarkan kemampuan penyeimbangan beban dan caching yang cerdas dan merupakan pilihan yang tepat untuk layanan cloud-native.

Panduan ini memandu Anda dalam menyiapkan penyeimbang beban Layer-7 untuk cluster Milvus yang sudah berjalan di belakang penyeimbang beban Layer-4.

Sebelum memulai

Mengubah konfigurasi Milvus

Panduan ini mengasumsikan bahwa Anda telah menggunakan cluster Milvus di belakang penyeimbang beban Layer-4 pada GCP.

Sebelum menyiapkan penyeimbang beban Layer-7 untuk klaster Milvus ini, jalankan perintah berikut untuk menghapus penyeimbang beban Layer-4.

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

Sebagai layanan backend dari penyeimbang beban Layer-7, Milvus harus memenuhi persyaratan enkripsi tertentu agar dapat memahami permintaan HTTP/2 dari penyeimbang beban. Oleh karena itu, Anda perlu mengaktifkan TLS pada cluster Milvus Anda sebagai berikut.

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

konten tls.yaml:

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

Menyiapkan titik akhir pemeriksaan kesehatan

Untuk memastikan ketersediaan layanan, penyeimbangan beban Layer-7 pada GCP memerlukan pemeriksaan kondisi kesehatan layanan backend. Oleh karena itu, kita perlu menyiapkan BackendConfig untuk membungkus titik akhir pemeriksaan kesehatan dan mengaitkan BackendConfig dengan layanan Milvus melalui anotasi.

Cuplikan berikut ini adalah pengaturan BackendConfig. Simpan sebagai backendconfig.yaml untuk digunakan nanti.

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

Kemudian jalankan perintah berikut untuk membuat titik akhir pemeriksaan kesehatan.

kubectl apply -f backendconfig.yaml

Terakhir, perbarui anotasi pada layanan Milvus untuk meminta penyeimbang beban Layer-7 yang akan kita buat nanti untuk melakukan pemeriksaan kesehatan menggunakan endpoint yang baru saja dibuat.

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
  • Mengenai penjelasan pertama,

    Milvus adalah asli dari gRPC, yang dibangun di atas HTTP/2. Oleh karena itu, kita dapat menggunakan HTTP/2 sebagai protokol komunikasi antara penyeimbang beban Layer-7 dan Milvus.

  • Mengenai penjelasan kedua,

    Milvus hanya menawarkan endpoint pemeriksaan kesehatan melalui gRPC dan HTTP/1. Kita perlu menyiapkan BackendConfig untuk membungkus endpoint pemeriksaan kesehatan dan mengasosiasikannya dengan layanan Milvus sehingga penyeimbang beban Layer-7 menyelidiki endpoint ini untuk mengetahui kondisi kesehatan Milvus.

  • Mengenai anotasi ketiga,

    Ini meminta pembuatan grup titik akhir jaringan (NEG) setelah Ingress dibuat. Ketika NEG digunakan dengan GKE Ingress, pengontrol Ingress memfasilitasi pembuatan semua aspek penyeimbang beban. Ini termasuk membuat alamat IP virtual, aturan penerusan, pemeriksaan kesehatan, aturan firewall, dan banyak lagi. Untuk detailnya, lihat dokumen Google Cloud.

Menyiapkan sertifikat TLS

TLS memerlukan sertifikat agar dapat berfungsi. Ada dua cara untuk membuat sertifikat, yaitu dikelola sendiri dan dikelola Google.

Panduan ini menggunakan my-release.milvus.io sebagai nama domain untuk mengakses layanan Milvus.

Membuat sertifikat yang dikelola sendiri

Jalankan perintah berikut ini untuk membuat sertifikat.

# 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

Kemudian, buatlah rahasia di dalam cluster GKE Anda dengan berkas-berkas ini untuk digunakan nanti.

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

Membuat sertifikat yang dikelola Google

Cuplikan berikut ini adalah pengaturan ManagedCertificate. Simpan sebagai managed-crt.yaml untuk digunakan nanti.

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

Buat sertifikat terkelola dengan menerapkan pengaturan ke cluster GKE Anda sebagai berikut:

kubectl apply -f ./managed-crt.yaml

Hal ini dapat berlangsung selama beberapa saat. Anda dapat memeriksa kemajuannya dengan menjalankan

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

Keluarannya akan serupa dengan yang berikut ini:

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

Setelah certificateStatus berubah menjadi Active, Anda siap untuk menyiapkan penyeimbang beban.

Membuat Ingress untuk menghasilkan Load Balancer Layer-7

Buat berkas YAML dengan salah satu cuplikan berikut ini.

  • Menggunakan sertifikat yang dikelola sendiri

    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
    
  • Menggunakan sertifikat yang dikelola Google

    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
    

Kemudian, Anda dapat membuat Ingress dengan menerapkan berkas tersebut ke cluster GKE Anda.

kubectl apply -f ingress.yaml

Sekarang, tunggu Google menyiapkan penyeimbang beban Layer-7. Anda dapat memeriksa kemajuannya dengan menjalankan

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

Keluarannya akan serupa dengan yang berikut ini:

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

Setelah alamat IP ditampilkan di bidang ADDRESS, penyeimbang beban Layer-7 siap digunakan. Baik port 80 dan port 443 ditampilkan pada output di atas. Ingat, Anda harus selalu menggunakan port 443 untuk kepentingan Anda.

Verifikasi koneksi melalui penyeimbang beban Layer-7

Panduan ini menggunakan PyMilvus untuk memverifikasi koneksi ke layanan Milvus di belakang penyeimbang beban Layer-7 yang baru saja kita buat. Untuk langkah-langkah terperinci, baca ini.

Perhatikan bahwa parameter koneksi bervariasi sesuai dengan cara yang Anda pilih untuk mengelola sertifikat di Siapkan sertifikat 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")
  • Alamat IP dan nomor port pada host dan port harus sama dengan yang tercantum di akhir Membuat Ingress untuk menghasilkan Load Balancer Layer-7.
  • Jika Anda telah menyiapkan catatan DNS untuk memetakan nama domain ke alamat IP host, ganti alamat IP pada host dengan nama domain dan hilangkan nama_server.

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?