Приключилась со мной на днях неприятная история.
Был вечер, закончил все свои дела, собирался потихоньку спать. Приходит уведомление в Telegram, что недоступен один из сайтов. Потом второй. В Телеграме у меня очень мало уведомлений, только ключевые о конечных точках так сказать. Подобные уведомления должны сопровождаться более многочисленными оповещениями от Zabbix в почту. Захожу туда, там пусто. Проверяю сайты - реально недоступны, соединения сбрасываются.
Пробую зайти в мониторинг по доменному имени, не получается. Поясню, что сайты, мониторинг, некоторая другая инфраструктура располагаются в ЦОД на своих серверах на услуге colocation. Там пачка внешних IP адресов, софтовый шлюз на Linux и для подстраховки ещё один физический в стойке на Mikrotik.
Подключаюсь к шлюзу по VPN (OpenVPN), попадаю во внутреннюю инфраструктуру. Всю её вижу, никаких проблем с доступностью. Открываю Zabbix по локальному IP адресу машины, где он работает, попадаю в веб интерфейс. Там всё красное, куча алертов на разные темы. Невозможно понять, что происходит. Обращаю внимание на растущую очередь сообщений на почтовом сервере, они не уходят. Это в основном уведомления от мониторинга.
Запускаю у себя почтовый клиент, нормально подключаюсь к серверу, вижу новую почту. Посмотрел выборочно некоторые логи сервисов, у кого-то что-то работает, у кого-то нет. Не понимаю, что происходит. Пытаюсь сфокусироваться на какой-то одной проблеме, чтобы её решить. Параллельно замечаю, что по внешнему IP адресу шлюза не могу подключиться к нему по SSH ни из одной локации, добавленной в белый список. То есть по внутреннему адресу через VPN я на него захожу, а по внешнему не получается. Соединение происходит, получаю приветствие от SSH сервера, а дальше сеанс не открывается. То есть с сетевой связностью проблем нет. Телнетом я нормально подключаюсь к SSH порту.
В первую очередь захотел разобраться с сайтами. На шлюзе стоит проброс порта на Nginx Proxy, с него уже на веб сервер. В логах прокси пусто, запросы не приходят. При этом на шлюзе я вижу, что по правилам проброса через NAT летят пакеты, счётчики растут. Ситуация странная.
В первую очередь подумал на шлюз, что с ним какие-то проблемы. Там старая уже неподдерживаемая система CentOS 7. Аптайм ОЧЕНЬ большой. Всю эту структуру когда-то давно настроил я, но последние несколько лет развитием и обновлением не занимался. Задач и финансов под это дело не было. Шлюз полностью скрыт от посторонних глаз и доступ туда сильно ограничен, так что реальных проблем это не доставляло.
Проверил у шлюза логи, таблицу conntrack на переполнение, сетевые соединения, нагрузку, что-то ещё. Уже не помню точно. Ничего подозрительного не заметил. Нигде ничего не переполнено, не нагружено, ошибок нет. Шлюз как-будто бы в порядке. Перезапустил сервис iptables - не помогло. Внешне всё выглядит так, как-будто соединения где-то внутри iptables или сервера застревают.
Решил, что от большого аптайма системе стало плохо и её надо перезагрузить. Так как это шлюз и точка входа в инфраструктуру, сделать это надо аккуратно. Все IPMI тоже скрыты за VPN, прямого доступа нет. Проверил на всякий случай резервный шлюз. Предупредил администратора, который на месте (офис и ЦОД - одно здание) всё это поддерживает, чтобы он был готов если что утром приехать пораньше и начать разбираться с проблемой.
Перезагрузка не помогла, а точнее вообще всё развалила. Не поднялись VPN с филиалами, которые до перезагрузки работали. Мониторинг покраснел ещё сильнее. Всё, что не работало, так и продолжало не работать. При этом я лично нормально подключился по VPN. Плюс, видел по логам VPN сервера, что некоторые клиенты тоже подключились, в том числе из-за границы.
Была ночь за окном, на термометре -35. Всё это меня вообще сбило с толку, и я взял паузу, чтобы обдумать ситуацию. А как я её решил, читайте ниже. Тут лимит на длину публикации исчерпан.
👇👇👇👇👇👇👇👇
#история #цод