Лучшие практики 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
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.