Пройдусь немного по важной теории по поводу работы в консоли bash. Я в разное время всё это затрагивал в заметках, но информация размазана через большие промежутки в публикациях. Имеет смысл повторить базу.
Покажу сразу очень наглядный пример:
В первом случае ключ не сработал, а во втором сработал, хотя запускал вроде бы одно и то же. А на самом деле нет. В первом примере я запустил echo из состава оболочки bash, а во втором случае - это бинарник в файловой системе. Это по факту разные программы. У них даже ключи разные.
Узнать, что конкретно мы запускаем, проще всего через type:
В первом случае прямо указано, что echo - встроена в оболочку.
И ещё один очень характерный пример:
Очень часто ls это не утилита ls, а алиас с дополнительными параметрами.
Когда вы вводите команду в терминал, происходит следующее:
1️⃣ Проверяются алиасы. Если команда будет там найдена, то поиск остановится и она исполнится.
2️⃣ Далее команда проверяется, встроена в ли она в оболочку, или нет. Если встроена, то выполнится именно она.
3️⃣ Только теперь идёт поиск бинарника в директориях, определённых в
У последнего варианта тоже есть свои нюансы. У вас может быть несколько исполняемых файлов в разных директориях с одинаковым именем. Ситуация нередкая. Можно столкнуться при наличии разных версий python или php в системе. Поиск бинарника ведётся по порядку следования этих директорий в переменной слева направо.
Что раньше будет найдено в директориях, определённых в этой строке, то и будет исполнено.
И ещё важный нюанс по этой теме. Есть привычные команды из оболочки, которых нет в бинарниках. Например, cd.
В выводе последней команды пусто, то есть бинарника
А вот если вы cd используете в юните systemd, то ничего не заработает:
Вот так работать не будет. Systemd не будет запускать автоматом оболочку. Надо это явно указать:
То есть либо явно указывайте bash, либо запускайте скрипт, где bash будет прописан в шебанге.
❗️В связи с этим могу дать совет, который вам сэкономит кучу времени на отладке. Всегда и везде в скриптах, в кронах, в юнитах systemd и т.д. пишите полные пути до бинарников. Команда, в зависимости от пользователя, прав доступа и многих других условий, может быть запущена в разных оболочках и окружениях. Чтобы не было неожиданностей, пишите явно, что вы хотите запустить.
#bash #terminal
Покажу сразу очень наглядный пример:
# echo --version
--version
# /usr/bin/echo --version
echo (GNU coreutils) 9.1
В первом случае ключ не сработал, а во втором сработал, хотя запускал вроде бы одно и то же. А на самом деле нет. В первом примере я запустил echo из состава оболочки bash, а во втором случае - это бинарник в файловой системе. Это по факту разные программы. У них даже ключи разные.
Узнать, что конкретно мы запускаем, проще всего через type:
# type echo
echo is a shell builtin
# type /usr/bin/echo
/usr/bin/echo is /usr/bin/echo
В первом случае прямо указано, что echo - встроена в оболочку.
И ещё один очень характерный пример:
# type ls
ls is aliased to `ls --color=auto'
Очень часто ls это не утилита ls, а алиас с дополнительными параметрами.
Когда вы вводите команду в терминал, происходит следующее:
1️⃣ Проверяются алиасы. Если команда будет там найдена, то поиск остановится и она исполнится.
2️⃣ Далее команда проверяется, встроена в ли она в оболочку, или нет. Если встроена, то выполнится именно она.
3️⃣ Только теперь идёт поиск бинарника в директориях, определённых в
$PATH
.У последнего варианта тоже есть свои нюансы. У вас может быть несколько исполняемых файлов в разных директориях с одинаковым именем. Ситуация нередкая. Можно столкнуться при наличии разных версий python или php в системе. Поиск бинарника ведётся по порядку следования этих директорий в переменной слева направо.
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Что раньше будет найдено в директориях, определённых в этой строке, то и будет исполнено.
И ещё важный нюанс по этой теме. Есть привычные команды из оболочки, которых нет в бинарниках. Например, cd.
# type cd
cd is a shell builtin
# which cd
В выводе последней команды пусто, то есть бинарника
cd
нет. Если вы будете использовать cd в скриптах, то проблем у вас не будет, так как там обычно в шебанге указан интерпретатор. Обычно это bash или sh, и там cd присутствует.А вот если вы cd используете в юните systemd, то ничего не заработает:
ExecStart=cd /var/www/ ....... && .........
Вот так работать не будет. Systemd не будет запускать автоматом оболочку. Надо это явно указать:
ExecStart=/usr/bin/bash -с "cd /var/www/ ......."
То есть либо явно указывайте bash, либо запускайте скрипт, где bash будет прописан в шебанге.
❗️В связи с этим могу дать совет, который вам сэкономит кучу времени на отладке. Всегда и везде в скриптах, в кронах, в юнитах systemd и т.д. пишите полные пути до бинарников. Команда, в зависимости от пользователя, прав доступа и многих других условий, может быть запущена в разных оболочках и окружениях. Чтобы не было неожиданностей, пишите явно, что вы хотите запустить.
#bash #terminal
1👍177👎2
Несколько лет назад я уже писал про бесплатный Radmin VPN. Интересное простое решение для организации совместного доступа к группе компьютеров. На тот момент у меня создалось впечатление, что это какой-то полузаброшенный старый проект. Но на деле это оказалось не так. Основной продукт Radmin сервер продолжает развиваться, продаваться, и все бесплатные вспомогательные программы тоже потихоньку обновляются.
Radmin VPN — приложение только под Windows. После установки оно создаёт новое сетевое соединение, подключается к своему серверу, назначает компьютеру серый IP адрес с маской 255.0.0.0. Далее вы можете создать локальную сеть, закрытую отдельным паролем и собирать в эту сеть подключенные компьютеры.
Я проверил, как это работает. Установил Radmin VPN на 3 машины: Win10, Win11, WinSRV2019. Добавил их в единую сеть. Они сразу же увидели друг друга: стали пинговаться по своим серым адресам, заработал доступ к файлам через
Не знаю, насколько это безопасный способ подключения. Я так понял, что все клиенты этой сети сидят в общем адресном пространстве 26.0.0.0 с маской 255.0.0.0. Вы можете создавать публичные сети для совместной онлайн игры. Посмотрел на доступный список подобных сетей. Их очень много на разных языках. То есть продуктом реально пользуются по всему миру. Зашёл в одну такую публичную сеть - стал видеть все компы из этой сети по их серым IP адресам. Они видны, так как все участники сети отображаются в общем списке. Как только из общей сети выходишь, доступ к её членам по IP пропадает.
В целом, не вижу тут каких-то серьёзных сетевых проблем, если настроить файрвол и разрешить доступ только со своих серых IP адресов. Они статичны. Можно разрешить только те протоколы, что вам нужны. Например, RDP. У него своё шифрование, так что можно спокойно пользоваться поверх любых сетей.
А так в целом продукт очень простой для использования. Будет удобно для тех, кто не хочет или не может, не умеет, настраивать свои VPN серверы. Можно детей научить пользоваться, чтобы играли с приятелями в онлайн игры. Тот же Minecraft.
⇨ Сайт
Помимо Radmin VPN у этой компании есть ещё два неплохих бесплатных продукта для сисадминов, работающих с локальными сетями и пользователями:
▪️ Advanced IP Scanner
▪️ Advanced Port Scanner
Думаю, по названиям и так понятно, что эти программы делают - сканируют локалку, ищут хосты в ней и проверяют открытые порты.
#vpn
Radmin VPN — приложение только под Windows. После установки оно создаёт новое сетевое соединение, подключается к своему серверу, назначает компьютеру серый IP адрес с маской 255.0.0.0. Далее вы можете создать локальную сеть, закрытую отдельным паролем и собирать в эту сеть подключенные компьютеры.
Я проверил, как это работает. Установил Radmin VPN на 3 машины: Win10, Win11, WinSRV2019. Добавил их в единую сеть. Они сразу же увидели друг друга: стали пинговаться по своим серым адресам, заработал доступ к файлам через
\\26.210.121.198\c$
, подключение по RDP. Никаких настроек делать не пришлось, кроме подключения к созданной сети через клиента Radmin VPN. Сам софт доступен без регистрации и каких-то дополнительных действий. Не знаю, насколько это безопасный способ подключения. Я так понял, что все клиенты этой сети сидят в общем адресном пространстве 26.0.0.0 с маской 255.0.0.0. Вы можете создавать публичные сети для совместной онлайн игры. Посмотрел на доступный список подобных сетей. Их очень много на разных языках. То есть продуктом реально пользуются по всему миру. Зашёл в одну такую публичную сеть - стал видеть все компы из этой сети по их серым IP адресам. Они видны, так как все участники сети отображаются в общем списке. Как только из общей сети выходишь, доступ к её членам по IP пропадает.
В целом, не вижу тут каких-то серьёзных сетевых проблем, если настроить файрвол и разрешить доступ только со своих серых IP адресов. Они статичны. Можно разрешить только те протоколы, что вам нужны. Например, RDP. У него своё шифрование, так что можно спокойно пользоваться поверх любых сетей.
А так в целом продукт очень простой для использования. Будет удобно для тех, кто не хочет или не может, не умеет, настраивать свои VPN серверы. Можно детей научить пользоваться, чтобы играли с приятелями в онлайн игры. Тот же Minecraft.
⇨ Сайт
Помимо Radmin VPN у этой компании есть ещё два неплохих бесплатных продукта для сисадминов, работающих с локальными сетями и пользователями:
▪️ Advanced IP Scanner
▪️ Advanced Port Scanner
Думаю, по названиям и так понятно, что эти программы делают - сканируют локалку, ищут хосты в ней и проверяют открытые порты.
#vpn
1👍89👎1
iptables-proxmox.sh
4.8 KB
Поискал по каналу и не нашёл ни одной заметки, где бы я рассказал и показал на практике, как я настраиваю iptables на гипервизорах Proxmox. Я всегда в обязательном порядке это делаю. Не утверждаю, что так, как настраиваю я, правильно и наиболее подходящий вариант. Просто привык делать именно так, проблем с этим не было, поэтому закрепилось. Воспроизвожу из раза в раз эту настройку.
Порядок настройки следующий:
1️⃣ Сохраняю список правил в файл
Настройку делаю на чистом гипервизоре, поэтому даже если ошибусь где-то, то проблемы это не вызовет. Набор правил отлажен, обычно проблем нет, если не ошибся с именами интерфейсов.
2️⃣ Убеждаюсь, что после выполнения скрипта появился файл-экспорт с набором правил
Вешаю загрузку правил iptables на поднятие wan интерфейса.
3️⃣ Перезагружаю сервер и убеждаюсь, что всё нормально поднимается, правила применяются, доступ к серверу у меня есть.
4️⃣ Если нужно добавить или изменить какое-то правило, то правлю файл
Если у вас хост Proxmox выполняет роль шлюза, то не забудьте проверить, что параметр
В наборе правил пример с работающего сервера. На основе него можете сформировать свой набор правил. Я там некоторые правила закомментировал, так как нужны они будут не всем. Оставил их для примера.
Формирую набор правил именно в таком виде, потому что он мне кажется удобным и наглядным. Можно быстро оценить все правила, оставить комментарии, что-то добавить.
#proxmox #iptables
Порядок настройки следующий:
1️⃣ Сохраняю список правил в файл
/etc/iptables.sh
. Адаптирую под текущие условия гипервизора: меняю имена сетевых интерфейсов, IP адреса. Делаю его исполняемым. Обычно сразу же проверяю, просто запустив его. # mcedit /etc/iptables.sh
# chmod +x /etc/iptables.sh
# bash /etc/iptables.sh
# iptables -L -v -n
Настройку делаю на чистом гипервизоре, поэтому даже если ошибусь где-то, то проблемы это не вызовет. Набор правил отлажен, обычно проблем нет, если не ошибся с именами интерфейсов.
2️⃣ Убеждаюсь, что после выполнения скрипта появился файл-экспорт с набором правил
/etc/iptables.rules
. Добавляю применение правил в файл /etc/network/interfaces
:iface enp5s0 inet manual
post-up iptables-restore < /etc/iptables.rules
Вешаю загрузку правил iptables на поднятие wan интерфейса.
3️⃣ Перезагружаю сервер и убеждаюсь, что всё нормально поднимается, правила применяются, доступ к серверу у меня есть.
4️⃣ Если нужно добавить или изменить какое-то правило, то правлю файл
iptables.sh
, а когда закончу, запускаю его. Он обновляет набор правил в iptables.rules
, так что после перезагрузки хоста изменённые правила сохранятся.Если у вас хост Proxmox выполняет роль шлюза, то не забудьте проверить, что параметр
net.ipv4.ip_forward=1
активен в /etc/sysctl.conf
. Без него NAT для виртуалок не заработает. Точнее не сам нат, а передача пакетов между локальным и wan интерфейсом. Если в качестве шлюза для VM выступает отдельная VM, то как минимум из набора правил исчезает NAT и всё, что касается локалки и проброса портов. А на шлюз уезжает этот же шаблон с правилами и там правится по месту. В наборе правил пример с работающего сервера. На основе него можете сформировать свой набор правил. Я там некоторые правила закомментировал, так как нужны они будут не всем. Оставил их для примера.
Формирую набор правил именно в таком виде, потому что он мне кажется удобным и наглядным. Можно быстро оценить все правила, оставить комментарии, что-то добавить.
#proxmox #iptables
3👍145👎4
===============================
Регулярно встречаю мемы на тему Javascript. Я на нём программировать не умею, могу только что-то готовое подправить, так что не совсем понимаю. Эти мемы реально актуальные или это что-то из устаревшего? Там действительно какая-то особенная арифметика, что над ней постоянно шутят?
#юмор
Регулярно встречаю мемы на тему Javascript. Я на нём программировать не умею, могу только что-то готовое подправить, так что не совсем понимаю. Эти мемы реально актуальные или это что-то из устаревшего? Там действительно какая-то особенная арифметика, что над ней постоянно шутят?
#юмор
👍76👎8
Git - довольно замороченная система контроля версий. Не очень понятно, за что она завоевала такую популярность. Разобраться с ней - пуд соли съесть. Какие-то самые простые вещи делать не сложно. А вот если чуть копнуть, то там тёмный лес.
Об этом тёмном лесе даже сайт замутили с говорящим названием - ohshitgit.com. В англоязычном интернете он довольно популярен. Не раз видел на него ссылки. У нас особо не встречал. Есть две русские версии этого сайта.
⇨ Одна матерная - https://ohshitgit.com/ru
⇨ Вторая без мата - https://dangitgit.com/ru
Я кратко перечислю команды, которые там описаны, чтобы просто отложилось в голове информация о том, что так можно. Потом можно будет найти и посмотреть команду. О некоторых вещах просто не знаешь, хотя они много раз пригодились бы. Например, я только на этом сайте узнал, что текст последнего коммита, оказывается, можно спокойно изменить. Или то, что можно подправить последний коммит, если заметил, что какую-то опечатку или мелкую поправку не сделал, а не делать ещё один коммит.
📌 Журнал всех действий в репозитории:
Откатится на какое-то событие из этого списка:
📌 Добавить что-то в уже созданный коммит:
📌 Изменить сообщение последнего коммита:
📌 Перенести последний коммит из мастер ветки в новую ветку:
📌 Отменить коммит, который был 5 коммитов назад:
📌 Отменить изменения в файле:
Для тех, кто не видел, оставлю ссылку на публикацию с подбором хороших обучающих материалов по git:
🎓 Подборка бесплатных материалов по GIT
#обучение #git
Об этом тёмном лесе даже сайт замутили с говорящим названием - ohshitgit.com. В англоязычном интернете он довольно популярен. Не раз видел на него ссылки. У нас особо не встречал. Есть две русские версии этого сайта.
⇨ Одна матерная - https://ohshitgit.com/ru
⇨ Вторая без мата - https://dangitgit.com/ru
Я кратко перечислю команды, которые там описаны, чтобы просто отложилось в голове информация о том, что так можно. Потом можно будет найти и посмотреть команду. О некоторых вещах просто не знаешь, хотя они много раз пригодились бы. Например, я только на этом сайте узнал, что текст последнего коммита, оказывается, можно спокойно изменить. Или то, что можно подправить последний коммит, если заметил, что какую-то опечатку или мелкую поправку не сделал, а не делать ещё один коммит.
📌 Журнал всех действий в репозитории:
# git reflog
Откатится на какое-то событие из этого списка:
# git reset HEAD@{index}
📌 Добавить что-то в уже созданный коммит:
# git add .
# git commit --amend --no-edit
📌 Изменить сообщение последнего коммита:
# git commit --amend
📌 Перенести последний коммит из мастер ветки в новую ветку:
# git branch какое-то-имя-новой-ветки
# git reset HEAD~ --hard
# git checkout какое-то-имя-новой-ветки
📌 Отменить коммит, который был 5 коммитов назад:
# git log
# git revert [сохранённый хеш]
📌 Отменить изменения в файле:
# git log
# git checkout [сохранённый хеш] -- путь/к/файлу
# git commit -m "Ого, теперь не придётся копипастить, чтобы отменить изменения!"
Для тех, кто не видел, оставлю ссылку на публикацию с подбором хороших обучающих материалов по git:
🎓 Подборка бесплатных материалов по GIT
#обучение #git
Telegram
ServerAdmin.ru
🎓 Мне давно скидывали ссылку на небольшой курс по GIT на youtube для начинающих. Там с самых азов даётся инфа для тех, кто с GIT никогда не работал. Только сейчас дошли руки посмотреть. Вроде неплохо сделано, послушал введение. Комментарии хорошие, просмотров…
1👍116👎17
В выходные прочитал интересную статью:
⇨ Как настроить веб-приложение под высокие нагрузки
Первый раз попал на этот ресурс. Понравилось качество контента. С удовольствием прочитал несколько статей. Эта понравилась больше всего, поэтому решил поделиться и сделать небольшую выжимку для тех, кто не захочет тратить время на весь материал. Там есть интересные для админов моменты.
Автор рассказал, как один проект лавинообразно начал расти и тормозить под нагрузкой во время пандемии, когда его посещаемость выросла в разы. Он поэтапно описал, как они изменяли железо, настройки, архитектуру приложения.
Изначально это был небольшой проект на PHP и его фреймворке Symfony, который писали 3-5 проектировщиков. СУБД была PostgreSQL, под кэш Redis, написана API и очередь для неё на RabbitMQ. Такое типовое классическое веб приложение. Проект располагался на 16 физических серверах, фронтенды и бэкенды — по 24 ядра и 128 ОЗУ каждый, ноды СУБД имели 56 ядер и 512 ГБ ОЗУ.
Огромную помощью в решении возникающих проблем оказывал мониторинг. Он был реализован на базе Zabbix, Symfony Profiler, Cockpit, DBeaver, Nginx Amplify.
🔹Одним из узких мест оказались логи Nginx. Была включена буферизация логов. В момент скидывания буферов на диск, они тормозили. Временно перенесли логи в RAM-диски (tmpfs). Потом перенастроили систему хранения логов.
🔹Другим узким местом была главная страница. Её целиком закешировали и поместили в Redis. Далее весь код перетряхнули и по возможности настроили использование кэша в Redis. После этого Redis вынесли в отдельный кластер. Это привело к тому, что даже в границах одной серверной и максимально быстрой сети, кэш стал работать медленнее, а на саму локалку сильно выросла сетевая нагрузка. Пришлось разбить кэш на 2 уровня. Первый хранить в локальных инстансах Redis, а второй в отдельном кластере с доступом по сети.
🔹Для разгрузки СУБД установили PgBouncer для управления пулом соединений, постановки их в очередь, если всё занято. Один огромный сервер под СУБД распили на кластер из 5-ти серверов. Запросы к кластеру стали распределять с помощью PGPool. INSERT, UPDATE, DELETE отправляли на Master, всё остальное распределяли между остальными серверами.
🔹В какой-то момент все серверные мощности были нагружены на 70-80%. Это стало приводить к проблемам, когда что-то из железа выходило из строя. Пришлось добавить серверов, чтобы нагрузка стала 40-50%.
🔹Далее упёрлись в ёмкость входного канала. Пришлось переходить на использование геораспределённой CDN.
#perfomance
⇨ Как настроить веб-приложение под высокие нагрузки
Первый раз попал на этот ресурс. Понравилось качество контента. С удовольствием прочитал несколько статей. Эта понравилась больше всего, поэтому решил поделиться и сделать небольшую выжимку для тех, кто не захочет тратить время на весь материал. Там есть интересные для админов моменты.
Автор рассказал, как один проект лавинообразно начал расти и тормозить под нагрузкой во время пандемии, когда его посещаемость выросла в разы. Он поэтапно описал, как они изменяли железо, настройки, архитектуру приложения.
Изначально это был небольшой проект на PHP и его фреймворке Symfony, который писали 3-5 проектировщиков. СУБД была PostgreSQL, под кэш Redis, написана API и очередь для неё на RabbitMQ. Такое типовое классическое веб приложение. Проект располагался на 16 физических серверах, фронтенды и бэкенды — по 24 ядра и 128 ОЗУ каждый, ноды СУБД имели 56 ядер и 512 ГБ ОЗУ.
Огромную помощью в решении возникающих проблем оказывал мониторинг. Он был реализован на базе Zabbix, Symfony Profiler, Cockpit, DBeaver, Nginx Amplify.
🔹Одним из узких мест оказались логи Nginx. Была включена буферизация логов. В момент скидывания буферов на диск, они тормозили. Временно перенесли логи в RAM-диски (tmpfs). Потом перенастроили систему хранения логов.
🔹Другим узким местом была главная страница. Её целиком закешировали и поместили в Redis. Далее весь код перетряхнули и по возможности настроили использование кэша в Redis. После этого Redis вынесли в отдельный кластер. Это привело к тому, что даже в границах одной серверной и максимально быстрой сети, кэш стал работать медленнее, а на саму локалку сильно выросла сетевая нагрузка. Пришлось разбить кэш на 2 уровня. Первый хранить в локальных инстансах Redis, а второй в отдельном кластере с доступом по сети.
🔹Для разгрузки СУБД установили PgBouncer для управления пулом соединений, постановки их в очередь, если всё занято. Один огромный сервер под СУБД распили на кластер из 5-ти серверов. Запросы к кластеру стали распределять с помощью PGPool. INSERT, UPDATE, DELETE отправляли на Master, всё остальное распределяли между остальными серверами.
🔹В какой-то момент все серверные мощности были нагружены на 70-80%. Это стало приводить к проблемам, когда что-то из железа выходило из строя. Пришлось добавить серверов, чтобы нагрузка стала 40-50%.
🔹Далее упёрлись в ёмкость входного канала. Пришлось переходить на использование геораспределённой CDN.
#perfomance
1👍118👎3
Расскажу про небольшую прикладную программу, которая в некоторых случаях может упростить жизнь. Речь пойдёт про веб панель OliveTin, которая позволяет через веб интерфейс управлять задачами, которые можно запустить с локального сервера. То есть по сути это удобная запускалка скриптов.
Особенность OliveTin в том, что сделана красиво, аккуратно, удобно. Очевидно, что подобные задачи можно решать очень большим количеством способов. Например, когда мне нужно было отдать кому-то возможность запуска скриптов, я устанавливал Webmin и оказывал, куда там тыкать. В OliveTin это настроить проще и удобнее.
Сразу приведу примеры некоторых задач, которые можно решать с помощью OliveTin:
✅ Запуск какой-то личной инфраструктуры через WOL. Я, кстати, эту же задачу решаю через скрипты в Mikrotik. Подключаюсь к домашнему микроту и запускаю то, что мне нужно. Уже много лет так делаю. То же самое можно сделать через OliveTin. Это будет удобнее, если есть постоянно работающая виртуалка. У меня иногда выключено всё, поэтому Mikrotik мне подходит.
✅ Запуск скриптов на каком-то тестовом сервере, которые будут накатывать свежую версию исходников или базы данных. Можно настроить OliveTin, скрипты и отдать всё это дело разработчикам. Пусть сами актуализируют свой тестовый сервер.
✅ Можно настроить какой-то сервер в качестве тестового для проверки на нём бэкапов. Написать скрипты, которые будут забирать бэкапы и разворачивать их тут локально. Время от времени запускать это вручную и проверять результат. Как я уже писал ранее в заметках, я рекомендую время от времени вручную проверять свои бэкапы на возможность восстановления.
✅ Настроить дома веб панель для того, чтобы жена могла с одной страницы потушить различное оборудование дома. Не знаю, насколько это актуально для других, но у меня дома полно компов и ноутов, которые желательно на ночь выключать. Я это делаю через дашборд Zabbix Server сам. Писал об этом заметку. Если делегировать другим, то лучше использовать более простое и понятное решение, типа OliveTin.
В основном всё это актуально тогда, когда задачи нужно делегировать кому-то, кто не умеет, не хочет или ему не положено ходить в консоль. На работе можно каким-то помощникам скинуть рутину, дома домашним что-то настроить.
Установить OliveTin максимально просто. Есть пакеты, контейнеры, экзешники под все популярные системы и архитектуры. Полный список в репозитории. Показываю на примере Debian:
Можно идти по ip адресу на порт 1337 и смотреть, как это выглядит. Там уже будут настроены полтора десятка различных действий для демонстрации возможностей. Можно быстро оценить как это всё выглядит.
Все настройки хранятся в директории /etc/OliveTin, в том числе в основном файле config.yaml. Формат конфига, как можно понять из названия, yaml. В нём уже присутствуют и хорошо прокомментированы все настроенные действия. По аналогии можно настраивать свои.
Вот пример для запуска локального скрипта:
А вот для рестарта Docker контейнеров:
Можно выполнить что-то на удалённом сервере через подключение по SSH:
Думаю, логика понятна.
⇨🌐 Сайт / 4️⃣ Исходники / ▶️ Обзор
#управление
Особенность OliveTin в том, что сделана красиво, аккуратно, удобно. Очевидно, что подобные задачи можно решать очень большим количеством способов. Например, когда мне нужно было отдать кому-то возможность запуска скриптов, я устанавливал Webmin и оказывал, куда там тыкать. В OliveTin это настроить проще и удобнее.
Сразу приведу примеры некоторых задач, которые можно решать с помощью OliveTin:
✅ Запуск какой-то личной инфраструктуры через WOL. Я, кстати, эту же задачу решаю через скрипты в Mikrotik. Подключаюсь к домашнему микроту и запускаю то, что мне нужно. Уже много лет так делаю. То же самое можно сделать через OliveTin. Это будет удобнее, если есть постоянно работающая виртуалка. У меня иногда выключено всё, поэтому Mikrotik мне подходит.
✅ Запуск скриптов на каком-то тестовом сервере, которые будут накатывать свежую версию исходников или базы данных. Можно настроить OliveTin, скрипты и отдать всё это дело разработчикам. Пусть сами актуализируют свой тестовый сервер.
✅ Можно настроить какой-то сервер в качестве тестового для проверки на нём бэкапов. Написать скрипты, которые будут забирать бэкапы и разворачивать их тут локально. Время от времени запускать это вручную и проверять результат. Как я уже писал ранее в заметках, я рекомендую время от времени вручную проверять свои бэкапы на возможность восстановления.
✅ Настроить дома веб панель для того, чтобы жена могла с одной страницы потушить различное оборудование дома. Не знаю, насколько это актуально для других, но у меня дома полно компов и ноутов, которые желательно на ночь выключать. Я это делаю через дашборд Zabbix Server сам. Писал об этом заметку. Если делегировать другим, то лучше использовать более простое и понятное решение, типа OliveTin.
В основном всё это актуально тогда, когда задачи нужно делегировать кому-то, кто не умеет, не хочет или ему не положено ходить в консоль. На работе можно каким-то помощникам скинуть рутину, дома домашним что-то настроить.
Установить OliveTin максимально просто. Есть пакеты, контейнеры, экзешники под все популярные системы и архитектуры. Полный список в репозитории. Показываю на примере Debian:
# wget https://github.com/OliveTin/OliveTin/releases/download/2024.09.11/OliveTin_linux_amd64.deb
# dpkg -i OliveTin_linux_amd64.deb
# systemctl start OliveTin
Можно идти по ip адресу на порт 1337 и смотреть, как это выглядит. Там уже будут настроены полтора десятка различных действий для демонстрации возможностей. Можно быстро оценить как это всё выглядит.
Все настройки хранятся в директории /etc/OliveTin, в том числе в основном файле config.yaml. Формат конфига, как можно понять из названия, yaml. В нём уже присутствуют и хорошо прокомментированы все настроенные действия. По аналогии можно настраивать свои.
Вот пример для запуска локального скрипта:
- title: Run backup script
shell: /opt/backupScript.sh
shellAfterCompleted: "apprise -t 'Notification: Backup script completed' -b 'The backup script completed with code {{ exitCode}}. The log is: \n {{ output }} '"
maxConcurrent: 1
timeout: 10
icon: backup
popupOnStart: execution-dialog
А вот для рестарта Docker контейнеров:
- title: Restart Docker Container
icon: restart
shell: docker restart {{ container }}
arguments:
- name: container
title: Container name
choices:
- value: plex
- value: traefik
- value: grafana
Можно выполнить что-то на удалённом сервере через подключение по SSH:
- title: Restart httpd on server1
id: restart_httpd
icon: restart
timeout: 1
shell: ssh -F /config/ssh/easy.cg root@server1 'service httpd restart'
Думаю, логика понятна.
⇨
#управление
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍100👎3
Недавно рассказывал про бесплатную версию Veeam Backup & Replication Community Edition. В дополнение к нему есть другой бесплатный продукт - Veeam ONE Community Edition. С главной страницы сайта я не смог его найти. Помог поиск в гугле по соответствующему запросу, чтобы попасть на страницу продукта. Это бесплатная версия мониторинга для сервера Veeam Backup & Replication и хостов виртуализации.
Мне стало интересно, во-первых, посмотреть на этот продукт, так как ранее вообще не был с ним знаком и никогда не видел. А во-вторых посмотреть, поддерживает ли он мониторинг недавно добавленного в Backup & Replication Proxmox. На второй вопрос отвечу сразу. Veeam ONE поддерживает в качестве серверов виртуализации только VMware и Hyper-V. Больше ничего.
Я установил Veeam ONE Community Edition (прямая ссылка ~2.5 ГБ) и подключил к нему бесплатный Veeam Backup & Replication и один из хостов Hyper-V. Продукт удобный, ничего не скажешь. Просто добавляешь сервер и получаешь готовый мониторинг и управление. Ограничение бесплатной версии - 10 объектов мониторинга. Из описания не очень понятно, одна виртуалка гипервизора - это один объект мониторинга, или подсчёт идёт по добавленным сущностям в мониторинг в виде отдельных серверов. Виртуалки он потом сам определяет на гипервизоре, в том числе неактивные.
Monitoring for up to 10 workloads with ANY combination of Veeam Backup & Replication, Veeam Agent for Microsoft Windows or for Linux workloads, including vSphere and Hyper-V infrastructures with no license required!
На удалённые машины можно установить Veeam ONE Client, чтобы подключаться к серверу. То есть не обязательно запускать его локально. Так же есть веб версия для подключения через браузер. Если вам хватает ограничений бесплатного Backup & Replication, то не вижу причин не использовать ещё и Veeam ONE. Хорошее дополнение к первому продукту.
В Veeam ONE в единой консоли управления вы получаете доступ к основным метрикам и событиям Veeam B&R: загрузки хранилищ и полосы пропускания, статусы задач архивации, метрики производительности, журнал задач и т.д. Можно настроить оповещения на какие-то события. Для виртуальной инфраструктуры доступны стандартные метрики производительности как хостов, так и виртуальных машин, подключенных хранилищ, обзор занятых и свободных ресурсов и т.д. Оповещения и основные триггеры преднастроены, так что система сразу после установки готова к работе. Дальнейшее допиливание можно делать по желанию. Настраивается всё довольно просто и интуитивно мышкой в панели управления.
#мониторинг
🦖 Selectel — дешёвые и не очень дедики с аукционом!
Мне стало интересно, во-первых, посмотреть на этот продукт, так как ранее вообще не был с ним знаком и никогда не видел. А во-вторых посмотреть, поддерживает ли он мониторинг недавно добавленного в Backup & Replication Proxmox. На второй вопрос отвечу сразу. Veeam ONE поддерживает в качестве серверов виртуализации только VMware и Hyper-V. Больше ничего.
Я установил Veeam ONE Community Edition (прямая ссылка ~2.5 ГБ) и подключил к нему бесплатный Veeam Backup & Replication и один из хостов Hyper-V. Продукт удобный, ничего не скажешь. Просто добавляешь сервер и получаешь готовый мониторинг и управление. Ограничение бесплатной версии - 10 объектов мониторинга. Из описания не очень понятно, одна виртуалка гипервизора - это один объект мониторинга, или подсчёт идёт по добавленным сущностям в мониторинг в виде отдельных серверов. Виртуалки он потом сам определяет на гипервизоре, в том числе неактивные.
Monitoring for up to 10 workloads with ANY combination of Veeam Backup & Replication, Veeam Agent for Microsoft Windows or for Linux workloads, including vSphere and Hyper-V infrastructures with no license required!
На удалённые машины можно установить Veeam ONE Client, чтобы подключаться к серверу. То есть не обязательно запускать его локально. Так же есть веб версия для подключения через браузер. Если вам хватает ограничений бесплатного Backup & Replication, то не вижу причин не использовать ещё и Veeam ONE. Хорошее дополнение к первому продукту.
В Veeam ONE в единой консоли управления вы получаете доступ к основным метрикам и событиям Veeam B&R: загрузки хранилищ и полосы пропускания, статусы задач архивации, метрики производительности, журнал задач и т.д. Можно настроить оповещения на какие-то события. Для виртуальной инфраструктуры доступны стандартные метрики производительности как хостов, так и виртуальных машин, подключенных хранилищ, обзор занятых и свободных ресурсов и т.д. Оповещения и основные триггеры преднастроены, так что система сразу после установки готова к работе. Дальнейшее допиливание можно делать по желанию. Настраивается всё довольно просто и интуитивно мышкой в панели управления.
#мониторинг
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍68👎5
Пару лет назад я собрал в одну статью все свои заметки на тему полностью или частично бесплатных программ для инвентаризации и учёта оборудования. Вот статья на эту тему на сайте:
⇨ Топ 10 программ для инвентаризации оборудования
В ней перечислены следующие программы:
◽GLPI
◽Snipe-IT
◽Tactical RMM
◽Ralph
◽ITop
◽NetBox
◽I-doit
◽Lansweeper
◽Algorius
◽Spiceworks
◽DataGerry
Насколько я знаю, самым популярным и функциональным является GLPI. Несмотря на то, что это очень старый продукт, написанный на PHP, он продолжает развиваться: большая активность на github, регулярно выходят новые релизы. Есть свой агент для сбора данных с управляемых систем. Дополнительно можно развернуть HelpDesk систему. Причём она там не для галочки, а вполне функциональна. Есть встроенная база знаний, учёт финансов, серверных стоек и много что ещё.
Для учёта только серверных ресурсов в виде серверов, стоек, виртуалок и всей сопутствующей сетевой инфраструктуры, самым популярным будет Netbox.
Я сходу не нашёл чего-то интересного, чем можно было бы дополнить список из того, о чём ещё не писал. Может кто-то из вас успешно использует что-то другое? Или просто хочет поделиться известной программой на эту тему. Напишите о них в комментариях. Я посмотрю, напишу заметки и дополню подборку как тут в Telegram, так и на сайте.
#управление #ITSM #подборка
🦖 Selectel — дешёвые и не очень дедики с аукционом!
⇨ Топ 10 программ для инвентаризации оборудования
В ней перечислены следующие программы:
◽GLPI
◽Snipe-IT
◽Tactical RMM
◽Ralph
◽ITop
◽NetBox
◽I-doit
◽Lansweeper
◽Algorius
◽Spiceworks
◽DataGerry
Насколько я знаю, самым популярным и функциональным является GLPI. Несмотря на то, что это очень старый продукт, написанный на PHP, он продолжает развиваться: большая активность на github, регулярно выходят новые релизы. Есть свой агент для сбора данных с управляемых систем. Дополнительно можно развернуть HelpDesk систему. Причём она там не для галочки, а вполне функциональна. Есть встроенная база знаний, учёт финансов, серверных стоек и много что ещё.
Для учёта только серверных ресурсов в виде серверов, стоек, виртуалок и всей сопутствующей сетевой инфраструктуры, самым популярным будет Netbox.
Я сходу не нашёл чего-то интересного, чем можно было бы дополнить список из того, о чём ещё не писал. Может кто-то из вас успешно использует что-то другое? Или просто хочет поделиться известной программой на эту тему. Напишите о них в комментариях. Я посмотрю, напишу заметки и дополню подборку как тут в Telegram, так и на сайте.
#управление #ITSM #подборка
🦖 Selectel — дешёвые и не очень дедики с аукционом!
Server Admin
Топ 10 программ для инвентаризации оборудования | serveradmin.ru
Подборка полностью или частично бесплатных программ для инвентаризации, учёта оборудования и других IT ресурсов.
3👍83👎3
За время ведения канала накопились сотни заметок про различные продукты. Понятно, что я не пользуюсь всем тем, что тут описываю. Но некоторые продукты, с которыми я познакомился впервые во время написания заметок, я стал использовать постоянно.
У меня появилась идея составить небольшой список того, что я описывал и чем стал постоянно пользоваться сам для своих нужд и что точно могу порекомендовать. Список неполный, потому что что-то забыл, а чем-то пользовался и перестал. Просто прошёлся по своему ноуту и смартфону и вот, что получилось.
▪️Parsec - подключение и управление удалённым компьютером. Кто-то посоветовал в комментариях. Я попробовал, с тех пор так и пользуюсь для своих нужд. Сервис бесплатный, работает нормально.
▪️SwitchyOmega - расширение браузера для управлением настройками прокси. Пользуюсь постоянно. У меня сделано так. Есть VPS во вне с настроенным privoxy, он по VPN соединён с VPS в РФ. Я со своих устройств подключаюсь по VPN к VPS в РФ и получаю доступ через VPN к VPS во вне. В расширении настроено использование IP адреса VPS во вне в качестве прокси. На какие-то сайты хожу напрямую, на какие-то через прокси. При такой схеме не надо ничего настраивать на компах. Они всегда подключаются к VPS в РФ. А к нему уже можно любыми другими способами подключать внешние VPS.
▪️Gatus - про этот мониторинг не так давно писал. Очень понравился. Много всего на нём настроил, пользуюсь постоянно.
▪️UptimeRobot - ещё один бесплатный мониторинг с удобным приложением для смартфона. Пользуюсь постоянно.
▪️Joplin - хранение личных заметок. Про программу много раз писал, не буду повторяться. Можно через поиск на канале посмотреть. Пользуюсь несколько лет.
▪️LocalSend - прямая передача файлов между устройствами. Очень удобная программа, дома сразу прижилась. Поставил на все домашние компы, ноуты, смартфоны. Удобно перекидывать файлы напрямую с устройства на устройство. Дал каждому устройству осмысленное название и теперь легко передавать файлы, куда тебе надо.
▪️LibreWolf - форк Firefox. Постоянно пользуюсь портабельной версией этого браузера, если он где-то нужен. На рабочем ноуте тоже стоит, закидываю туда доверие к сертификатам и хожу на всякие железки, веб интерфейсы без предупреждений безопасности. В систему не хочется тащить все эти сертификаты.
▪️Visual Studio - известный редактор. Когда-то давно написал про него, в то время, как пользовался Atom. В итоге переполз на Visual Studio и постоянно использую.
▪️ThrottleStop - управление частотой процессора. Не особо известная программа, но меня в своё время выручила ещё на прошлом ноуте. Её удобно использовать для управления производительностью процессора на ноутбуке. Настроил в ней профили и переключаю, вместо использования штатных приблуд. Эта удобнее и работает чётко. Если указал, что не троттлить, то пока проц не перегреется, будет работать на максимальной частоте.
▪️Scrcpy - подключение с компа к экрану Android смартфона. Простая и удобная программа. Можно даже в игрушки играть с компа, если сильно хочется. Отклик картинки отличный.
#разное
🦖 Selectel — дешёвые и не очень дедики с аукционом!
У меня появилась идея составить небольшой список того, что я описывал и чем стал постоянно пользоваться сам для своих нужд и что точно могу порекомендовать. Список неполный, потому что что-то забыл, а чем-то пользовался и перестал. Просто прошёлся по своему ноуту и смартфону и вот, что получилось.
▪️Parsec - подключение и управление удалённым компьютером. Кто-то посоветовал в комментариях. Я попробовал, с тех пор так и пользуюсь для своих нужд. Сервис бесплатный, работает нормально.
▪️SwitchyOmega - расширение браузера для управлением настройками прокси. Пользуюсь постоянно. У меня сделано так. Есть VPS во вне с настроенным privoxy, он по VPN соединён с VPS в РФ. Я со своих устройств подключаюсь по VPN к VPS в РФ и получаю доступ через VPN к VPS во вне. В расширении настроено использование IP адреса VPS во вне в качестве прокси. На какие-то сайты хожу напрямую, на какие-то через прокси. При такой схеме не надо ничего настраивать на компах. Они всегда подключаются к VPS в РФ. А к нему уже можно любыми другими способами подключать внешние VPS.
▪️Gatus - про этот мониторинг не так давно писал. Очень понравился. Много всего на нём настроил, пользуюсь постоянно.
▪️UptimeRobot - ещё один бесплатный мониторинг с удобным приложением для смартфона. Пользуюсь постоянно.
▪️Joplin - хранение личных заметок. Про программу много раз писал, не буду повторяться. Можно через поиск на канале посмотреть. Пользуюсь несколько лет.
▪️LocalSend - прямая передача файлов между устройствами. Очень удобная программа, дома сразу прижилась. Поставил на все домашние компы, ноуты, смартфоны. Удобно перекидывать файлы напрямую с устройства на устройство. Дал каждому устройству осмысленное название и теперь легко передавать файлы, куда тебе надо.
▪️LibreWolf - форк Firefox. Постоянно пользуюсь портабельной версией этого браузера, если он где-то нужен. На рабочем ноуте тоже стоит, закидываю туда доверие к сертификатам и хожу на всякие железки, веб интерфейсы без предупреждений безопасности. В систему не хочется тащить все эти сертификаты.
▪️Visual Studio - известный редактор. Когда-то давно написал про него, в то время, как пользовался Atom. В итоге переполз на Visual Studio и постоянно использую.
▪️ThrottleStop - управление частотой процессора. Не особо известная программа, но меня в своё время выручила ещё на прошлом ноуте. Её удобно использовать для управления производительностью процессора на ноутбуке. Настроил в ней профили и переключаю, вместо использования штатных приблуд. Эта удобнее и работает чётко. Если указал, что не троттлить, то пока проц не перегреется, будет работать на максимальной частоте.
▪️Scrcpy - подключение с компа к экрану Android смартфона. Простая и удобная программа. Можно даже в игрушки играть с компа, если сильно хочется. Отклик картинки отличный.
#разное
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍128👎4
Если хотите быстро потестировать настройки веб сервера на предмет ограничения числа одновременных соединений в Nginx совместно с баном Fail2Ban, могу предложить готовый публичный сервис:
⇨ https://loadest.nodes-studio.com
Он вообще платный, причём принимает оплату в Bitcoin, что сразу вызывает подозрение. Так выглядят платные панели управления для ддоса. Подобных сервисов много и они не особо шифруются, а представляют себя как услуги по тестированию сайтов.
Этот сервис даёт небольшой тестовый баланс, который позволяет побомбить запросами какой-то сайт. Причём любой. Достаточно указать его адрес с главной страницы и свою почту (не проверяется), на которую будет зарегистрирован личный кабинет. В нём сразу же начнётся тест по нагрузке сайта.
Я толком не понял, с какой интенсивностью происходит тестирование, так как у меня все IP адреса сервиса улетели в бан за превышение лимита в 30 запросов в секунду с одного IP. Отработала настройка Nginx:
И фильтр Fail2Ban на записи о превышении этого лимита в лог файле nginx error.log с соответствующей строкой:
Забанил IP адреса в соответствии вот с этим правилом:
Не рассказываю подробно о настройке Fail2Ban, так как заметка не про него, а про сервис. Мне понравилось, что без лишних телодвижений запустил тестирование с посторонних IP. Мой указанный почтовый ящик, кстати, был указан в referrer запросов от сервиса:
Сервис, судя по всему, российский. Посмотрел заголовки писем, которые он шлёт. Там почтовый сервер из зоны .ru используется. И бомбил он меня российскими IP адресами.
#нагрузочное_тестирование #webserver
🦖 Selectel — дешёвые и не очень дедики с аукционом!
⇨ https://loadest.nodes-studio.com
Он вообще платный, причём принимает оплату в Bitcoin, что сразу вызывает подозрение. Так выглядят платные панели управления для ддоса. Подобных сервисов много и они не особо шифруются, а представляют себя как услуги по тестированию сайтов.
Этот сервис даёт небольшой тестовый баланс, который позволяет побомбить запросами какой-то сайт. Причём любой. Достаточно указать его адрес с главной страницы и свою почту (не проверяется), на которую будет зарегистрирован личный кабинет. В нём сразу же начнётся тест по нагрузке сайта.
Я толком не понял, с какой интенсивностью происходит тестирование, так как у меня все IP адреса сервиса улетели в бан за превышение лимита в 30 запросов в секунду с одного IP. Отработала настройка Nginx:
limit_req_zone $binary_remote_addr zone=lim_20r:10m rate=20r/s;
И фильтр Fail2Ban на записи о превышении этого лимита в лог файле nginx error.log с соответствующей строкой:
limiting requests, excess: 30.080 by zone "lim_20r", client: 194.87.110.21
Забанил IP адреса в соответствии вот с этим правилом:
[Definition]
ngx_limit_req_zones = [^"]+
failregex = ^\s*\[[a-z]+\] \d+#\d+: \*\d+ limiting requests, excess: [\d\.]+ by zone "(?:%(ngx_limit_req_zones)s)", client: <HOST>,
ignoreregex =.
datepattern = {^LN-BEG}
Не рассказываю подробно о настройке Fail2Ban, так как заметка не про него, а про сервис. Мне понравилось, что без лишних телодвижений запустил тестирование с посторонних IP. Мой указанный почтовый ящик, кстати, был указан в referrer запросов от сервиса:
referer=https://loadest.io user_agent="<[email protected]> via https://loadest.io"
Сервис, судя по всему, российский. Посмотрел заголовки писем, которые он шлёт. Там почтовый сервер из зоны .ru используется. И бомбил он меня российскими IP адресами.
#нагрузочное_тестирование #webserver
Please open Telegram to view this post
VIEW IN TELEGRAM
👍50👎1
Расскажу небольшую историю из практики, которая недавно случилась с одним из арендованных серверов, где был установлен Proxmox и крутились несколько виртуалок. В какой-то момент с сервером начали происходить странности.
Сначала пару раз аварийно перезагрузилась виртуалка с Windows. Я немного напрягся, но было не понятно, с чем это связно. Система поднималась и продолжала дальше работать. В логах ничего информативного. Подумал на глюки самой системы. Потом начали подвисать виртуалки и с Linux. То одна, то другая. Причём так висли странно, как-будто отваливалось хранилище. Сильно росла LA из-за дисковой очереди. Приходилось им делать reset средствами гипервизора. В какой-то момент завис он сам, аж пинговаться перестал. Тут я понял, что с самим сервером проблемы.
Написал в тех. поддержку, спросил, можно ли просто диски перекинуть в другой аналогичный сервер, так как с этим явно начались проблемы после нескольких лет нормальной бесперебойной работы. Мне предложили провести сначала тестирование железа, что занимает 2-3 часа, и если проблемы с ним, то диски перекинут. Мне не захотелось этим заниматься, так как не вижу большого смысла. Сервер явно заглючил. Зависал не часто, где-то раз в 2-3 недели глючила одна из вируталок, а сам он завис ну может пару раз только. То есть глюк плавающий и неочевидный, не воспроизводится. Прошло, наверное, пару месяцев, пока я понял, что глючит сам сервер.
Взял в аренду другой сервер, настроил. Запланировал время и часть виртуалок перекинул через PBS. Подключил одно и то же хранилище к обоим серверам. На первом бэкапил, на второй восстанавливал. Это максимально простой способ, вообще заморачиваться не надо, переезжает VM со всеми настройками. Всё прошло штатно, но долго, так как сначала делается бэкап, потом восстановление. Для виртулаок на сотни гигов это занимает приличное время.
Для минимизации простоя больших виртуалок останавливал их и просто перекидывал qcow2 файлы с дисками. Я за это и люблю этот формат. Если надо быстро переехать, то это сделать максимально просто. Создаю на втором гипервизоре виртуалку с идентичными настройками, как на первом и просто копирую диск виртуальной машины. Получается максимальная скорость переноса и минимально возможный простой.
Так за пару вечеров переехал, старый сервер снял с оплаты. Удобно, когда сервера в аренде. Помню когда-то давно у меня так свой сервер в серверной глючил как-то неявно. Столько крови попил. Запасного под боком не было. Пришлось по текущим раскидывать нагрузку и отправлять его в ремонт, так как дорогой был.
Современные облачные технологии сняли целый пласт проблем с инженеров, связанные с железом. Можно вообще с ним не сталкиваться. Мне приходится, так как в малом и среднем бизнесе облачные вычислительные мощности слишком дороги и не окупаются. К примеру, этот сервер много лет работал в одиночку, раз в сутки бэкапился. Для него простой в несколько часов допустим, так что нет смысла вкладывать какие-то деньги в резервирование и отказоустойчивость. Бэкапов достаточно. Недавно нужно было просчитать работу довольно мощного сервера в режиме 24/7 с минимальным простоем, с круглосуточной тех. поддержкой. Это дорогое удовольствие, так как и резервирование (реально нужно 3 сервера), и такая поддержка стоят приличных денег.
#железо
🦖 Selectel — дешёвые и не очень дедики с аукционом!
Сначала пару раз аварийно перезагрузилась виртуалка с Windows. Я немного напрягся, но было не понятно, с чем это связно. Система поднималась и продолжала дальше работать. В логах ничего информативного. Подумал на глюки самой системы. Потом начали подвисать виртуалки и с Linux. То одна, то другая. Причём так висли странно, как-будто отваливалось хранилище. Сильно росла LA из-за дисковой очереди. Приходилось им делать reset средствами гипервизора. В какой-то момент завис он сам, аж пинговаться перестал. Тут я понял, что с самим сервером проблемы.
Написал в тех. поддержку, спросил, можно ли просто диски перекинуть в другой аналогичный сервер, так как с этим явно начались проблемы после нескольких лет нормальной бесперебойной работы. Мне предложили провести сначала тестирование железа, что занимает 2-3 часа, и если проблемы с ним, то диски перекинут. Мне не захотелось этим заниматься, так как не вижу большого смысла. Сервер явно заглючил. Зависал не часто, где-то раз в 2-3 недели глючила одна из вируталок, а сам он завис ну может пару раз только. То есть глюк плавающий и неочевидный, не воспроизводится. Прошло, наверное, пару месяцев, пока я понял, что глючит сам сервер.
Взял в аренду другой сервер, настроил. Запланировал время и часть виртуалок перекинул через PBS. Подключил одно и то же хранилище к обоим серверам. На первом бэкапил, на второй восстанавливал. Это максимально простой способ, вообще заморачиваться не надо, переезжает VM со всеми настройками. Всё прошло штатно, но долго, так как сначала делается бэкап, потом восстановление. Для виртулаок на сотни гигов это занимает приличное время.
Для минимизации простоя больших виртуалок останавливал их и просто перекидывал qcow2 файлы с дисками. Я за это и люблю этот формат. Если надо быстро переехать, то это сделать максимально просто. Создаю на втором гипервизоре виртуалку с идентичными настройками, как на первом и просто копирую диск виртуальной машины. Получается максимальная скорость переноса и минимально возможный простой.
Так за пару вечеров переехал, старый сервер снял с оплаты. Удобно, когда сервера в аренде. Помню когда-то давно у меня так свой сервер в серверной глючил как-то неявно. Столько крови попил. Запасного под боком не было. Пришлось по текущим раскидывать нагрузку и отправлять его в ремонт, так как дорогой был.
Современные облачные технологии сняли целый пласт проблем с инженеров, связанные с железом. Можно вообще с ним не сталкиваться. Мне приходится, так как в малом и среднем бизнесе облачные вычислительные мощности слишком дороги и не окупаются. К примеру, этот сервер много лет работал в одиночку, раз в сутки бэкапился. Для него простой в несколько часов допустим, так что нет смысла вкладывать какие-то деньги в резервирование и отказоустойчивость. Бэкапов достаточно. Недавно нужно было просчитать работу довольно мощного сервера в режиме 24/7 с минимальным простоем, с круглосуточной тех. поддержкой. Это дорогое удовольствие, так как и резервирование (реально нужно 3 сервера), и такая поддержка стоят приличных денег.
#железо
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
ServerAdmin.ru
Для тех, кто пользуется Proxmox Backup Server (PBS) важное предостережение. Я им пользуюсь практически с момента релиза, но только недавно столкнулся с проблемой. Не допускайте исчерпания свободного места на сервере с бэкапами.
Я краем уха слышал, что…
Я краем уха слышал, что…
4👍94👎12
И вновь возвращаемся к рубрике с современными утилитами, которые можно использовать в качестве альтернативы более старым, потому что они уже поселились в официальных репозиториях. Речь пойдёт об уже упоминаемой мной несколько лет назад программе fd, которую можно использовать вместо find. Она приехала в стабильные репы:
Короткое название fd использовать не получится, потому что оно уже занято. Придётся использовать
В чём особенность fd? Авторы называют её более быстрой и дружелюбной к пользователю программой, по сравнению с find. В принципе, с этим не поспоришь. Ключи и синтаксис find нельзя назвать дружелюбным. Я по памяти могу только какие-то самые простые вещи делать. Всё остальное ищу в своих шпаргалках. Не понимаю, как подобные конструкции можно запоминать, если каждый день с ними не работаешь.
Ищем файл syslog в текущей директории:
Ищем файл в конкретной директории:
Ищем файл по всему серверу:
Вот то же самое, только с find:
По умолчанию find найдёт только полное совпадение по имени. Файл должен будет точно называться syslog, чтобы попасть в результаты поиска. Fd в примере отобразит все файлы, где встречается слово syslog. Это и интуитивнее, и проще для запоминания. Хотя этот момент субъективен. С find такой же поиск будет выглядеть вот так:
Отличия от find, которые отмечают авторы:
◽️Более скоростной поиск за счёт параллельных запросов. Приводят свои измерения, где это подтверждается.
◽️Подсветка результатов поиска.
◽️По умолчанию поиск ведётся без учёта регистра.
◽️Итоговые команды в среднем на 50% короче, чем то же самое получается с find.
⚠️ Отдельный ключ
Несколько простых примеров для наглядности. Поиск файлов с определённым расширением:
Найти все архивы и распаковать их:
Найти файлы с расширением gz и удалить одной командой rm:
Вызванный без аргументов в директории, fd рекурсивно выведет все файлы в ней:
Это примерно то же самое, что с find:
Только у fd вывод нагляднее, так как уже отсортирован по именам. А find всё вперемешку выводит. Ему надо sort добавлять, чтобы то же самое получилось:
Fd умеет результаты выводить не по одному значению на каждую строку, а непрерывной строкой с разделением с помощью так называемого NULL character. Все символы воспринимаются буквально, не являются специальными, их не надо экранировать. Актуально, когда результаты поиска имеют пробелы, кавычки, косые черты и т.д. Например, xargs умеет принимать на вход значения, разделённые NULL character. У него для этого отдельный ключ
Покажу на примере, как это работает:
Xargs не смог обработать файл с пробелом. А вот так смог:
И ничего экранировать не пришлось. Полезная возможность, стоит запомнить. Find то же самое делает через ключ
В заключении резюмирую, что fd не заменяет find, не претендует на это и не обеспечивает такую же функциональность, как у последнего. Он предоставляет обоснованные настройки по умолчанию для наиболее массовых применений поиска пользователями.
#terminal #linux #find
# apt install fd-find
Короткое название fd использовать не получится, потому что оно уже занято. Придётся использовать
fdfind
. Под Windows она, кстати, тоже есть:> winget install sharkdp.fd
В чём особенность fd? Авторы называют её более быстрой и дружелюбной к пользователю программой, по сравнению с find. В принципе, с этим не поспоришь. Ключи и синтаксис find нельзя назвать дружелюбным. Я по памяти могу только какие-то самые простые вещи делать. Всё остальное ищу в своих шпаргалках. Не понимаю, как подобные конструкции можно запоминать, если каждый день с ними не работаешь.
Ищем файл syslog в текущей директории:
# fdfind syslog
Ищем файл в конкретной директории:
# fdfind syslog /var/log
Ищем файл по всему серверу:
# fdfind syslog /
Вот то же самое, только с find:
# find . -name syslog
# find /var/log -name syslog
# find / -name syslog
По умолчанию find найдёт только полное совпадение по имени. Файл должен будет точно называться syslog, чтобы попасть в результаты поиска. Fd в примере отобразит все файлы, где встречается слово syslog. Это и интуитивнее, и проще для запоминания. Хотя этот момент субъективен. С find такой же поиск будет выглядеть вот так:
# find / -name '*syslog*'
Отличия от find, которые отмечают авторы:
◽️Более скоростной поиск за счёт параллельных запросов. Приводят свои измерения, где это подтверждается.
◽️Подсветка результатов поиска.
◽️По умолчанию поиск ведётся без учёта регистра.
◽️Итоговые команды в среднем на 50% короче, чем то же самое получается с find.
⚠️ Отдельный ключ
--exec-batch
или -X
в дополнение к традиционному --exec
. Разница в том, что --exec
выполняется параллельно для каждого результата поиска, а с помощью --exec-batch
можно во внешнюю команду передать весь результат поиска. Это важный момент, который где-то может сильно выручить и упростить задачу. Даже если вам сейчас это не надо, запомните, что с fd так можно. Где-то в скриптах это может пригодиться.Несколько простых примеров для наглядности. Поиск файлов с определённым расширением:
# fdfind -e php -p /var/www
Найти все архивы и распаковать их:
# fdfind -e zip -p /home/user -x unzip
Найти файлы с расширением gz и удалить одной командой rm:
# fdfind -e gz -p /var/log -X rm
Вызванный без аргументов в директории, fd рекурсивно выведет все файлы в ней:
# cd /var/log
# fdfind
Это примерно то же самое, что с find:
# find -name '*'
Только у fd вывод нагляднее, так как уже отсортирован по именам. А find всё вперемешку выводит. Ему надо sort добавлять, чтобы то же самое получилось:
# find -name '*' | sort
Fd умеет результаты выводить не по одному значению на каждую строку, а непрерывной строкой с разделением с помощью так называемого NULL character. Все символы воспринимаются буквально, не являются специальными, их не надо экранировать. Актуально, когда результаты поиска имеют пробелы, кавычки, косые черты и т.д. Например, xargs умеет принимать на вход значения, разделённые NULL character. У него для этого отдельный ключ
-0, --null
. Покажу на примере, как это работает:
# touch 'test test.log'
# fdfind -e log
...
test test.log
# fdfind -e log | xargs wc -l
...
wc: test: No such file or directory
wc: test.log: No such file or directory
Xargs не смог обработать файл с пробелом. А вот так смог:
# fdfind -0 -e log | xargs -0 wc -l
...
0 ./test test.log
И ничего экранировать не пришлось. Полезная возможность, стоит запомнить. Find то же самое делает через ключ
-print0
:# find . -name '*.log' -print0 | xargs -0 wc -l
В заключении резюмирую, что fd не заменяет find, не претендует на это и не обеспечивает такую же функциональность, как у последнего. Он предоставляет обоснованные настройки по умолчанию для наиболее массовых применений поиска пользователями.
#terminal #linux #find
1👍102👎6
В Proxmox 7.3 без особых подробностей завезли обновление со следующим описанием: Framework for remote migration to cluster-external Proxmox VE hosts. По факту добавили экспериментальную возможность по миграции виртуальных машин между гипервизорами (не только кластерами).
Реализована миграция с помощью консольной команды
Я разобрался, как это работает. У меня получилось выполнить миграцию между разными гипервизорами. Показываю, как это работает. Итоговая работающая команда выглядит следующим образом:
▪️120 120 - ID виртуалки на исходном гипервизоре и желаемое ID на том, куда переносим. Я оставил одинаковые.
▪️10.20.1.65 - IP адрес принимающего гипервизора
▪️root@pam!token1 - имя токена token1 для пользователя root@pam
▪️0ace469b-9c8d-4f05-ba84-d720414129ee - секрет указанного выше токена
▪️vmbr0 - сетевой бридж на принимающем гипервизоре
▪️local-lvm - хранилище дисков на принимающем гипервизоре
▪️16:21:AB:AE:A3:06:92:BB:E9:F8:25:C2:A1:53:26:7F:67:29:1B:A9:A9:1C:D1:3B:A7:47:BD:23:9F:E8:7C:6B - fingerprint сертификата pve-ssl.pem принимающего гипервизора
Для того, чтобы миграция прошла успешно, нужно на принимающем сервере создать токен. Делается это в разделе Datacenter ⇨ Permissions ⇨ API Tokens. После создания вы получите имя в виде root@pam!token1, где root@pam - пользователь, а token1 - указанное имя токена. И само значение секрета этого токена. Далее в разделе Datacenter ⇨ Permissions нужно добавить API Token Permissions. Я выбрал существующий токен и дал ему полные права. Не разбирался, какие нужны для миграции. Думаю, нужны права на создание виртуалок и дисков в хранилище.
Отпечаток сертификата можно посмотреть в разделе Node ⇨ System ⇨ Certificates. Надо выбрать стандартный pve-ssl.pem, два раза кликнуть по нему мышкой и скопировать Fingerprint.
После этого можно идти в консоль и запускать команду миграции. Её процесс можно наблюдать как в консоли, так и через веб интерфейс в списке задач. Через веб интерфейс даже прогресс копирования дисков виден, в отличие от консоли. Там этой информации нет.
Работает всё довольно удобно. Поддерживается миграция из разных типов хранилищ. Я для теста с обычного LVM переехал в LVM-Thin на другой гипервизор. По факту сначала происходит копирование диска, а потом перенос его в нужное хранилище на принимающей стороне через
Если у вас много виртуалок, которые надо перекинуть на другой гипервизор, то можно пользоваться. Один раз настроил и перенёс все виртуалки со всеми настройками и дисками.
После миграции исходная VM будет заблокирована. Если захотите её запустить на старом гипервизоре, то разблокируйте:
#proxmox
🦖 Selectel — дешёвые и не очень дедики с аукционом!
Реализована миграция с помощью консольной команды
qm remote-migrate
. Подробности реализации можно посмотреть в соответствующем коммите в репозитории. Описание команды в документации скудное. Не особо понятен итоговый формат работающей команды.qm remote-migrate <vmid> [<target-vmid>] <target-endpoint> --target-bridge <string> --target-storage <string> [OPTIONS]
Я разобрался, как это работает. У меня получилось выполнить миграцию между разными гипервизорами. Показываю, как это работает. Итоговая работающая команда выглядит следующим образом:
# qm remote-migrate 120 120 'host=10.20.1.65,apitoken=PVEAPIToken=root@pam!token1=0ace469b-9c8d-4f05-ba84-d720414129ee,fingerprint=16:21:AB:AE:A3:06:92:BB:E9:F8:25:C2:A1:53:26:7F:67:29:1B:A9:A9:1C:D1:3B:A7:47:BD:23:9F:E8:7C:6B' --target-bridge vmbr0 --target-storage local-lvm
▪️120 120 - ID виртуалки на исходном гипервизоре и желаемое ID на том, куда переносим. Я оставил одинаковые.
▪️10.20.1.65 - IP адрес принимающего гипервизора
▪️root@pam!token1 - имя токена token1 для пользователя root@pam
▪️0ace469b-9c8d-4f05-ba84-d720414129ee - секрет указанного выше токена
▪️vmbr0 - сетевой бридж на принимающем гипервизоре
▪️local-lvm - хранилище дисков на принимающем гипервизоре
▪️16:21:AB:AE:A3:06:92:BB:E9:F8:25:C2:A1:53:26:7F:67:29:1B:A9:A9:1C:D1:3B:A7:47:BD:23:9F:E8:7C:6B - fingerprint сертификата pve-ssl.pem принимающего гипервизора
Для того, чтобы миграция прошла успешно, нужно на принимающем сервере создать токен. Делается это в разделе Datacenter ⇨ Permissions ⇨ API Tokens. После создания вы получите имя в виде root@pam!token1, где root@pam - пользователь, а token1 - указанное имя токена. И само значение секрета этого токена. Далее в разделе Datacenter ⇨ Permissions нужно добавить API Token Permissions. Я выбрал существующий токен и дал ему полные права. Не разбирался, какие нужны для миграции. Думаю, нужны права на создание виртуалок и дисков в хранилище.
Отпечаток сертификата можно посмотреть в разделе Node ⇨ System ⇨ Certificates. Надо выбрать стандартный pve-ssl.pem, два раза кликнуть по нему мышкой и скопировать Fingerprint.
После этого можно идти в консоль и запускать команду миграции. Её процесс можно наблюдать как в консоли, так и через веб интерфейс в списке задач. Через веб интерфейс даже прогресс копирования дисков виден, в отличие от консоли. Там этой информации нет.
Работает всё довольно удобно. Поддерживается миграция из разных типов хранилищ. Я для теста с обычного LVM переехал в LVM-Thin на другой гипервизор. По факту сначала происходит копирование диска, а потом перенос его в нужное хранилище на принимающей стороне через
query-disk-import
. Отсюда можно сделать вывод, что должен быть запас по доступному месту на принимающем гипервизоре в двойном размере от объёма диска. Это нужно учитывать при переносе.Если у вас много виртуалок, которые надо перекинуть на другой гипервизор, то можно пользоваться. Один раз настроил и перенёс все виртуалки со всеми настройками и дисками.
После миграции исходная VM будет заблокирована. Если захотите её запустить на старом гипервизоре, то разблокируйте:
# qm unlock 120
#proxmox
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍186👎2