Эффективно разверните свою распределенную систему с помощью Fabric

В бывшей статье Как создать масштабируемый сканер для сканирования миллионов страниц, я писал что-то о создании масштабируемого сканера с помощью Docker-compose. Просто представьте сценарий, что у вас есть много серверов по всему миру, вам все еще нужно установить требования, настроить систему и запустить скрипт один за другим? Docker и Docker-Compose вам не помогут, а docker swarm и k8s кажутся более сложными для такого проекта.

Итак, какое программное обеспечение мы должны выбрать, чтобы сделать это быстро?

Как упоминалось в последнем абзаце предыдущего поста, это Fabric.

Fabric, инструмент для автоматизации задач администрирования и развертывания.

Fabric — это библиотека Python (2.5–2.7) и инструмент командной строки для упрощения использования SSH для задач развертывания приложений или системного администрирования.

Он предоставляет базовый набор операций для выполнения локальных или удаленных команд оболочки (обычно или через sudo) и загрузка/загрузка файлов, а также вспомогательные функции, такие как запрос текущего пользователя на ввод или прерывание выполнения.

Как упоминалось выше в Официальный сайтэто инструмент, который можно использовать в очень большом количестве сценариев.

Большая часть кода в ‘test_celery’ такая же, как и в предыдущем, с небольшими изменениями, о которых я расскажу позже.

Структура проекта

Как закодировать файл ткани

Примечание. Прежде чем кодировать ткань, мы должны установить ее с помощью pip на вашем компьютере.

Сначала настройте серверы

Fabric использует env для хранения данных серверов, таких как ip, порт, имя пользователя и пароль. Если все серверы имеют одинаковое имя пользователя, пароль и порт ssh-сервера по умолчанию (22), приведенная выше конфигурация подойдет вам. В противном случае вы должны изменить его, как показано ниже:

Во-вторых, напишите функцию

Что-то, что мы должны отметить здесь, это «@ parallel», без него серверы будут запускать эти команды одну за другой, что занимает очень много времени.

· Команда за «cmd» будет выполняться, когда вся установка и передача файлов выполняются в фоновом режиме с помощью dtach.

· Команда оболочки в методе запуска установит необходимое программное обеспечение на ваш удаленный сервер.

· С настройками (warn_only=True) после сбоя команды в ‘runResult = run(«mkdir -p /root/code/test_celery»)’ вы обнаружите ошибку с runResult.return_code == 1.

· Скопируйте все файлы в «test_celery», с помощью «cd(«/root/code»)» введите в каталог, в котором вы должны запустить какой-то скрипт.

Из-за каких-то неизвестных проблем некоторые «внутри» звонят, например нет не работает с тканью, поэтому, если вы хотите выполнить команду в фоновом режиме, дом а также экран это лучший выбор. Мы выбрали дом для этого случая.

Примечание. Я не нашел решений для сохранения stdout в локальный файл, если у вас есть лучшее решение, сообщите мне, спасибо.

Наконец, давайте запустим его.

ткань.ру

Когда все настройки завершены, код должен быть таким, как указано выше. Затем вернитесь в каталог, где находится Fabric.py.

потрясающая установка

Когда команда будет выполнена, вы увидите распечатку вашего терминала, как показано ниже, все три сервера выполняют скрипт параллельно.

Если вы не настроили декоратор на функцию установки, команда «fab -P -z 3 install» также выполнит задачу параллельно. (Проверьте детали параллельно здесь)

Теперь с помощью команды «ps -ef | grep celery» на этих трех удаленных машинах вы обнаружите, что в фоновом режиме работает 10 рабочих celery.

Все рабочие готовы к работе!

python -m test_celery.run_tasks

Отправим этим воркерам несколько заданий. Как только приведенная выше команда будет выполнена, вы найдете кое-что интересное в брокере сообщений RabbitMQ.

Когда вы войдете на сервер RabbitMQ и выполните приведенную ниже команду, здесь отобразятся подробности обо всех сообщениях. Есть 9164 сообщения, из которых 9004 готовы для потребителя, а 816 сообщений были обработаны рабочими.

Вывод

Celery, RabbitMQ и Fabric, а также распределенная система обходчиков, работающая на машинах по всему миру, упрощает разработку и развертывание. Если вы хотите, чтобы он работал быстрее, просто разверните больше рабочих процессов с помощью Fabric. Ничего в коде не нужно менять, и все настолько масштабируемо.

В следующей серии руководств я расскажу больше о некоторых продвинутых способах использования Celery, RabbitMQ, Fabric и Docker. Если у вас есть какие-либо вопросы или поделитесь информацией о них или распределенной системе, добро пожаловать на обсуждение здесь!

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *