1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-swarmstack

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
up
Loading...
README.md

Swarmstack: запуск, обслуживание, эксплуатация и мониторинг высокодоступных контейнерных приложений на основе Docker Swarm

Swarmstack — это отправная точка для установки, обслуживания, эксплуатации и мониторинга ваших высокодоступных контейнерных приложений, основанных на Docker Swarm. Он включает в себя современный набор инструментов DevOps (Prometheus / Alertmanager / Grafana) для мониторинга и оповещения.

Возможности:

  • управление узлами Docker Swarm, включая автоматическую установку узлов Docker Swarm или подключение существующих роев;
  • стабильное высокодоступное постоянное хранилище для ваших контейнеров;
  • управление брандмауэром;
  • HTTPS по умолчанию;
  • поддержка LDAP и сети с веб-прокси;
  • динамическое обнаружение и мониторинг служб роя с использованием меток служб роя;
  • другие функции высокой доступности, которыми могут воспользоваться ваши приложения.

Установка требует только копирования и вставки нескольких команд и редактирования некоторых документированных файлов.

Легко развёртывайте и обновляйте узлы 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

  • (optional but HIGHLY recommended) you can run and re-run this playbook to manage firewalls on all of your nodes whether they run Docker or not.

ansible-playbook -i clusters/swarmstack playbooks/docker.yml -k

  • (optional) Use this playbook if you haven't already brought up a Docker swarm, or just need to add swarm nodes to a new or existing Docker cluster. This playbook can also be used to maintain your Docker swarm nodes, and will serially work through each [swarm] node in the cluster to update all packages using yum (edit /etc/yum.conf and set 'exclude=' if you want to inhibit certain packages from being upgraded, even kernels), and will only drain then later reactivate each node if Docker or kernel updates are available and will be applied. You should develop a process to run this maintenance on your hosts regularly by simply running this playbook again.

ansible-playbook -i clusters/swarmstack playbooks/etcd.yml -k

  • (optional) Used by Portworx to store storage cluster metadata in a highly-available manner. Only 3 nodes need to be defined to run etcd, and you'll probably just need to run this playbook once to establish the initial etcd cluster (which can be used by multiple Portworx clusters).

ansible-playbook -i clusters/swarmstack playbooks/portworx.yml -k

  • (optional) Installs Portworx in groups of 3 nodes each. If you are instead bringing your own persistent storage, be sure to update the pxd driver in docker-compose.yml. Add new groups of 3 hosts later as your cluster grows. You can add 1 or more additional Docker swarm hosts in the [swarm] group but not in the [portworx] group; these extra hosts can absorb load across the cluster from containers not requiring persistent storage.

ansible-playbook -i clusters/swarmstack playbooks/swarmstack.yml -k

  • This deploys or redeploys the swarmstack DevOps monitoring stack to the Docker swarm cluster. This includes installing or updating NetData on each node in order for Prometheus to collect metrics from it.

Updating

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.


MONITORING ALERTING AND LOGGING

Monitoring

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. Оба могут быть использованы вместе для решения ваших задач.

СЕТЬ URL

Ниже в основном для документации. После установки 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Точка запуска на основе роя Docker для работы с высокодоступными контейнерными приложениями. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-swarmstack.git
git@api.gitlife.ru:oschina-mirror/mirrors-swarmstack.git
oschina-mirror
mirrors-swarmstack
mirrors-swarmstack
master