Category: it

Восстановление кластера MariaDB

Проблема: в кластере из 3 нод две упали (крэш), а оставшаяся загрустила и шлет клиентов нахер с любыми запросами.

Причина: согласно логике WSREP, одна нода не может собрать кворум и переходит в режим non-primary, переставая обрабатывать запросы клиентов во избежание split-brain. Если остальные ноды отвалились из-за сетевых проблем, то кластер пересоберется автоматически, как только они снова смогут друг друга видеть. А вот если остальные ноды, как в описываемом случае, именно что упали - то их перезапуск будет "радовать" нас ошибкой вида "view# -1: non-Primary", и сообщением о невозможности найти кластер.

Решение: заходим на выжившую ноду и в консоли даем команду "SET GLOBAL wsrep_provider_options='pc.bootstrap=true';", тем самым принудительно устанавливая ей высший приоритет. После чего она переходит в primary mode и мы можем запустить остальные ноды, которые при старте стянут информацию с нее. Важно: прежде, чем это делать, трижды проверьте, что остальные ноды таки реально не работают, иначе можно получить разные данные на разных нодах и все вытекающие из этого последствия.

Если при запуске остальные ноды валятся в segfault - лечится удалением всех файлов в mysql home directory.

Про аутсорсеров

Есть у меня на работе три площадки с серверами. Две полностью наши, третья в аренде. На каждой стоит богомерзкая железяка под управлением Sophos UTM9, установленная аутсорсерами. Изначально нашу сеть администрировали целиком они, но после пары серьезных косяков я отобрал у них права на все принадлежащее нам сетевое оборудование. Так что под их управлением осталась только третья площадка, где маршрутизатор не наш.

Так вот, понадобилось нам прокинуть резеврный VPN между одной из наших площадок и не нашей. Сконфигурировали все со своей стороны, написали заявку аутсорсерам. Те давай нам заливать - "ну, это надо OSPF поднимать, это долго, дорого и вообще нужно будет закупить новый маршрутизатор". Я не стал вступать в бесполезные споры, а просто притащил из дома древний Juniper SRX100B, сбросил, повесил на него свободный белый IP из офисного пула и за час настроил с него IPSec на обе наших площадки. Без OSPF и смс.

Народ ходит, дивится. Уточняют: "И шо, прямо вот работает? Ухтыжблядь! А сколько такая пепяка стоит? Сколько?! А хули ж мы тогда тот Sophos за сотни нефти покупали..."

Собираем haproxy2 под CentOS 8

Проблема: нужно разлить актуальную версию haproxy на несколько серверов, а под последнюю CentOS пока нет rpm для версии 2.0, только для 1.8.

Решение: собираем RPM самостоятельно из сырцов. Благо доброе opensource-community запилило для этого очень простой набор скриптов.

Порядок действий:
1. ~$ sudo yum install -y rpm-build rpmdevtools pcre-devel openssl-devel zlib-devel redhat-rpm-config gcc gcc-c++ make libstdc++-devel wget rpmlint
2. ~$ cd /opt && git clone https://github.com/DBezemer/rpm-haproxy.git && git checkout 2.0
3. Правим файл SPECS/haproxy.spec, выставляем там версию 2.0 вместо 1.8
4. ~$ cd /opt/rpm-haproxy && make

Профит. Берем RPM файл из папки /opt/rpm-haproxy/rpmbuild/RPMS/x86_64, добавляем в локальный репозиторий и разливаем на наши сервера.

А кому работу в Германии?

Мы ищем саппорта на полный день. Офис в историческом центре Франкфурта рядом с метро, достойная зарплата (ее размер обсуждается), годовые бонусы, фитнес, чай-кофе-фрукты-печеньки, коллектив - интернациональная стая IT-троллей :)

Оформление естественно официальное, помощь с получением визы. Через 21 месяц работы можно получить ПМЖ, через 6 лет - гражданство.

Что нужно знать и уметь:
- Опыт работы с пользователями в техподдержке 1 и 2 линии,
- Опыт работы с Windows 10 и MacOS, а также с айфонами-айпадами-аймаками (да, у нас корпоративный яблочный стандарт). Если имеется знакомство с Munki и прочими подобными утилитами Apple - совсем хорошо,
- Понимание общих принципов работы сетей (TCP/IP, OSI etc., базовые знания),
- Знакомство с MS AD/Exchange/Sharepoint (на уровне добавить учетку/поменять права, глубокие познания не требуются),
- Понимание, что такое Linux и знакомство с консолью (глубокие знания не требуются),
- Разговорный/письменный английский (native speaker быть не обязательно, но хотя бы уверенный В1+ уровень должен присутствовать),
- Дружелюбность и терпение к пользователям, общая ответственность и адекватность,
- Немецкий язык - не обязателен, но будет преимуществом,
- Высшее техническое образование (нам оно незачем, но без него немецкую рабочую визу не дадут).

Чем надо будет заниматься:
- Поддержкой пользователей и офисного железа, взаимодействием с внешними провайдерами (картриджи, ремонт оргтехники, интернет etc.) - это основные задачи,
- Управлением аккаунтами и доступами в AD/Exchange/Sharepoint,
- Базовой поддержкой Linux серверов (на уровне получить SMS от мониторинга, залогиниться, перезапустить сервис, почитать логи, позвонить админу со словами "шеф, все пропало"),
- Написанием мануалов и howto для пользователей,
- Иногда замещать кого-нибудь из админов.

При наличии желания, научим человека админить Linux, базы данных, хранилки, виртуализацию, сетевое железо и прочие тяжелые энтерпрайзные вещи.

Заинтересовавшимся писать мне в личку.

Работа работником на работе за деньги

Только что вваливается к нам начальника, ржот - аж рыдает. И показывает резюме на вакансию программиста, которое ему прислали:

Name: Kumar
Location: Frankfurt
Skills: Programmer

Это все. Там конечно еще телефон был и e-mail, но больше ничего. Начальника говорит - ну а что, все правильно: в вакансии написано "ищем программиста во Франкфурте", а краткость - сестра таланта. Подумывает этому Кумару сразу оффер прислать, без собеседования :)

Настройка Juniper SRX220 с модулем SRX-MP-1VDSL2-A на примере Vodafone Deutschland

 Интернет в Германии - вещь в себе. Никакого Ethernet, и уж тем более PON, в квартиры здесь в 99% случаев не проводится. Оптика до подвала - тоже редко встречающаяся роскошь. Рынок тут поделен между провайдерами, предлагающими интернет по разным xDSL технологиям, и операторами кабельного ТВ, раздающим интернет через DOCSIS. В общем-то, ничего особо страшного в этом нет: домовые телефонные и кабельные линии здесь, как правило, содержатся в хорошем состоянии и способны обеспечивать достаточную пропускную способность. К примеру, у нас сейчас 100-мегабитный канал от Vodafone через VDSL2, а на одной из прошлых квартир был канал от Unitymedia через DOCSIS3, скорость которого доходила до 200 МБит.

 Все это хорошо и вполне достаточно для большинства домашних пользователей, но вот если вы хотите подключить свой собственный маршрутизатор - начинаются проблемы. Что под DSL, что под DOCSIS выбор роутеров здесь крайне ограничен, и очень многие модели просто не умеют работать в режиме модема. То есть придется ставить свой маршрутизатор за NAT. Если вы при этом еще и используете IP-телефонию, VPN и тому подобные вещи, все становится совсем грустно. Промучившись некоторое время в попытках "подружить" свой Juniper SRX100 и провайдерский Fritz!Box 7590, я произвел некоторые изыскания и по очень удачной цене купил на eBay Juniper SRX220H и к нему модуль VDSL2 модема - SRX-MP-1VDSL2-A.

Collapse )

Поддержка DMO репитера в Motorola MTP700

 В упомянутой станции by design нет поддержки работы через репитер. Либо транк, либо прямой канал, либо Gateway. Последняя прошивка - релиз версии MR3.1.6 от две тысячи лохматого года, так я считал до недавнего времени исходя из официальных release notes. И для региона EMEA это действительно справедливо.

Collapse )

Проверяем блокировку и просроченность AD учеток в Zabbix

  После пары инцидентов вида "непонятно почему залочилась служебная учетка и служба упала", я набросал скрипт для отслеживания блокировки/просрочки учетных записей AD через Zabbix: check-ad-account.pl.

  Переменными $bind, $bindpwd, $dc и $root в скрипте задаются Bind DN, пароль от него, адрес домен-контроллера и стартовый путь поиска учеток соответственно. В качестве параметра командной строки скрипту скармливается имя (sAMAccountName) учетной записи. На выходе получаем 1, если учетка активна и не просрочена, и 0 в любом другом случае. Прикручивается к любой версии Zabbix через External Check. Шаблон не выкладываю, ибо он прост, как валенок.

  P.S. Да, я знаю, что в AD существуют специально для этого придуманные service accounts, но в кровавом_энтерпрайзе© бывает всякое, особенно если администрированием AD занимается зарубежная команда слоупоков, не знающих даже, что такое SID history.

Интеграторское

 Сегодня на совещании:

- Давайте доверим обновление заббикса индусам?
- Не факт, что они хотя бы отдаленно представляют, как он устроен...
- Так на то и расчет: они провозятся месяц, ничего не сделают, а потом Влад обновит его за один день - и мы все в белом!
- Отличный план!

Motorola TETRA PEI и Linux

 Потихоньку горожу интерфейс для управления DMO репитером на основе Motorola MTM5200, перефлешенной в MTM5400.

 В качестве управляющего компьютера выступает Orange Pi, а MTM5200 подключается к нему по USB, благо на заднем аксессуарном разъеме у нее аж два PEI интерфейса, и нет необходимости возиться с USB-TTL конвертерами. Но вот незедача: под виндой все это прекрасно работает через родной драйвер из комплекта CPS, а вот под Linux - увы, даже с самым свежим ядром ttyUSB нода не создается, хотя по lsusb видно, что система станцию опознает:
Bus 008 Device 002: ID 0cad:9011 Motorola CGISS

 Мораль - надо руками сообщить драйверу usbserial, что данное устройство по его части:
# echo '0cad 9011' > /sys/bus/usb-serial/drivers/option1/new_id

 Результат:
[ 22.485959] option 8-1:1.0: GSM modem (1-port) converter detected
[ 22.486370] usb 8-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 22.486569] option 8-1:1.1: GSM modem (1-port) converter detected
[ 22.486883] usb 8-1: GSM modem (1-port) converter now attached to ttyUSB2

 Профит. Теперь можно спокойно дергать телеметрию и информацию GPS с данной станции под Linux.