Swarmstack: запуск, обслуживание, эксплуатация и мониторинг высокодоступных контейнерных приложений на основе Docker Swarm
Swarmstack — это отправная точка для установки, обслуживания, эксплуатации и мониторинга ваших высокодоступных контейнерных приложений, основанных на Docker Swarm. Он включает в себя современный набор инструментов DevOps (Prometheus / Alertmanager / Grafana) для мониторинга и оповещения.
Возможности:
Установка требует только копирования и вставки нескольких команд и редактирования некоторых документированных файлов.
Легко развёртывайте и обновляйте узлы Docker Swarm по мере масштабирования от минимум трёх серверов baremetal, экземпляров AWS/GCE и т. д., виртуальных машин или даже одного ноутбука macOS, если вам действительно нужно. На них будут размещаться ваши отслеживаемые контейнерные приложения.
Управляйте одним или несколькими кластерами Docker Swarm с помощью ansible playbooks, которые могут помочь вам установить и поддерживать кластеры Docker Swarm и их узлы. Они также могут автоматически устанавливать постоянное хранилище Portworx Developer или Enterprise для томов HA-контейнеров вашего приложения, реплицируемых между узлами роя, а также автоматически обновлять конфигурации брандмауэра на всех узлах.
Swarmstack включает современный рабочий процесс DevOps для мониторинга и оповещения о ваших контейнерных приложениях, работающих в Docker Swarms, включая мониторинг и оповещение о состоянии кластера и ваших собственных приложений. Swarmstack устанавливает и обновляет Prometheus + Grafana + Alertmanager. Также предоставляется дополнительная установка Portworx для постоянного хранилища для контейнеров, таких как базы данных, которым требуется хранилище, которое может мгновенно переместиться на другой узел Docker Swarm. Или вы можете использовать свой собственный уровень постоянного хранилища для Docker (например, RexRay), или использовать локальные тома хоста и добавить ограничения размещения в docker-compose.yml.
Включённые панели Grafana помогут вам изучить состояние кластера, и то же самое...
Здесь текст обрывается. Данные вашего приложения можно визуализировать в виде графиков, таблиц и диаграмм с помощью Prometheus. Grafana предоставляет готовые визуализации, которые помогут вашей команде следить за состоянием кластера Docker Swarm и анализировать работу контейнеров и их томов:
Portworx — это высокодоступное решение для хранения данных контейнеров, которое позволяет избежать ситуаций типа «ERROR: volume still attached to another node», возникающих при использовании решений для пулинга блочных устройств, таких как RexRay или EBS. В этих ситуациях тома могут застревать при отсоединении от старого узла и не монтироваться на новый узел, куда был перемещён контейнер. Portworx реплицирует тома между узлами в реальном времени, поэтому данные уже доступны на новом узле к моменту запуска нового контейнера. Это ускоряет восстановление сервисов и время реконвергенции.
Существует стек docker-compose-singlebox.yml, который можно использовать для тестирования swarmstack на одном хосте Docker Swarm без etcd, Portworx или другого постоянного хранилища. Инструкции по установке этой версии swarmstack для одного хоста можно найти в разделе УСТАНОВКА.
Требуется 3 или более хостов Enterprise Linux 7 (RHEL 7/CentOS 7), каждый из которых предоставляет одно или несколько дополнительных виртуальных или физических неиспользуемых блочных устройств или разделов для кластера хранения Portworx, который будет установлен swarmstack. Больше устройств обычно означает лучшую производительность. Если вы используете существующий Docker Swarm, требуется версия 17.12.0+ согласно файлу компоновки swarmstack (версия 3.5). swarmstack установит или обновит все определённые узлы [swarm] до последней стабильной версии Docker и попытается присоединить все хосты [swarm] в кластере к определённому хосту SWARMJOIN. Вы можете изменить версию Docker, включая использование bleeding-edge репозиториев, если хотите, изменив playbook docker.yml.
По умолчанию swarmstack устанавливает кластер хранения для каждого набора из 3 хостов, добавленных в кластер, который должен предоставлять минимум 40 ГБ (требуется swarmstack) до ограничений версии разработчика Portworx в 1 ТБ постоянного хранилища для максимум 40 томов на этих 3 узлах. Оптимальным вариантом будет добавление 1 ТБ дисков или разделов с каждого узла, чтобы заполнить 1 ТБ реплицированного пространства. Вы можете предоставить неиспользуемые блочные устройства или разделы, добавление большего количества небольших NMVe/SSDs на bare-metal или облачные высокопроизводительные блочные устройства обеспечит Portworx более быстрое хранилище, но Portworx работает даже через 3 виртуальные машины на одной машине, каждая из которых вносит вклад в хранилище с одного общего USB2 NAS, так что масштабируйте своё хранилище в зависимости от ожидаемой нагрузки на постоянное хранилище. Можно предоставить блочные устройства или разделы больше 1 ТБ, но только 1 ТБ постоянного хранилища будет доступно без лицензирования версии PX-Enterprise.
При развёртывании версии Portworx PX-Developer по умолчанию вы будете добавлять узлы кратно 3 и использовать ограничения, такие как - node.label.storagegroup == RED, чтобы привязать ваши отдельные сервисы, требующие постоянного хранилища, к одной конкретной группе из 3 узлов в большем кластере Swarm (например, узлы 1 2 3, узлы 4 5 6 и т. д.). При выборе Portworx PX-Enterprise во время установки или при использовании другого решения для хранения эти ограничения могут больше не применяться, и один большой кластер хранения может быть одновременно доступен многим узлам Swarm без привязки хранилища к группам из 3 узлов, как это поддерживает px-dev. Только подмножество ваших прикладных сервисов обычно требует Постоянное хранилище и потребуется решение, к какому кластеру из 3 узлов привязать сервис. Оставшееся пространство хранилища Portworx доступно для использования вашими приложениями. Контейнеры, не требующие постоянного хранилища, могут быть запланированы на весь рой-кластер.
Прежде чем продолжить, убедитесь, что время на ваших хостах синхронизировано через NTP.
Инструкции по ручной установке swarmstack см. в Manual swarmstack installation.md.
При установке за необходимым веб-прокси см. Working with swarmstack behind a web proxy.md.
Инструкции по обновлению swarmstack доступны в Updating swarmstack.md.
Чтобы развернуть и отслеживать собственные приложения в кластере, см. Adding your own applications to monitoring.md.
Для ручного отправки эфемерных или пакетных метрик в Prometheus см. Using Pushgateway.md.
Справочную информацию о том, что настраивает swarmstack при включении LDAP, см. в разделе Using LDAP.md.
Некоторые основные команды для работы с swarmstack и хранилищем Portworx приведены в Notes.md.
Откройте вопрос. Как использовать этот проект?
Возможно, вы захотите выполнить установку с хоста вне кластера, так как запуск playbook docker.yml может привести к перезагрузке хостов при обновлении ядер (вы можете повторно запустить его в будущем, чтобы поддерживать актуальность хостов). Вы можете обойти это, выполнив «yum update kernel» и перезагрузив один из ваших хостов роя, а затем запустив плейбуки Ansible с этого хоста.
# yum -y install epel-release && yum install git ansible
# cd /usr/local/src/
# git clone https://github.com/swarmstack/swarmstack
# rsync -aq --exclude=.git --exclude=.gitignore swarmstack/ localswarmstack/
# cd localswarmstack/ansible
Существует стек docker-compose-singlebox.yml, который можно использовать для оценки swarmstack на одном хосте Docker без необходимости в etcd и Portworx или другом постоянном хранилище. Этот стек будет сохранять постоянные именованные тома на единственном хосте роя. Пожалуйста, ознакомьтесь с файлом для получения инструкций по установке и пропустите все остальные шаги ниже.
Отредактируйте эти (4) файла: | |
---|---|
clusters/swarmstack | Настройте все узлы вашего кластера и устройства хранения |
alertmanager/conf/alertmanager.yml | Необязательно: настройте, куда Alertmanagers отправляют уведомления |
roles/swarmstack/files/etc/swarmstack_fw/rules/cluster.rules | Используется для разрешения трафика на сами хосты |
roles/swarmstack/files/etc/swarmstack_fw/rules/docker.rules | Используется для ограничения доступа к портам службы Docker |
Все перечисленные ниже playbooks являются идемпотентными, будут выполнять действия только на тех хостах, где это необходимо, и могут быть безопасно запущены повторно по мере необходимости, например, при изменении параметров кластера или добавлении хранилища или дополнительных узлов.
После выполнения playbook swarmstack.yml вы войдёте в большинство инструментов под именем «admin». И нструкции по работе с инструментами Swarmstack
and the ADMIN_PASSWORD set in ansible/clusters/swarmstack. You can update the ADMIN_PASSWORD later by executing docker stack rm swarmstack (persistent data volumes will be preserved) and then re-deploy the swarmstack docker-compose.yml.
Instances such as Grafana and Portainer will save credential configuration in their respective persistent data volumes. These volumes can be manually removed if required and would be automatically re-initialized the next time the swarmstack compose file is deployed. You would lose any historical information such as metrics if you choose to initialize an application by executing docker volume rm swarmstackvolumename* before re-running the swarmstack.yml playbook.
ansible-playbook -i clusters/swarmstack playbooks/firewall.yml -k
ansible-playbook -i clusters/swarmstack playbooks/docker.yml -k
ansible-playbook -i clusters/swarmstack playbooks/etcd.yml -k
ansible-playbook -i clusters/swarmstack playbooks/portworx.yml -k
ansible-playbook -i clusters/swarmstack playbooks/swarmstack.yml -k
If you make changes to the local service configuration files in /usr/local/src/localswarmstack/, such as altering Prometheus configuation or rules, you can run the up script which will cause swarm to update only the services where configuration changes are detected. There is a similar script up-singlebox for these users as well.
The included Grafana dashboards will help you pin-point issues, and provides good Следует использовать, где это необходимо, для масштабирования частей, которые должны масштабироваться за пределы нескольких десятков узлов роя (ссылка на историю: https://blog.scaleway.com/2016/docker-swarm-an-analysis-of-a-very-large-scale-container-system/). Вы можете просто выбрать развёртывание некоторых приложений (таких как Cortex) в Kubernetes, а также запустить некоторые из ваших служб или разработку в Docker Swarm. Оба могут быть использованы вместе для решения ваших задач.
Ниже в основном для документации. После установки swarmstack просто подключитесь к https://swarmhost любого узла Docker Swarm и авторизуйтесь с помощью вашего ADMIN_PASSWORD для просмотра ссылок:
DevOps Tool | Browser URL (проксируется Caddy) | Цель |
---|---|---|
Alertmanager (https://prometheus.io/docs/alerting/alertmanager/) |
https://swarmhost:9093 https://swarmhost:9095 |
Получает оповещения от Prometheus и передаёт их в Slack, электронную почту и т. д. |
karma (https://github.com/prymitive/karma/blob/master/README.md) | https://swarmhost:9094 | Панель оповещений для Prometheus Alertmanager(ов) |
Grafana (https://grafana.com) | https://swarmhost:3000 | Запрос, визуализация, оповещение и понимание ваших метрик независимо от того, где они хранятся |
NetData (https://my-netdata.io/) | https://swarmhost:19998/hostname/ | Всё происходящее в ваших системах и приложениях |
Portainer (https://portainer.io) | https://swarmhost:9000 | Лёгкий интерфейс управления Docker Swarm |
Prometheus (https://prometheus.io/) | https://swarmhost:9090 | Открытое решение для мониторинга |
Prometheus Pushgateway (https://prometheus.io/docs/practices/pushing/) | https://swarmhost:9091 | Приёмник для эфемерных и пакетных заданий, метрики которых будут собраны Prometheus |
Безопасность | Примечания | Источник / Изображение |
---|---|---|
Caddy (https://caddyserver.com/) | Обратный прокси — см. выше для URL | Источник: https://github.com/swarmstack/caddy Изображение: https://hub.docker.com/r/swarmstack/caddy no-stats |
Docker Garbage Collection (https://docs.docker.com/config/pruning/) | Удаляет неиспользуемые и просроченные образы Docker, контейнеры и тома | Источник: https://github.com/clockworksoul/docker-gc-cron Изображение: https://hub.docker.com/r/clockworksoul/docker-gc-cron latest |
Fail2ban (https://www.fail2ban.org) | Предотвращение брутфорса | ansible/playbooks/firewall.yml |
iptables (https://en.wikipedia.org/wiki/Iptables) | Управление брандмауэром | ansible/playbooks/firewall.yml |
Мониторинг / Телеметрия | Метрики URL | Источник / Изображение |
---|---|---|
Alertmanager (https://prometheus.io/docs/alerting/alertmanager/) | Сеть оверлея Docker: http://alertmanager[B]:9093/metrics |
Источник: https://github.com/prometheus/alertmanager Изображение: https://hub.docker.com/r/prom/alertmanager latest |
cAdvisor (https://github.com/google/cadvisor) | Сеть оверлея Docker: http://cadvisor:8080/metrics |
Источник: https://github.com/google/cadvisor Изображение: gcr.io/google-containers/cadvisor v0.36.0 |
Docker Swarm (https://docs.docker.com/engine/swarm/) | IP-адрес узла Docker: http://swarmhost:9323/metrics |
ansible/playbooks/docker.yml |
etcd3 (https://github.com/etcd-io/etcd) | IP-адрес узла Docker: http://swarmhost:2379/metrics |
ansible/playbooks/etcd.yml |
Grafana (https://grafana.com) | Сеть оверлея Docker: http://grafana:3000/metrics |
Kthxbye: Docker overlay network: http://kthxbye:8080/metrics | Источник: https://github.com/prymitive/kthxbye | Образ: https://hub.docker.com/r/lmierzwa/kthxbye v0.9.
NetData: Docker Node IP: http://swarmhost:19999/api/v1/allmetrics | ansible/playbooks/swarmstack.yml | Источник: https://github.com/swarmstack/swarmstack | Образ: нет данных.
Node_exporter: https://swarmhost:9100/metrics/ | Источник: https://github.com/prometheus/node_exporter/ | Образ: нет данных.
Portainer: нет мониторинга Prometheus | Источник: https://portainer.io/ | Образ: https://hub.docker.com/r/portainer/portainer latest.
Agent Portainer: нет мониторинга Prometheus, контакты Portainer | Источник: https://portainer.io | Образ: https://hub.docker.com/r/portainer/agent latest.
Portworx: Docker Node IP: http://swarmhost:9001/metrics | ansible/playbooks/portworx.yml | px-dev или px-enterprise 2.4.0 | Источник: https://portworx.com | Образ: нет данных.
Prometheus: Docker overlay network: http://prometheus:9090/metrics | Источник: https://github.com/prometheus/prometheus | Образ: https://hub.docker.com/r/prom/prometheus latest.
Pushgateway Prometheus: Docker overlay network: http://pushgateway:9091/metrics | Источник: https:/github.com/prometheus/pushgateway | Образ: https://hub.docker.com/r/prom/pushgateway latest.
Swarm-discovery-server: нет мониторинга Prometheus; сервер: http://swarm-discovery-server:8080; клиент: контакты сервера и также записывает в общий с контейнером Prometheus том | Источник: https://github.com/bborysenko/prometheus-swarm-discovery | 0.3.0.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )