На правах части резюме и просто понтов ради описываю свою домашнюю лабораторию.
Что у меня есть
- Этот сайт (Hugo + CI на GitHub, который собирает и раскатывает на сервер);
- Nextcloud (своё облако, календари, задачи, синхронизация контактов);
- VaultWarden (опенсорсный сервер для менеджера паролей и ключей BitWarden);
- TeamTalk5 (не обращайте внимания, это очень непопулярная история);
- Gitea (self-hosted альтернатива GitHub);
- NVDARemoteServer (для удалённого управления компьютерами со скринридером NVDA);
- HeadScale (см. ниже про сеть);
- Более десятка Telegram-ботов на Python и Go (часть написал сам);
Мониторинг
Со всего зоопарка серверов собираются метрики при помощи node-exporter, а также подключён сбор метрик из caddy для серверов, где крутятся сайты.
Данные собираются Prometheus, рядом с которым работает AlertManager с отправкой алертов в Telegram, а также Grafana, которой я пользуюсь достаточно редко, так как дашборды - штука визуальная и для незрячего девопса не сильно полезная.
Также, для централизованного сбора логов на всех серверах подняты promtail, а loki на центральном сервере всё это собирает и, конечно же, общается с AlertManager.
Мониторинг пока без репликации, но когда-нибудь я и до этого дозрею.
Docker пока не мониторится вообще, и это плохо. Планирую заняться этим в ближайшее время. Только недавно перевёз большинство сервисов в docker compose проекты, и ещё не дошёл до мониторинга.
Сеть
Все серверы связаны в сеть при помощи tailscale, где вместо проприетарного координатора используется его self-hosted-замена в виде HeadScale.
Общение между компонентами мониторинга происходит только через внутреннюю сеть, публичные IP серверов не прослушиваются. Ибо безопасность.
Остальных деталей не расскажу, ибо могут прийти и сделать “атата”, но, как вы понимаете, алерты в Telegram с российских серверов тоже надо было доставлять, и пришлось искать решения.
Бэкапы, куда же без них
Я, к сожалению, тот человек, который “уже делает бэкапы”.
Копии делаются со всех серверов и за неимением средств на крутое объектное хранилище складываются на два сервера с самым большим диском, разнесённые географически.
Уведомления об успешных бэкапах, также, как и об ошибках, отсылаются в Telegram.
По технологиям - borgbackup + borgmatic + ansible playbook для настройки и будущего обновления всего этого при необходимости (включая конфиги).
Как я всем этим управляю
Казалось бы, парк из 8 серверов уже заставляет задумываться о плотном погружении в ansible, но пока что я закрепил в нём только настройку бэкапов и соединение серверов частной сетью через tailscale.
В остальном - зачастую управляю руками, и лишь иногда пишу простенькие плейбуки на один раз.
Что по технологиям в целом
- docker (достаточно активно);
- NFTables (потому что очень люблю его синтаксис и удобство. Но дружить его с docker надо уметь);
- bash (очень активно, почти каждый день, сами понимаете, надо);
- ansible (см. выше. Пока не везде и не всегда);
До более серьёзных технологий вроде k8s ещё не дорос, да и не уверен, что на моих масштабах это реально нужно.
Планы
Большие компании о планах рассказывать не любят, ибо потом есть шанс опозориться, не сделав задуманное, или подарить идею конкурентам.
А я всего лишь админ-одиночка, поэтому вот:
- Полноценно овладеть Ansible и в идеале добиться того, чтобы всё и на всех серверах подчинялось идее infrastructure as code;
- Донастроить мониторинг и определиться с тем, какие именно метрики мне нужны, а какие можно и выкинуть (только место занимают);
- Перенести большинство репозиториев на свой Gitea, а GitHub оставить как зеркало, например для резюме (решение не без нюансов, ибо если можно не платить за GitHub Actions и деплоить оттуда, то почему бы и нет);
- Поднять свой стек для музыки (а то цензура на российских площадках достала, а Яндекс Музыка позволяет загрузить только до 10_000 своих треков);
- Научиться поднимать php-сайты в Docker (у больших проектов есть готовые образы, но почему бы не попробовать сделать всё самому).