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 openssl-devel
2. ~$ cd /opt && git clone https://github.com/DBezemer/rpm-haproxy.git && cd rpm-haproxy && 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, добавляем в локальный репозиторий и разливаем на наши сервера.

Нетрадиционное использование Carkit

 Недавно я разжился по случаю старьенкой TETRA радиостанцией Motorola MTP700. В принципе, она мне была не так чтобы очень нужна, но ее отдавали почти даром - а воспоминания об этом девайсе у меня сохранились весьма ностальгические :) Дальше встал вопрос, как ее программировать и заряжать, потому как за давностью лет никаких аксессуаров к этой ископаемой серии у меня не осталось. В итоге на eBay была за смешные 25 евро куплена вот такая штука: Motorola GMLN1036A Carkit for MTP700/750.

 Вообще-то это, как следует из названия, комплект для установки радиостанции в автомобиль. Но прелесть его в том, что помимо зарядного устройства, он содержит в себе полный аксессуарный разъем и конвертер TTL уровней в RS232, что позволяет подключать его напрямую к COM порту и шить радиостанцию без каких-либо заморочек навроде пайки проводов к разъему, "колхоза" переходников и прочих конвертеров, так любимых радиолюбительской публикой по причине проприетарности разъемов и невозможности найти "родные" кабели.

 Интересно, я единтсвенный такой идиот, который привинтил Carkit к столу и использует его как стационарное ЗУ и стойку программирования?))

 А вот так выглядит уже перепрошитая "старушка" - она вполне бодро регистрируется в местной TETRA сети.

 Что самое смешное - доставшийся мне вместе с ней "умный" аккумулятор серии IMPRES еще вполне бодр и держит заряд целый день. Но станция отчаянно ругается, что он "end of life" и просит его заменить - ну да, маркетинг такой маркетинг. Чтобы отучить ее от этой вредной привычки, достаточно заклеить средний пин аккумулятора скотчем: перестав получать данные с контроллера, станция решит, что в нее вставлена "неуправляемая" батарейка, начнет рассчитывать остаток заряда по напряжению и перестанет выдавать ошибки.

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

Мы ищем саппорта на полный день. Офис в историческом центре Франкфурта рядом с метро, достойная зарплата (ее размер обсуждается), годовые бонусы, фитнес, чай-кофе-фрукты-печеньки, коллектив - интернациональная стая 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, но больше ничего. Начальника говорит - ну а что, все правильно: в вакансии написано "ищем программиста во Франкфурте", а краткость - сестра таланта. Подумывает этому Кумару сразу оффер прислать, без собеседования :)

Трололо

Приходит сейчас наш саппорт:
- Влад, у тебя работает %ApplicationName%?
- Нет, но мне не критично.
- Ну в общем оно ни у кого не работает, мне надо у всех его обновить. Но на твою машину я не могу зайти по SSH. Почему?
- Потому что у меня высшее образование по информационной безопасности, Хулио...

Тихий ржач сидящих поблизости программистов. Занавес.

Настройка 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 )

Пятничное

 Вчера разработчики из партнерской компании в силу собственного идиотизма "случайно" устроили нам DDOS-атаку, положив продакшн напрочь, а потом долго не сознавались, что же именно они сделали. По завершению выяснений "какой мудак кладет базу данных сложными запросами", старший админ глубоко вздохнул, заявил что работать в такой обстановке он больше не может, и отправил саппорта в магазин за пивом.

 Вернувшийся с совещания начальник увидел дивную картину - бухающего средь бела дня Криса, похуистично-веселого саппорта и меня, мрачно правящего параметры кластера БД. На его вопрос, что случилось, Крис перешел на немецкий и весьма эмоционально описал события последних нескольких часов. Начальник сочувственно покивал, взял вторую бутылку пива, и дальше они с Крисом бухали вместе, ругая тех разработчиков на двух языках.

 Люблю свою работу :)

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

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

Collapse )