Лучшие практики Docker: Docker развертывает одноузловую векторную базу данных. Практика Milvus.
Лучшие практики Docker: Docker развертывает одноузловую векторную базу данных. Практика Milvus.

Лучшие практики Docker: Docker развертывает одноузловую векторную базу данных. Практика Milvus.

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

Настоящий бойцовский окружение включает информацию о версии программного обеспечения.

  • Операционная система:openEuler 22.03 LTS SP3
  • Docker:24.0.7
  • Milvus:v2.4.4

1. Предварительные условия

1.1 Инструкции по развертыванию

Существует два способа быстрого развертывания одноузлового сервиса Milvus с помощью Docker:

  • Обратитесь к официальному Milvus Одиночный узел Установитьдокумент,использовать Официально предоставленоизразвертыватьдокумент docker-compose.yml ,Один клик Установить etcdminio а также standalone Режим из milvus
  • Повторное использование существующей сетииз minio、etcd Ожидание услуг,Обратитесь к официальномупоставлятьизразвертыватьдокумент docker-compose.yml ,развертывать standalone Режим из milvus

Эта статья выбирает Нет.Два способа,Повторное использование существующей сети Служить,развертыватьпланпроиллюстрировать:

  • Запись файлов развертывания docker-compose.yml,развертывать standalone Режим из milvus и milvus Специальное назначение etcd。
  • Сервис Etcd предназначен только для Milvus, поэтому порты не открываются.
  • Повторное использование существующей сети Minio обслуживать, создавать Milvus Специальное назначение Access Key и Secret Key

1.2 Создание учетной записи Minio

ссылкаDocker Развертывание одного узла Minio Настоящий бой Установить Minio。

использовать Minio Консоль управления, создать Milvus Служитьиспользоватьиз Access Key и Secret Key

docker-minio-ak-new-account
docker-minio-ak-new-account

2. Установите и разверните Милвус

2.1 Создайте каталог данных и установите разрешения

Язык кода:bash
копировать
cd /data/containers
mkdir -p milvus/{config,volumes}

2.2 Создайте файл docker-compose.yml.

создавать Конфигурациядокумент,vi milvus/docker-compose.yml

Язык кода:yaml
копировать
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,включить аутентификацию(по умолчаниюимя пользователя корень, пароль Милвус, пожалуйста, измените его сразу после завершения развертывания)

2.3 Создайте и запустите службу

  • Запустить службу
Язык кода:bash
копировать
cd /data/containers/milvus
docker compose up -d

2.4 Проверка статуса контейнера

  • Посмотреть статус контейнера Milvus
Язык кода:bash
копировать
$ 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
  • Посмотреть журнал обслуживания Milvus
Язык кода:bash
копировать
# Проверьте наличие каких-либо отклонений в контейнере по журналам. Результаты опускаются.
$ docker compose logs -f

3. Проверочное тестирование

3.1 Проверочный тест Минио

Milvus После успешного развертывания Minio Создайте файл с именем a-bucket из Bucket。

docker-minio-buckets-milvus
docker-minio-buckets-milvus

3.2 Проверка доступности сервиса Milvus

использовать Milvus Официально предоставляет инструменты тестирования Hello Milvus,проверять Milvus из Доступность услуги. Сервер инструментов тестирования IP Необходимо изменить на Milvus Адрес сервера, номер порта по умолчанию 19530

Hello Milvus на самом деле один Python Скрипт,нуждаться Установитьпереписыватьсяиз Python 3 и Milvus Зависимые библиотеки. Для удобства использования сделаю Скрипт также iPython Подождите, пока инструмент будет упакован в Docker Зеркало.

  • Скачать изображение
Язык кода:shell
копировать
docker pull opsxlab/milvus-hello:2.3.7
  • Запустите инструмент тестирования
Язык кода:bash
копировать
docker run -it --rm --security-opt seccomp:unconfined opsxlab/milvus-hello:2.3.7 bash
  • Редактировать сценарий
Язык кода: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')
  • Выполнить тестовую команду
Язык кода:bash
копировать
python hello_milvus.py

После правильного выполнения результат вывода будет следующим:

Язык кода:bash
копировать
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` ===

4. Автоматизированные сценарии оболочки

Все действия в статье,Все организовано как автоматизация Скрипт,Содержит следующий контент (из-за ограничений страницы,В этом документе не показано):

  • Shell Скрипт Развертывание одного узел Контейнеризация Milvus
  • Ansible Развертывание одного узел Контейнеризация Milvus

Квалифицирован в эксплуатации и обслуживанииУчастники Planet, пожалуйста, перейдите на склад эксклюзивного кода для загрузки.(Ценный контент, эксклюзивный только для участников Planet)。

Вот и все,Вот чем я делюсь сегодня. О том, чем поделится в следующем выпуске, я еще не подумал.,Следите за обновлениямиОткрытая глухая коробка

Если вам понравилась эта статья, поделитесь, добавьте в избранное, поставьте лайк и прокомментируйте! Пожалуйста, продолжайте обращать внимание @Operation&Maintenance Юшу, жди новых хороших статей!

Добро пожаловать присоединиться «Планета знаний|Навыки эксплуатации и технического обслуживания» , получи больше из KubeSphere, Kubernetes, облачная эксплуатация и обслуживание, автоматизированная эксплуатация и обслуживание, искусственный интеллект Большая модель и т. д. Настоящий бой Навык。В вашей будущей карьере оператора и технического обслуживания я всегда буду сидеть на пассажирском сиденье.

Отказ от ответственности:

  • Уровень автора ограничен,Несмотря на многочисленные проверочные проверки,Мы прилагаем все усилия для обеспечения точности содержания.,Однако могут быть и пропуски。Пожалуйста, дайте свой совет экспертам отрасли.。
  • Содержание, указанное в этой статье, предоставлено только Настоящим. бойсреда Проверочный тест,Читатели могут учиться и извлекать уроки из,ноКатегорически запрещено использовать непосредственно в производственной среде.Автор не несет ответственности за любые проблемы, возникшие в связи с этим.

Получить эту статью Настоящий бой видео(пожалуйста, обрати внимание,Асинхронный выпуск документального видео,пожалуйста, сначаласосредоточиться на)

Заявление об авторских правах

  • Весь контент принадлежит оригиналу,Спасибо, что прочитали и собрали,Пожалуйста, свяжитесь с нами для получения разрешения на перепечатку. Воспроизведение без разрешения запрещено.

Я участвую в последнем конкурсе эссе для специального учебного лагеря Tencent Technology Creation 2024.,Приходите и разделите со мной главный приз!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose