2024 Год эксплуатации и обслуживания облачных сервисов Настоящий бой Документация 99 оригинальный проект Нет. 028 Глава |Docker оптимальный Настоящий бой「2024」Сериал Нет. 016 Глава
Привет,добро пожаловать вКвалифицирован в эксплуатации и обслуживании。
Контент, которым сегодня поделились, Docker оптимальный Настоящий бой「2024」 в серии документов Docker Развертывание базы данных векторов с одним узлом Milvus Настоящий бой。
В этой статье будет подробно описано, как развернуть одноузловой Milvus с использованием контейнеров Docker и Docker Compose, а также использовать сценарии Python для проверки доступности сервиса Milvus.
Настоящий бой Конфигурация сервера (Архитектура 1:1 Реплицируйте мелкомасштабную производственную среду, конфигурация немного другая)
имя хоста | IP | ЦП (ядро) | Память (ГБ) | Системный диск (ГБ) | Диск с данными (ГБ) | использовать |
---|---|---|---|---|---|---|
docker-node-1 | 192.168.9.81 | 4 | 16 | 40 | 100 | Докер-узел 1 |
docker-node-2 | 192.168.9.82 | 4 | 16 | 40 | 100 | Докер-узел 2 |
docker-node-3 | 192.168.9.83 | 4 | 16 | 40 | 100 | Докер-узел 3 |
общий | 3 | 12 | 48 | 120 | 300 |
Настоящий бойцовский окружение включает информацию о версии программного обеспечения.
Существует два способа быстрого развертывания одноузлового сервиса Milvus с помощью Docker:
Эта статья выбирает Нет.Два способа,Повторное использование существующей сети Служить,развертыватьпланпроиллюстрировать:
ссылкаDocker Развертывание одного узла Minio Настоящий бой Установить Minio。
использовать Minio Консоль управления, создать Milvus Служитьиспользоватьиз Access Key и Secret Key。
cd /data/containers
mkdir -p milvus/{config,volumes}
создавать Конфигурациядокумент,vi milvus/docker-compose.yml
name: 'milvus-standalone'
services:
etcd:
container_name: milvus-etcd
image: quay.io/coreos/etcd:v3.5.5
environment:
- ETCD_AUTO_COMPACTION_MODE=revision
- ETCD_AUTO_COMPACTION_RETENTION=1000
- ETCD_QUOTA_BACKEND_BYTES=4294967296
- ETCD_SNAPSHOT_COUNT=50000
volumes:
- ./volumes/etcd:/etcd
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
healthcheck:
test: ["CMD", "etcdctl", "endpoint", "health"]
interval: 30s
timeout: 20s
retries: 3
networks:
- milvus-tier
milvus:
container_name: milvus-standalone
image: milvusdb/milvus:v2.4.4
command: ["milvus", "run", "standalone"]
security_opt:
- seccomp:unconfined
environment:
ETCD_ENDPOINTS: etcd:2379
MINIO_ADDRESS: 192.168.9.81:9000
MINIO_ACCESS_KEY_ID: milvusadmin
MINIO_SECRET_ACCESS_KEY: OpsXlab@2024
common.security.authorizationEnabled: true
volumes:
- ./volumes/milvus:/var/lib/milvus
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
interval: 30s
start_period: 90s
timeout: 20s
retries: 3
networks:
- milvus-tier
ports:
- "19530:19530"
- "9091:9091"
depends_on:
- "etcd"
networks:
milvus-tier:
name: milvus-tier
driver: bridge
#external: true
проиллюстрировать: MINIO_ADDRESS,Заполните фактическое Minio Адрес обслуживания MINIO_ACCESS_KEY_ID,Milvus использоватьиз Minio имя пользователя (Access Key) MINIO_SECRET_ACCESS_KEY,Milvus использоватьиз Minio Пароль пользователя (Secret Key) common.security.authorizationEnabled,включить аутентификацию(по умолчаниюимя пользователя корень, пароль Милвус, пожалуйста, измените его сразу после завершения развертывания)
cd /data/containers/milvus
docker compose up -d
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
milvus-etcd quay.io/coreos/etcd:v3.5.5 "etcd -advertise-cli…" etcd 14 seconds ago Up 12 seconds (health: starting) 2379-2380/tcp
milvus-standalone milvusdb/milvus:v2.4.4 "/tini -- milvus run…" milvus 14 seconds ago Up 12 seconds (health: starting) 0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:19530->19530/tcp, :::19530->19530/tcp
# Проверьте наличие каких-либо отклонений в контейнере по журналам. Результаты опускаются.
$ docker compose logs -f
Milvus После успешного развертывания Minio Создайте файл с именем a-bucket из Bucket。
использовать Milvus Официально предоставляет инструменты тестирования Hello Milvus,проверять Milvus из Доступность услуги. Сервер инструментов тестирования IP Необходимо изменить на Milvus Адрес сервера, номер порта по умолчанию 19530
Hello Milvus на самом деле один Python Скрипт,нуждаться Установитьпереписыватьсяиз Python 3 и Milvus Зависимые библиотеки. Для удобства использования сделаю Скрипт также iPython Подождите, пока инструмент будет упакован в Docker Зеркало.
docker pull opsxlab/milvus-hello:2.3.7
docker run -it --rm --security-opt seccomp:unconfined opsxlab/milvus-hello:2.3.7 bash
# vi hello_milvus.py
# Воля
connections.connect("default", host="localhost", port="19530")
# Изменить на
connections.connect("default", host="192.168.9.81", port="19530", user="root", password='Milvus')
python hello_milvus.py
После правильного выполнения результат вывода будет следующим:
root@83ff72835765:/app# python hello_milvus.py
=== start connecting to Milvus ===
Does collection hello_milvus exist in Milvus: False
=== Create collection `hello_milvus` ===
=== Start inserting entities ===
Number of entities in Milvus: 3000
=== Start Creating index IVF_FLAT ===
=== Start loading ===
=== Start searching based on vector similarity ===
hit: id: 2998, distance: 0.0, entity: {'random': 0.9728033590489911}, random field: 0.9728033590489911
hit: id: 1262, distance: 0.08883658051490784, entity: {'random': 0.2978858685751561}, random field: 0.2978858685751561
hit: id: 1265, distance: 0.09590047597885132, entity: {'random': 0.3042039939240304}, random field: 0.3042039939240304
hit: id: 2999, distance: 0.0, entity: {'random': 0.02316334456872482}, random field: 0.02316334456872482
hit: id: 1580, distance: 0.05628090724349022, entity: {'random': 0.3855988746044062}, random field: 0.3855988746044062
hit: id: 2377, distance: 0.08096684515476227, entity: {'random': 0.8745922204004368}, random field: 0.8745922204004368
search latency = 0.2876s
=== Start querying with `random > 0.5` ===
query result:
-{'embeddings': [0.20963514, 0.39746657, 0.12019053, 0.6947492, 0.9535575, 0.5454552, 0.82360446, 0.21096309], 'pk': '0', 'random': 0.6378742006852851}
search latency = 0.4379s
query pagination(limit=4):
[{'random': 0.6378742006852851, 'pk': '0'}, {'random': 0.5763523024650556, 'pk': '100'}, {'random': 0.9425935891639464, 'pk': '1000'}, {'random': 0.7893211256191387, 'pk': '1001'}]
query pagination(offset=1, limit=3):
[{'random': 0.5763523024650556, 'pk': '100'}, {'random': 0.9425935891639464, 'pk': '1000'}, {'random': 0.7893211256191387, 'pk': '1001'}]
=== Start hybrid searching with `random > 0.5` ===
hit: id: 2998, distance: 0.0, entity: {'random': 0.9728033590489911}, random field: 0.9728033590489911
hit: id: 747, distance: 0.14606499671936035, entity: {'random': 0.5648774800635661}, random field: 0.5648774800635661
hit: id: 2527, distance: 0.1530652642250061, entity: {'random': 0.8928974315571507}, random field: 0.8928974315571507
hit: id: 2377, distance: 0.08096684515476227, entity: {'random': 0.8745922204004368}, random field: 0.8745922204004368
hit: id: 2034, distance: 0.20354534685611725, entity: {'random': 0.5526117606328499}, random field: 0.5526117606328499
hit: id: 958, distance: 0.21908017992973328, entity: {'random': 0.6647383716417955}, random field: 0.6647383716417955
search latency = 0.4006s
=== Start deleting with expr `pk in ["0" , "1"]` ===
query before delete by expr=`pk in ["0" , "1"]` -> result:
-{'pk': '0', 'random': 0.6378742006852851, 'embeddings': [0.20963514, 0.39746657, 0.12019053, 0.6947492, 0.9535575, 0.5454552, 0.82360446, 0.21096309]}
-{'pk': '1', 'random': 0.43925103574669633, 'embeddings': [0.52323616, 0.8035404, 0.77824664, 0.80369574, 0.4914803, 0.8265614, 0.6145269, 0.80234545]}
query after delete by expr=`pk in ["0" , "1"]` -> result: []
=== Drop collection `hello_milvus` ===
Все действия в статье,Все организовано как автоматизация Скрипт,Содержит следующий контент (из-за ограничений страницы,В этом документе не показано):
Квалифицирован в эксплуатации и обслуживанииУчастники Planet, пожалуйста, перейдите на склад эксклюзивного кода для загрузки.(Ценный контент, эксклюзивный только для участников Planet)。
Вот и все,Вот чем я делюсь сегодня. О том, чем поделится в следующем выпуске, я еще не подумал.,Следите за обновлениямиОткрытая глухая коробка。
Если вам понравилась эта статья, поделитесь, добавьте в избранное, поставьте лайк и прокомментируйте! Пожалуйста, продолжайте обращать внимание @Operation&Maintenance Юшу, жди новых хороших статей!
Добро пожаловать присоединиться «Планета знаний|Навыки эксплуатации и технического обслуживания» , получи больше из KubeSphere, Kubernetes, облачная эксплуатация и обслуживание, автоматизированная эксплуатация и обслуживание, искусственный интеллект Большая модель и т. д. Настоящий бой Навык。В вашей будущей карьере оператора и технического обслуживания я всегда буду сидеть на пассажирском сиденье.。
Отказ от ответственности:
Получить эту статью Настоящий бой видео(пожалуйста, обрати внимание,Асинхронный выпуск документального видео,пожалуйста, сначаласосредоточиться на)
Заявление об авторских правах
Я участвую в последнем конкурсе эссе для специального учебного лагеря Tencent Technology Creation 2024.,Приходите и разделите со мной главный приз!