LINUX.ORG.RU

Сообщения lizard

 

SIP-клиенты падают при попытке обращения к микрофону

Протестировал linphone и zoiper. Запускаются, подключаются и вроде работают, но при попытке ответить на звонок/позвонить самому падают:

fish: “zoiper” terminated by signal SIGSEGV (Address boundary error)
fish: “linphone” terminated by signal SIGSEGV (Address boundary error)
Приложения же вроде teamspeak или skype работают нормально. В какую сторону копать? Думал, дело в стыке alsa/pulse, так как linphone работает через alsa, но нет - zoiper работает с pulseaudio и тоже падает.

UPD. Дело было в firejail, через который был запущен скайп.

 ,

lizard
()

Утилиты для резервного копирования наживую

А что нынче имеется для бэкапа живой системы, кроме tar/rsync и самописных скриптов? Хочется, чтобы утилитка создавала образ загрузочного диска, который в случае факапа воткнул и оно дальше само. Нагуглил mondorescue, протестировал - оно не смогло восстановить бэкап, ни в виртуалке, ни на другом железе. Акронис не предлагать. Консистентность данных не важна, баз данных там нет.

 

lizard
()

Локаль по умолчанию в PHP

Добрый день. Столкнулся с тем, что php не воспринимает системные настройки локали:

root@test4:~# locale
LANG=ru_RU.CP1251
LANGUAGE=ru
LC_CTYPE="ru_RU.CP1251"
LC_NUMERIC="ru_RU.CP1251"
LC_TIME="ru_RU.CP1251"
LC_COLLATE="ru_RU.CP1251"
LC_MONETARY="ru_RU.CP1251"
LC_MESSAGES="ru_RU.CP1251"
LC_PAPER="ru_RU.CP1251"
LC_NAME="ru_RU.CP1251"
LC_ADDRESS="ru_RU.CP1251"
LC_TELEPHONE="ru_RU.CP1251"
LC_MEASUREMENT="ru_RU.CP1251"
LC_IDENTIFICATION="ru_RU.CP1251"
LC_ALL=
root@test4:~# php -r "echo (10.10);"
10.1
root@test4:~# php -r "echo setlocale(LC_ALL, 0);"
LC_CTYPE=ru_RU.CP1251;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C
root@test4:~# php -r "setlocale(LC_NUMERIC,'ru_RU.CP1251'); echo (10.10);"  
10,1
root@test4:~# php -v
PHP 7.0.12-1+deb.sury.org~trusty+1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.12-1+deb.sury.org~trusty+1, Copyright (c) 1999-2016, by Zend Technologies
root@test4:~# locale -a
C
C.UTF-8
POSIX
ru_RU.cp1251
ru_RU.utf8
Указание intl.default_locale в php.ini тоже не помогает. Можно как-то избежать использования setlocale() в коде?

 ,

lizard
()

Не работает отправка IGMP report

Имеется компьютер с убунтой 14.04, на котором запускается ffmpeg, принимающий поток через мультикаст. Через 260 секунд приём отваливается - это таймаут Group Membership Interval, то есть убунта не отправляет IGMP Report. При этом, если воткнуть ноут с дебианом в этот же порт коммутатора и запустить точно так же ffmpeg - всё работает. Хотелось бы знать, куда пнуть эту убунту, чтобы она не творила такой фигни? Вариант «заменить на дебиан/центось» уже приведён в исполнение, но на будущее хотелось бы знать.

 , ,

lizard
()

Каким образом организовать подключение оконечных устройств в несколько вланов?

Есть будущая провайдерская сеть. Возник вопрос: каким образом организовать подключение абонентов? Хочется организовать несколько вланов, например, 100-й - для интернета/локального трафика, 500-й - для iptv с мультикастами, 4000-й - для управления самими коммутаторами. Курение мануалов показало, что access-порты не могут быть в нескольких вланах (да, есть гибридные, но не на всех коммутаторах), но как быть, если у абонента подключены обе услуги? Возьмём 28-и портовый коммутатор, пусть у него порты с 1 по 27 используются для подключения клиентов, 28 - аплинк до агрегации. На агрегации все порты указаны как транковые с вланами 100,500,4000, на коммутации они указаны для 28-го порта. Остальные порты пока в первом влане. Если абонентское оборудование поддерживает тегированный трафик, то тогда можно на оконечном коммутаторе тоже задавать порты 1-27 как транковые, заодно можно подключать-отключать услуги абоненту просто добавляя его порт в соответствующий влан (или удаляя). А если нет? Получается, трафик от абонента идёт нетегированный, и коммутатор не знает, в какой влан его отправлять. Если же на абонентское устройство придёт тегированный трафик, то он, скорее всего, просто будет отброшен.

 ,

lizard
()

Посоветуйте симулятор сети

Что-нибудь вроде Cisco Packet Tracer или GNS3. Но оборудования Cisco у меня нет, так что не слишком интересует. Хотелось бы возможность подключения KVM-виртуалки или чего-то аналогичного с RouterOS.

Желательно: минимальный графический интерфейс/визуализация, низкий порог вхождения (а не так, что проще и нагляднее на реальной сети пробовать). Возможность симуляции сети масштаба города.

 ,

lizard
()

Оконный менеджер, оперирующий приоритетом процессов

Существуют ли такие? Чтобы, например, свёрнутые окна получали наименьший приоритет, неактивные - чуть меньший, то, с которым работаешь - максимальный.

 

lizard
()

Почтовые клиенты с поддержкой IMAP IDLE

А какие клиенты поддерживают IMAP IDLE, кроме Thunderbird, KMail, Evolution и Mutt? KMail всем хорош был бы, но он использует Akonadi, который периодически начинает что-то там индексировать и может поставить раком восьмиядерный процессор. Крайне желательна интеграция с рабочим столом в виде нотификаций, индикации числа новых сообщений, использования менеджера паролей и электронных подписей/шифрования. На данный момент пользуюсь Thunderbird, но хотелось бы иметь альтернативу.

 ,

lizard
()

«Плоская» сеть для контейнеров.

Имеется два физических хоста с openvz-контейнерами. Как бы их объединить так, чтобы они все находились в одном сегменте сети? Например, 10.10.0.1 - первый хост, 0.2 - второй хост, с 0.100 начинаются адреса контейнеров на venet-интерфейсе. Попробовал как в этой статье, только прописал одну и ту же подсеть, хосты друг друга видят, пингуют, а контейнеры - нет: Destination host unreachable. Маршруты прописаны, форвардинг в ядре включен. Что ему ещё надо?

 ,

lizard
()

tinc или gre+ipsec?

Надо поднять тоннели между серверами в разных датацентрах и гонять мультикасты. Собственно, не могу решить, на чём их сделать. GRE-тоннели, по идее, работают быстрее и с минимальным оверхедом, но поверх надо прикручивать ipsec. В tinc шифрование уже есть, но какой-то он замороченный (хотя по сравнению с openvpn достаточно прост). grelan настраивается в три строчки, но зато для того, чтобы с пользовательской машины (которые практически все за натом) попасть во внутреннюю сеть, всё равно придётся ставить отдельный впн-сервер.

 , , , ,

lizard
()

Отказоустойчивые решения

Подскажите, какие существуют на данный момент отказоустойчивые решения для веб-приложений? Архитектура приложения на данный момент такая - клиент (веб и десктопный) - nginx (отдельный виртуалхост с поддоменом на логическую группу клиентов) - tomcat (одно здоровенное ява-приложение на спринге) - mysql (отдельная база на ту же логическую группу клиентов плюс общесистемная база). Сейчас всё довольно бодро крутится на одном medium-инстансе на амазоне плюс small-инстанс rds (даже без multi-az). Планировалось после раскрутки проекта нарастить мощность и использовать некоторые фичи амазона вроде балансировщика и route 53, но законы и курс доллара вынуждают переезжать в Россию, где хостингов с подобной инфраструктурой нет. Так что надо изобразить что-то минимальное самому.

Вариант 1, классический. Основной сервер с приложением и базой в одном дата-центре, слэйв-база в другом датацентре. В случае падения основного сервера поднимаем резервный в другом датацентре, переключаем dns на него. Простой составит от десяти минут до часа. В особо тяжёлых случаях игнорирования ttl у dns-записей провайдерами - до нескольких часов.

Вариант 2. Round-robin на днсах. Два равноценных сервера в разных датацентрах, mysql в режиме мастер-мастер либо же galera с арбитром. В случае падения одного сервера или датацентра опять слушаем ругань клиентов, но уже вдвое меньше. Опять же, до тех пор, пока не обновятся днсы либо пока не воспрянет упавший сервер/датацентр. Из минусов ещё и то, что само приложение не рассчитано и не тестировалось на параллельную работу, возникают потери сессий и тому подобное непотребство. Но это можно минимально пофиксить, отправляя на nginx'ах одних и тех же клиентов на один и тот же апстрим. Ну и скорость работы при синхронной репликации будет заметно ниже.

Вариант 3, вариация классического. Добавляем перед основным сервером парочку фронт-эндов, этакий недо-cdn. В это случае, имея один сервер приложения в горячем резерве, простой можно свести ко времени таймаута ожидания ответа от апстрима. Но если падает фронт-энд, всё опять же сводится к первому варианту.

Всякие фишки вроде CARP и распределённых файловых систем выглядят интересно, но, как мне кажется, это из пушки по воробьям. Например, чем репликация на уровне базы данных хуже репликации на уровне файловой системы? Файловая система ведь ещё и оверхэд будет давать некоторый.

UPD. Работал всего с двумя российскими хоситнг-провайдерами, у обоих регулярно падала маршрутизация (это не считая иных проблем, напрямую к теме не относящихся).

 

lizard
()

NetworkManager совместно с dnsmasq не воспринимает запушеные через OpenVPN адреса днс-сервера

Имеется удалённый сервер, на котором установлен OpenVPN для доступа во внутреннюю сеть. Внутри сети функционирует собственный днс-сервер. В OpenVPN прописаны днсы для подключающихся клиентов, чтобы они могли обращаться к внутренним сервисам по именам. VPN-соединение настроено через NetworkManager. Если убрать dnsmasq, то при подключении NetworkManager вносит адреса в /etc/resolv.conf и всё работает, но не работает кэш днс-запросов, ради которого, собственно, и хочется использовать dnsmasq. Однако при явном указании днс-сервера в настройки vpn-соединения он добавляется в конфиг dnsmasq, но всё равно не работает:

lizard@home~> cat /var/run/NetworkManager/dnsmasq.conf 
server=/10.in-addr.arpa/10.2.1.1
server=192.168.100.1
server=8.8.4.4
server=8.8.8.8
lizard@home~> cat /etc/resolv.conf 
nameserver 127.0.0.1
Подозреваю, это из-за того, что адрес сервера вносится в конфиг криво. Однако я не нашёл, где это происходит, может, у кого-нибудь есть идеи, как это можно исправить? Прописывать адреса серверов статически - не вариант, таких сетей у меня много.

Debian 8.

 , , ,

lizard
()

Выборка по диапазону дат

Есть одна нехорошая таблица с парой миллионов записей, в которой день-месяц-год заданы отдельными столбцами. Теперь ВНЕЗАПНО понадобилось делать выборку в диапазоне от и до. Помогите составить корректный sql-запрос для этого чуда (ну, кроме как сделать alter table, добавив поле с типом datetime, проапдейтить его и потом уже сделать обычный запрос). Вот пример запроса, который скинули мне:

SELECT * FROM stat 
WHERE (year>=2014 AND ( (month=9 and day>=29) OR (day>0 and month>9) )) 
AND (year<=2015 AND ( (month=3 and day<=27) OR (day>0 and month < 3) )) 
Я в sql ни бум-бум, якобы у разработчика на локальной машине всё работает, а на сервере нет. Но это какой-то бред.

 ,

lizard
()

Веб-обёртка для гита

Нужна простенькая обёртка для гита, задачи - сделать pull или checkout на другой бранч в рабочей копии. Сейчас есть самописное решение, но так как программист, писавший его, уволился, то никто не знает как его чинить. Разобраться, конечно, можно, но это требует времени, а надо здесь и сейчас. В офвики проекты либо мёртвые, либо тяжёлые. Вариант раздавать программистам и тестерам аккаунты на сервере и объяснять, как пользоваться консолью, мне не нравится.

 , ,

lizard
()

Системы управления конфигами

А есть такие системы, которые хранят конфигурацию в SQL-like базах, где можно не только выполнить генерацию однотипных конфигов по шаблонам, но и получить информацию? Например, есть у меня несколько сотен виртуалхостов на nginx, каждый со своими настройками docroot, upstream и логов, хотелось бы уметь сделать что-то вроде select * from config where upstream='main' and servername like 'demo%'. И, соответственно, update, а то сейчас приходится прибегать к помощи sed и awk.

PS. Кто сказал «реестр»?

 ,

lizard
()

Перенастроить управление уровнем записи в pulseaudio

На данный момент при увеличении уровня записи с микрофона пульса задирает Mic Boost (по крайней мере, так показывает alsamixer). Можно ли как-то заставить его вместо этого использовать Capture/Digital и забыть про Mic Boost? Усиление даёт неприятные шумы, для общения некритично, но вот программы для распознавания речи (Simon, Google speech api) уже не работают.

 , ,

lizard
()

Гламурные обёртки для администрирования mysql/postgres.

Нет, не gui. Хочется определённый административный фронт-энд, как у Amazon RDS, позволяющий парой кликов сделать, например, снятие/разворачивание дампа, откат базы на определённое время, подключение слэйва и переключение типа репликации. Заодно и мониторинг можно. Теоретически я знаю как это сделать на базе того же docker/openvz, но это будет долго и не факт, что хорошо. Идеально если у этого интерфейса будет какое-то апи, которое можно будет дёргать из других приложений. Что-то вроде https://github.com/outbrain/orchestrator только более мощное.

 , ,

lizard
()

Linphone при старте пытается авторизоваться где его не просят

Сначала оно пыталось залогиниться на default gateway (т.е. на 192.168.1.1), после того как вычистил все упоминания об учётной записи вида 'логин@локальный айпи' из конфига, оно при старте пытается залогиниться на провайдерском нате (подозреваю, выцепив его через upnp с роутера) с моим пользовательским логином. Как бы отбить эту привычку? Очень надоедает клацать отмену в запросе несуществующего пароля несколько раз.

А ещё оно изредка принимает непонятные входящие. Непонятные в смысле того, как они пролазят через два ната, да ещё откуда-то из глубин интернета. Чудны дела твои, маршрутизация.

И ещё не работает через пульсу, что здорово раздражает, особенно когда треньканье вызова идёт в наушники вместо колонок.

В общем, прошу посоветовать аналоги, которые будут работать с «Манготелекомом». Екига обзавелась привычкой иногда сегфолтиться, Зойпер, упомянутый в их вики, стрёмный и без исходников (и тоже не умеет пульсу).

Эх, как хорошо было, когда в Манго работала переадресация на скайп... А потом злой майкрософт взял и поломал.

 ,

lizard
()

DVB-T ТВ-тюнер.

Нужен PCI-тюнер на DVB-T, с нормальной поддержкой. Бехолдеры сдулись (кодер, заведовавший линуксами, уволился, больше никто там не умеет), искать б/у - не вариант, нужно срочно и с гарантией. Авермедия по отзывам работает криво. Желательно чтобы влезал в 1U-корпус. С PCI-e всё плохо, судя по вики linuxtv. Копать по исходникам и ревизиям чипов - дело неблагодарное, потому что продавцы на вопрос «На каком чипе тюнер?» впадают в ступор.

 

lizard
()

Автоматическое добавление новых бэкэндов в upstream nginx

Есть фронтэнд с несколькими бэкэндами в виде различных томкатов. Как бы реализовать такое, чтобы при запуске нового бэкэнда он автоматом прописывался в соответствующий upstream, а при остановке, соответственно, удалялся? Причина в том, что крутиться это будет на амазоне, и хотелось бы часть нагрузки вынести на дешёвые spot-инстансы, которые планируется подключать по мере надобности (например, по расписанию, когда у большинства клиентов начался рабочий день и они дружно ломанулись, либо из-за внезапного роста нагрузки на основной сервер). Амазоновский Load Balancer не слишком подходит - определённые поддомены вроде demo*, dev*, stage* (число которых тоже часто меняется) должны направляться на определённый же application-сервер, а не равномерно раскидываться на кого round-robin пошлёт. Химичить с днсами не выйдет - во-первых, у меня нет к ним доступа, а во-вторых, ждать, пока они обновятся, не вариант. Мне выдали *.site.com и всё на этом.

В данный момент рядом с nginx уже крутится один велосипед на uwsgi+python, добавляющий новые виртуальные хосты для поддоменов по шаблонам, когда пользователь жмёт кнопочку на сайте. В принципе, не слишком трудно привернуть к нему ещё одно колесо и дёргать его через тот же cloud-init, но хотелось бы понять, не является ли эта схема изначально порочной и не проглядел ли я чего-нибудь в силу малого опыта.

 , ,

lizard
()

RSS подписка на новые темы