Koordinator HA
Seperti yang ditunjukkan dalam arsitektur Milvus, Milvus terdiri dari banyak komponen dan membuatnya bekerja secara terdistribusi. Di antara semua komponen, Milvus memastikan ketersediaan yang tinggi dari para pekerja melalui peningkatan dan penurunan skala dari node, menjadikan koordinator sebagai satu-satunya mata rantai yang lemah dalam rantai.
Gambaran Umum
Dalam rilis 2.2.3, Milvus mengimplementasikan ketersediaan tinggi untuk koordinator untuk membuatnya bekerja dalam mode siaga aktif, memitigasi kemungkinan titik kegagalan tunggal (SPoF) yang dapat menyebabkan tidak tersedianya layanan.
Koordinator HA
Gambar di atas mengilustrasikan bagaimana koordinator bekerja dalam mode siaga aktif. Ketika sepasang koordinator memulai, mereka mendaftar ke etcd menggunakan ID server mereka dan bersaing untuk mendapatkan peran aktif. Koordinator yang berhasil menyewa peran aktif dari etcd akan mulai melayani, dan koordinator lain dalam pasangan tersebut akan tetap siaga, mengawasi peran aktif dan siap melayani jika koordinator aktif mati.
Aktifkan koordinator HA
Dengan Helm
Untuk memulai beberapa koordinator dan membuat mereka bekerja dalam mode siaga aktif, anda harus membuat perubahan berikut ini pada berkas values.yaml
.
- Atur
xxxCoordinator.replicas
ke2
. - 2. Atur
xxxCoordinator.activeStandby.enabled
menjaditrue
.
Cuplikan kode berikut ini menggunakan RootCoord sebagai contoh. Anda dapat melakukan hal yang sama pada koordinator jenis lain.
rootCoordinator:
enabled: true
# You can set the number of replicas greater than 1 only if you also need to set activeStandby.enabled to true.
replicas: 2 # Otherwise, remove this configuration item.
resources: {}
nodeSelector: {}
affinity: {}
tolerations: []
extraEnv: []
heaptrack:
enabled: false
profiling:
enabled: false # Enable live profiling
activeStandby:
enabled: true # Set this to true to have RootCoordinators work in active-standby mode.
Dengan Docker
Untuk memulai beberapa koordinator dan membuatnya bekerja dalam mode siaga-aktif, Anda dapat menambahkan beberapa definisi ke berkas docker-compose
yang Anda gunakan untuk memulai klaster Milvus.
Cuplikan kode berikut ini menggunakan RootCoord sebagai contoh. Anda dapat melakukan hal yang sama pada koordinator jenis lain.
rootcoord:
container_name: milvus-rootcoord
image: milvusdb/milvus:v2.2.3
command: ["milvus", "run", "rootcoord"]
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: minio:9000
PULSAR_ADDRESS: pulsar://pulsar:6650
ROOT_COORD_ADDRESS: rootcoord:53100
# add ROOT_COORD_ENABLE_ACTIVE_STANDBY to enable active standby
ROOT_COORD_ENABLE_ACTIVE_STANDBY: true
depends_on:
- "etcd"
- "pulsar"
- "minio"
# add the following to have RootCoords work in active-standby mode
# rootcoord-1:
# container_name: milvus-rootcoord-1
# image: milvusdb/milvus:v2.2.3
# command: ["milvus", "run", "rootcoord"]
# environment:
# ETCD_ENDPOINTS: etcd:2379
# MINIO_ADDRESS: minio:9000
# PULSAR_ADDRESS: pulsar://pulsar:6650
# ROOT_COORD_ADDRESS: rootcoord-1:53100
# # add ROOT_COORD_ENABLE_ACTIVE_STANDBY to enable active standby
# ROOT_COORD_ENABLE_ACTIVE_STANDBY: true
# depends_on:
# - "etcd"
# - "pulsar"
# - "minio"
Dengan shell Mac/Linux
Untuk memulai beberapa koordinator dan membuatnya bekerja dalam mode siaga aktif, Anda dapat
Unduh kode sumber Milvus ke drive lokal Anda, dan mulai sebuah cluster Milvus dari kode sumber sebagai berikut:
sudo ./scripts/start_cluster.sh
Milvus akan berjalan dengan hanya satu koordinator dari setiap jenis pada akhir langkah ini.
Perbarui
milvus.yaml
untuk mengubah nomor port dari koordinator setiap jenis. Berikut ini menggunakan rootCoord sebagai contoh.rootCoord: address: localhost port: 53100 # change to 53001
Mulai koordinator siaga.
sudo nohup ./bin/milvus run rootcoord > /tmp/rootcoord2.log 2>&1 &
Pada akhir langkah ini, jalankan perintah berikut untuk memverifikasi bahwa dua proses koordinator ada.
ps aux|grep milvus
Keluarannya seharusnya mirip dengan
> ps aux|grep milvus root 12813 0.7 0.2 410709648 82432 ?? S 5:18PM 0:33.28 ./bin/milvus run rootcoord root 12816 0.5 0.2 409487968 62352 ?? S 5:18PM 0:22.69 ./bin/milvus run proxy root 17739 0.1 0.3 410289872 91792 s003 SN 6:01PM 0:00.30 ./bin/milvus run rootcoord ...
Dan koordinator siaga mengeluarkan entri log setiap sepuluh detik sebagai berikut:
[INFO] [sessionutil/session_util.go:649] ["serverName: rootcoord is in STANDBY ..."]
Matikan koordinator aktif pada pasangan dan perhatikan perilaku koordinator siaga.
Anda dapat menemukan bahwa dibutuhkan 60 detik bagi koordinator siaga untuk mengambil alih peran aktif.
[2022/09/21 11:58:33.855 +08:00] [DEBUG] [sessionutil/session_util.go:677] ["watch the ACTIVE key"] [DELETE="key:\"by-dev/meta/session/rootcoord\" mod_revision:167 "] [2022/09/21 11:58:33.856 +08:00] [DEBUG] [sessionutil/session_util.go:677] ["watch the ACTIVE key"] [DELETE="key:\"by-dev/meta/session/rootcoord-15\" mod_revision:167 "] [2022/09/21 11:58:33.856 +08:00] [INFO] [sessionutil/session_util.go:683] ["stop watching ACTIVE key"] [2022/09/21 11:58:33.856 +08:00] [INFO] [sessionutil/session_util.go:655] ["start retrying to register as ACTIVE service..."] [2022/09/21 11:58:33.859 +08:00] [INFO] [sessionutil/session_util.go:641] ["register ACTIVE service successfully"] [ServerID=19] [2022/09/21 11:58:33.859 +08:00] [INFO] [sessionutil/session_util.go:690] ["quit STANDBY mode, this node will become ACTIVE"] [2022/09/21 11:58:33.859 +08:00] [INFO] [rootcoord/root_coord.go:638] ["rootcoord switch from standby to active, activating"] [2022/09/21 11:58:33.859 +08:00] [INFO] [rootcoord/root_coord.go:306] ["RootCoord Register Finished"] [2022/09/21 11:58:33.859 +08:00] [DEBUG] [rootcoord/service.go:148] ["RootCoord start done ..."] [2022/09/21 11:58:33.859 +08:00] [DEBUG] [components/root_coord.go:58] ["RootCoord successfully started"]
Item konfigurasi terkait
Koordinator HA dinonaktifkan secara default. Anda dapat mengaktifkan fitur ini secara manual dengan mengubah item berikut dalam file konfigurasi Milvus Anda.
Batasan
Saat ini, tidak ada jaminan konsistensi yang kuat antara layanan aktif dan siaga. Oleh karena itu, koordinator siaga perlu memuat ulang metadata saat mengambil alih peran aktif.
Etcd melepaskan sewa hanya setelah sesi saat ini habis. Batas waktu sesi secara default adalah 60 detik. Oleh karena itu, ada jeda 60 detik antara saat koordinator aktif mati dan saat koordinator siaga mengambil alih peran aktif.