среда, 31 декабря 2014 г.

openvz + iptables nat

# uname -a
Linux r31.ru 2.6.32-042stab102.9 #1 SMP Fri Dec 19 20:34:40 MSK 2014 x86_64 x86_64 x86_64 GNU/Linux

При попытке сделать iptables -t nat -L получаем
iptables v1.4.7: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

iptable_nat, nf_nat загружены.

вторник, 30 декабря 2014 г.

php 5.2 в конце 2014 года

До сих пор есть сайты, которые работают только под php 5.2, не выше. Почему не поправить их? Например, позиция владельца "я не буду платить, оно же работает!", а своих денег на программиста нет. Особенно если таких сайтов даже больше 10, а если счет идет на сотни и тысячи?
Или когда есть что-то кодированное (cms), тем же zend, и версия cms больше не на поддержке/той фирмы больше нет. Нужно переделывать сайт с нуля.
Надо ставить что требуется, и пусть официально оно уже не поддерживается...
Хотя и разработчики php тоже поступили по свински, серьёзно изменили некоторые вещи, сломав совместимость, но не стали делать 5.2-LTS версию. Лучи поноса в их сторону.

Отдельно хорошо было бы рассмотреть связку этих версий с ispmaanager, но пока нет возможности. В этом плане лучше всего работает система, где php только 1 версии.

четверг, 25 декабря 2014 г.

FreeSWITCH: BLA, BLF, SLA

BLA stands for Bridged Line Appearance. It allows a user to receive and make calls on the line appearance of another user that appears on their phone. It also shows whether that user is on the phone or not.

SLA - Shared Line Appearance
Shared Line Appearances: SLAs allow you to place a call on hold at one set and pick it up easily at another set. SLA is also known as SCA: Shared Call Appearance. You can join an existing conversation be pressing the corresponding line button. Typically the phones will have dedicated buttons with LEDs for each of the shared lines.

BLF (busy lamp field)
BLF stands for Busy Lamp Field. It will show you if the user is on the phone or not, and allows you to use that button as a speed dial to call that user. You can not make a call on that user's line from your phone.

http://www.voip-info.org/wiki/view/Asterisk+SLA
http://lists.sip-router.org/pipermail/users/2008-August/019369.html

вторник, 16 декабря 2014 г.

CentOS 7 + otrs 4

Сразу скажу, запустить на 7 тоже можно, но граблей там море. Например, фирменный пакет, файл /etc/sysconfig/otrs - проверки старыми методами. Об этом будет ниже.

Читаем, качаем
http://otrs.github.io/doc/manual/admin/stable/en/html/installation.html#installation-on-centos
https://www.otrs.com/homepage/try/

CentOS 7 и новый firewall

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html#sec-Introduction_to_firewalld

По сути, это тот же iptables, но несколько в другом виде, в чём-то более логичном.
Из основных фич - релоад не рвёт соединения, хотя при аккуратной работе с iptables этого тоже можно было избежать. Но софт типа shorewall ТАК не умел, что в организациях на 200+ машин работало уныло. Теперь недоадминам, внедряющим такие поделки в большие сети, будет проще.

Пример разрешения http
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

вторник, 9 декабря 2014 г.

CentOS 6 + Python 2.7

В сети есть много примеров с ручной компиляцией питона в /usr, но пока ни в одном примере не было последующего заворачивания в пакеты, а прямая установка хороша только для девел-машин и вообще долго.
Тем более, штатно есть пакет
centos-release-SCL.x86_64 : CentOS Software Collections release configs
(Там же - Perl 5.16.3, PHP 5.4.14, Python 3.3, Ruby 1.9.3, MariaDB 5.5, MySQL 5.5, PostgreSQL 9.2, Node.js 0.10)

вторник, 2 декабря 2014 г.

CentOS 6: несколько адресов на интерфейсе

Просто добавить алиас можно 2 способами:

  1. ip addr add 1.2.3.4/29 dev eth0 - это добавит алиас, и по ip addr оба адреса будут показаны на 1 устройстве. Но такую схему не покажет ifconfig (в отличии от freebsd, где есть штатный alias)
  2. ifconfig eth0:0 inet 1.2.3.4/32 (устаревший метод), появится новое устройство eth0:0.
    Но ip addr add 1.2.3.4/32 dev eth0:0 - добавит айпи как в 1 варианте, без создания eth0:0. Можно сделать через конфиг файл по методу 2 и сделать ifup eth0:0
Добавление в конфиги
  1. правим основной конфиг, добавляя IPADDR2, IPADDR3 итд
    IPADDR=172.25.33.1
    PREFIX=29
    IPADDR2=172.25.33.2
    PREFIX2=29
  2. копируем оригинальный ifcfg-eth0 в ifcfg-eth0:0 и заменяем внутри eth0 на eth0:0

Линки

четверг, 27 ноября 2014 г.

понедельник, 27 октября 2014 г.

Особенности обновления таймзон

Предисловие:
Рецепты для centos, debian, freebsd, небольшой такой сборник.
Не забываем обновить сначала порты/пакеты, у дебиана apt-get update, у freebsd через svnup или portsnap fetch update. Centos сам обновит.

воскресенье, 12 октября 2014 г.

centos 6 + zabbix 2.2

rpm -Uvh http://repo.zabbix.com/zabbix/2.2/rhel/6/`uname -m`/zabbix-release-2.2-1.el6.noarch.rpm
yum -y install zabbix-agent (и опционально zabbix-server)
chkconfig zabbix-agent on

https://www.zabbix.com/documentation/2.2/ru/manual/installation/install_from_packages

И может пригодиться
iptables, для сервера:
# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT
# service iptables save

selinux:
 /etc/init.d/zabbix-agent stop && semodule -r zabbix && /etc/init.d/zabbix-agent start

среда, 8 октября 2014 г.

Поднимаем syslog сервер

Может быть потребность в централизованном сборе и хранении логов, и syslog штатно умеет слать логи на удалённый сервер. Также это может быть сетевое оборудование, IP телефоны итд. На примере debian 6


вторник, 30 сентября 2014 г.

IP-DECT от Yealink W52P

Теме около года, но мне пока актуально.

http://habrahabr.ru/company/3cx/blog/191366/
Трубка конечно смотрится кирпичом, да и доставший многих глянец тут присутствует. Слишком высокая цена, тот же грандстрим 710 или панасоник tgp500 - дешевле в 2 раза, а по возможностям они схожи. Есть (??? По некоторым отзывам НЕТ) поддержка GAP протокола, поэтому можно привязывать и "чужие" GAP-трубки, базовый функционал будет работать.
Handover (прозрачный роуминг между базами) отсутствует, как и упомянутых моделей.
Из плюсов -- умеет POE. Provisioning под вопросом (грандстрим, панасоник - умеют), хотя есть такое
Provisioning a Yealink DECT W52P

Табличка сравнения

http://www.ucexpert.ru/archives/4468
хотя тут сказано, что handover есть. Возможно, было добавлено в новых прошивках, но не совсем понятно как это реализовано технически, поскольку нет "главного" контроллера, который отсылает данные в мир от себя, а тут "вдруг" меняется айпи (база-то сменилась)

Ещё интерсный отзыв
http://forum.ixbt.com/topic.cgi?id=88:4698

понедельник, 22 сентября 2014 г.

Couchbase: Editing of document with size more than 2.5kb is not allowed

Есть такая проблема в консоли CouchBase как
Editing of document with size more than 2.5kb is not allowed

Лечим жадность бесплатной версии багу: в
/opt/couchbase/lib/ns_server/erlang/lib/ns_server/priv/public/js/documents.js
на строке 214 меняем docBytesLimit: 2500, или на строке 362 находим
function isJsonOverLimited(json) {
  return getStringBytes(json) > self.docBytesLimit;
}

и заменяем на
function isJsonOverLimited(json) {
  //return getStringBytes(json) > self.docBytesLimit;
  return false;
}

Перезапускаем, радуемся.

http://stackoverflow.com/questions/19090611/couchbase-2-2-0-document-size-editing-limit

четверг, 18 сентября 2014 г.

FreeSWITCH: русификация

Чтобы русифицировать то же IVR меню, нужно:
1) установить mod_say_ru и активировать его в modules
2) установить русские звуки elena (например freeswitch-sounds-ru-RU-elena-all)
3) добавить в vars.xml
<X-PRE-PROCESS cmd="set" data="default_language=ru"/>
4) перезапустить freeswitch или перечитать настройки через reloadxml

понедельник, 15 сентября 2014 г.

Panic loop on ZFS with 9.1-RELEASE

http://lists.freebsd.org/pipermail/freebsd-fs/2013-March/016704.html

I still haven't succeeded in importing the pool readwrite, but I have
succeeded in importing it readonly.

This has been confirmed as a bug by the ZFS illumos ML people.
Description :
You can't import readonly a pool that has cache devices, because the
import will try to send write IOs to auxiliary vdevs, and hit an
assert() call, thus provoking a panic.

Workaround :
Destroy cache devices before zpool import -o readonly=on -f <pool>.

Интеграция redmine и SVN

http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Redmine_for_advanced_Subversion_integration
Есть 2 пути: более простой через apache/mod_dav_svn/mod_perl и более сложный "не рекомендуемый", через pam+nss


http://www.redmine.org/projects/redmine/wiki/HowTo_to_handle_SVN_repositories_creation_and_access_control_with_Redmine
http://www.redmine.org/projects/redmine/wiki/Repositories_access_control_with_apache_mod_dav_svn_and_mod_perl
http://www.redmine.org/projects/redmine/wiki/HowTo_Automate_repository_creation

воскресенье, 14 сентября 2014 г.

debian 7: ставим redmine 1.4

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

Есть сервер, на котором до сих пор был редмайн 0.9.3 (еще 5 ветка), а нужна последняя. В данном случае используется режим massenger через apache.
Особенность дебиан-версии редмайна в том, что файлы раскиданы по разным местам, в частности
/etc/redmine - настройки
/usr/share/redmine - исполняемые файлы, плагины... то, что меняться не должно
/var/lib/redmine - файлы, загружаемые пользователями

вторник, 9 сентября 2014 г.

CentOS 6: переход на httpd-itk

Тема конечно старая, но может быть кому-то актуальной. Переключаем apache на ITK
1) подключаем epel (интересный был найден метод: yum install epel-release из extras), при ругани
2) в /etc/sysconfig/httpd добавляем
HTTPD=/usr/sbin/httpd.itk
3) заменяем обработчик
sed -i ‘s/SuexecUserGroup/AssignUserID/’ /etc/httpd/conf/httpd.conf
4) в php.conf
<IfModule itk.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
5) если есть ispmanager:
"необходимо отредактировать конфиг файл - /usr/local/ispmgr/etc/ispmgr.conf — добавить строчку Option ApacheMPM и изменить строчку ApacheProcName httpd на ApacheProcName httpd.itk"

Также могут сломаться сессии, для этого надо сказать в конфиге сайта что-то типа
    php_admin_value upload_tmp_dir "/home/site/data/mod-tmp"
    php_admin_value session.save_path "/home/site/data/mod-tmp"


http://wiki.owlhost.net/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_mpm-itk_%D0%BD%D0%B0_CentOS/ISPmanager
http://svirchoff.ru/linux/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-apache-mpm-itk-%D0%BD%D0%B0-%D1%81entos-6-c-ispmanager/

среда, 20 августа 2014 г.

spa3102: удалённая перезагрузка

Изредка spa3102 по разным причинам надо перезапустить, но в админке такой опции нет...
1) http://192.168.1.2/admin/reboot
2) из консоли curl -u admin:password http://192.168.1.2/admin/reboot (вариант - curl --digest -u username:password ...)

вторник, 19 августа 2014 г.

CentOS 7: ставим ngrep

Есть неплохой снифер ngrep, иногда удобнее tcpdump-а, но в 7 версии его нет в epel, да и вообще на просторах интернета. Благо, собирается он несложно.

ngrep is grep command that works on realtime network data.

ngrep strives to provide most of GNU grep's common features, applying them to the network layer. ngrep is a pcap-aware tool that will allow you to specify extended regular or hexadecimal expressions to match against data payloads of packets. It currently recognizes TCP, UDP and ICMP across Ethernet, PPP, SLIP, FDDI, Token Ring and null interfaces, and understands bpf filter logic in the same fashion as more common packet sniffing tools, such as tcpdump and snoop.

Наш пример для отладки SIP:
ngrep -d any '000\*000' proto udp -q -W byline

понедельник, 18 августа 2014 г.

dhcp ping before offer: Mikrotik, isc-dhcpd

Есть у dhcpd такая архиполезная опция как ping before offer, то есть проверка, что адрес, выбранный для выдачи, пока не занят. Зачем это нужно? Например, когда в сети более одного dhcp сервера, что имеет смысл для отказоустойчивости.
isc-dhcpd:
есть штатная глобальная опция, в конфиг, без аргументов
ping-check

Mikrotik:
Судя по документации, опция изначально активна и отключению не подлежит. Но данный факт требует проверки. Увы, внешнюю БД для leases не подключить никак, хотя есть возможность запросить внешний Radius сервер о доступных адресах.
Есть особенности настройки, весьма непонятные:
1) сначала надо сделать пул адресов, это делается в IP -> Pool или /ip pool add ...
2) диапазон указывается через тире, в консоли это делается нормально, через веб абсолютно невнятно
3) потом IP -> DHCP Server -> DHCP создаём сеть, в Networks задаём настройки выдачи... В общем, на настройку надо 6 вкладок пробежаться, минимум 3.

Линки
http://www.ipamworldwide.com/server-configuration-parameters.html
https://lists.isc.org/pipermail/dhcp-users/2013-June/016899.html
http://wiki.mikrotik.com/wiki/Manual:IP/DHCP_Server

четверг, 31 июля 2014 г.

Следующая версия PHP будет называться PHP 7

http://habrahabr.ru/post/231605/
В основу PHP7 ляжет PHPng. Многие из свежих предложений и патчей делаются уже на его базе — в том числе такие интересные вещи, как uniform variable syntax, native big integers и abstract syntax tree. Из-за изменений во внутренних API, многие сторонние расширения (например, xdebug, расширения для mongodb и memcached, php-protocolbuffers) должны быть переработаны, поэтому в PHP 5.7 PHPng войти уже не сможет.


И еще интересное "на почитать":
PHP 6 не будет, не осилили 
Суть в том, что 6 версия должна была содержать в ядре UTF-16, но "не осилили", и почти все плюшки кроме юникода пошли в 5.4


python: pip или easy_install?

"Использую easy_install только для того чтобы установить pip… Он умеет ставить пакеты прямо из систем управления пакетами, например:
pip install git+git://github.com/frol/django-email-confirmation.git

Также можно записать в файл список всех пакетов, которые нужны в проекте и потом установить все этим пакеты используя команду:
pip install -r requirements.txt

Ну, и конечно можно указывать требуемые версии используя знаки сравнения:
pip install liten==0.1.3
pip install liten>=0.1.3 "
http://habrahabr.ru/post/112332/#comment_3595049


What's the difference between pip and easy_install?
  • All packages are downloaded before installation. Partially-completed installation doesn’t occur as a result.
  • Care is taken to present useful output on the console.
  • The reasons for actions are kept track of. For instance, if a package is being installed, pip keeps track of why that package was required.
  • Error messages should be useful.
  • The code is relatively concise and cohesive, making it easier to use programmatically.
  • Packages don’t have to be installed as egg archives, they can be installed flat (while keeping the egg metadata).
  • Native support for other version control systems (Git, Mercurial and Bazaar)
  • Uninstallation of packages.
  • Simple to define fixed sets of requirements and reliably reproduce a set of packages.
pip doesn’t do everything that easy_install does. Specifically:
  • It cannot install from eggs. That’s not a problem anymore though because pip supports the superior binary wheel format since the 1.4 release.
  • It is incompatible with some packages that extensively customize distutils or setuptools in their setup.py files.
http://xahlee.info/python/python_whats_pip_easyinstall_setuptools.html
https://pip.pypa.io/en/1.5.X/other-tools.html#easy-install
http://stackoverflow.com/questions/3220404/why-use-pip-over-easy-install


Похоже, у easy_install только 1 плюс - штатно пакеты уже собраны, не надо держать билд-серверы с компиляторами. Плюс
" в debian-based есть пакет python-stdeb. в нём — утилка pypi-install, которая делает из eggа deb-пакет и ставит его."
http://habrahabr.ru/post/112332/#comment_3596282

среда, 16 июля 2014 г.

FreeBSD: not staged

Было обнаружено для некоторых портов такое
Not staged. See http://lists.freebsd.org/pipermail/freebsd-ports-announce/2014-May/000080.html

Что такое staged:
Staging is when the port installs into the work directory instead of into /. From here a package can be created without ever installing into / and often as a user without root. This also gives us abilities to improve quality of packages and opens up opportunities for sub-packages in the future. With staging we have had the ability to add in-tree testing of plists which in the past required a tool such as porttools, Tinderbox or Poudriere.

A guide for converting your port to Staging can be found at:
    https://wiki.freebsd.org/ports/StageDir

Совсем вкратце: нужно иметь возможность установки пакетов не от рута и не в корень, а в рабочий каталог.

с 31 июня такие порты помечены deprecated, мейнтейнеры обнулены (сброшены), и 31 августа удалены из дерева портов.

http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/porting-submitting.html

понедельник, 14 июля 2014 г.

CouchApp: JavaScript приложения в CouchDB

http://habrahabr.ru/post/110675/
CouchApp это небольшие приложения, которые пишутся на javascript и могут выполнять роль "обёртки", выполняя преобразования над данными, проверки итд. Ну и просто помогают формировать html код.

https://github.com/couchapp/couchapp
http://couchdb.readthedocs.org/en/latest/couchapp/views/intro.html

zabbix2 и некоторые изменения

Во 2 версии появился шаблон для mysql, включающий в себя поля

MySQL insert operations per second mysql.status[Com_insert]
MySQL commit operations per second mysql.status[Com_commit]
MySQL begin operations per second mysql.status[Com_begin]
MySQL bytes sent per second mysql.status[Bytes_sent]
MySQL status mysql.ping
MySQL bytes received per second mysql.status[Bytes_received]
MySQL delete operations per second mysql.status[Com_delete]
MySQL rollback operations per second mysql.status[Com_rollback]
MySQL slow queries mysql.status[Slow_queries]
MySQL uptime mysql.status[Uptime]
MySQL queries per second mysql.status[Questions]
MySQL update operations per second mysql.status[Com_update]
MySQL select operations per second mysql.status[Com_select]
MySQL version mysql.version

А вот обёртки под него нет. И тут используется сила 2 версии: можно описать шаблон так
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | mysql -N | awk '{print $$2}'

В такой схеме легко добавить например репликацию.

Для сравнения, как выглядели записи для 1 версии:
### Set of parameters for monitoring MySQL server (v3.23.42 and later)
### Change -u and add -p if required
#UserParameter=mysql.ping,mysqladmin -uroot  ping|grep alive|wc -l
#UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f2 -d" "
#UserParameter=mysql.threads,mysqladmin -uroot status|cut -f3 -d":"|cut -f2 -d" "
#UserParameter=mysql.questions,mysqladmin -uroot status|cut -f4 -d":"|cut -f2 -d" "
#UserParameter=mysql.slowqueries,mysqladmin -uroot status|cut -f5 -d":"|cut -f2 -d" "
#UserParameter=mysql.qps,mysqladmin -uroot status|cut -f9 -d":"|cut -f2 -d" "
#UserParameter=mysql.version,mysql -V
и в этом случае переменные были просто mysql.uptime, mysql.questions итд
Но нигде новый формат толком не описан, даже в офдоке на версию 2.0

Линки
https://www.zabbix.com/forum/showthread.php?t=39338
https://www.zabbix.com/documentation/ru/2.0/manual/appendix/recipes
https://www.zabbix.com/documentation/2.0/manual/appendix/items/supported_by_platform
http://www.slideshare.net/shinguz/mysql-monitoring-with-zabbix
https://www.zabbix.com/forum/archive/index.php/f-11.html
https://www.zabbix.com/documentation/2.0/manual/config/items/userparameters/extending_agent

Centos 6: python 2.7, 3.3, ruby 1.9.3 итд

Полный список

3. Available Collections

Currently, the following collections are available for CentOS 6.5 and later (package name in parenthesis):

  • Ruby 1.9.3 (ruby193)
  • Python 2.7 (python27)
  • Python 3.3 (python33)
  • PHP 5.4 (php54)
  • Perl 5.16.3 (perl516)
  • Node.js 0.10 (nodejs010)
  • MariaDB 5.5 (mariadb55)
  • MySQL 5.5 (mysql55)
  • PostgreSQL 9.2 (postgresql92) 
Установка:
yum install -y centos-release-SCL
этот пакет в репе extras, по умолчанию extras активен (enabled=1)

Ттот же питон 2.7 будет отдельным названием python27, потому что заменять штатный питон нельзя -- сломается ряд системных утилит включая yum.

http://wiki.centos.org/AdditionalResources/Repositories/SCL
http://dev.centos.org/centos/6/SCL/docs/

Метод 2:
http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/
https://github.com/0xdata/h2o/wiki/Installing-python-2.7-on-centos-6.3.-Follow-this-sequence-exactly-for-centos-machine-only

Выпуск CentOS 7


Вышел релиз Centos 7http://habrahabr.ru/post/229043/
Из глобальных изменений отметил бы отказ от 32 битных сборок и переход на файловую систему xfs по умолчанию. Переход по умолчанию на сборку mariadb вместо mysql, монтирование /tmp в tmpfs
systemd не самых свежих версий
завязка на NetworkManager

Обновление -- как обычно, через чистую установку.

среда, 9 июля 2014 г.

mount: unknown filesystem type 'linux_raid_member'

# mount /dev/sda3 /mnt/
mount: unknown filesystem type 'linux_raid_member'

Можно прямо указать ФС через -t ext3 например. Но вариант пригоден только для зеркала, прочие уровни надо монтировать через md, загрузив
insmod md_mod

Может быть ошибка
mount: /dev/sda3 already mounted or /mnt/ busy
С ненулевой вероятностью уже загружен md_mod и появились /dev/md*, тогда надо монтировать именно md устройство.

четверг, 3 июля 2014 г.

FreeSWITCH: shoutcast

Вроде бы, зачем может быть нужен shoutcast? Но он становится полезен, когда есть большая очередь, внешний источник звука может существенно разгрузить диск и freeswitch. Но надо быть осторожным с перекодированием из mp3, это требует ресурсы.

https://wiki.freeswitch.org/wiki/Mod_shout

простейший пример
<action application="playback" data="shout://scfire-dll-aa02.stream.aol.com:80/stream/1074"/>

Можно и писать на сервер (что-то транслировать в мир)
<action application="record" data="shout://source:pass@10.10.10.10:8000/stream.mp3"/>

Пример в вики (и выше) указывает на несуществующий адрес, для теста можно взять тут
http://www.shoutcast.com/
http://radio.aol.ca/

вторник, 24 июня 2014 г.

Разбираемся с kazoo

будет дополняться, в работе



Ещё недавно было описание на http://2600hz.org/products.html, но больше нету. Есть чуть более полное описание тут
http://www.ohloh.net/p/KazooPlatform

Kazoo is a scalable, distributed, cloud-based telephony platform that allows you to build powerful telephony applications with a rich set of APIs.

Designed to handle anything from large carrier to small countries, the Kazoo infrastructure can do it all. There are no lock-ins and the software is open-source to give you complete freedom. Come join us and change the way people communicate; the VoIP revolution is here.

Services include:
- Complete redundancy and failover between data centers
- Complete replication of all data
- Use of Map/Reduce algorithms inside NoSQL databases
- Multi-master replication and caching of registrations, active channels and call lookups
- Load balancing built-in
- Event driven messaging for managing and using calls
- A complete REST interface for implementing call flow features

pdf о структуре, оно же на 2 сайтах
http://www.kamailio.org/events/2013-KamailioWorld/11-James.Aimonetti-Kazoo.pdf
http://www.scribd.com/doc/143292637/2600hz-Kazoo-Kamailio-Integration-Deck-from-Kamailio-World

четверг, 19 июня 2014 г.

Осваиваем SIPp

Есть неплохой тестер для sip, называется SIPp, утилита для генерации нагрузки на SIP оборудование. Хорошо подходит для тестирования как asterisk, так и freeswitch-а.
http://sipp.sourceforge.net/

Под рукой стоит держать офдоку (для версии 3.3, которая например в centos ставится)
http://sipp.sourceforge.net/doc3.3/reference.html
Документация конечно не особо подробная, но всё-таки там многое есть + начинать можно оттуда. Там есть упоминания даже таких вещей как rrs, next_url, start_txn итд, что нужно для всяких b2bua. Есть даже картинки запросов в текстовом виде.

https://mojolingo.com/blog/2013/load-testing-voice-applications-with-sipp/
мало примеров, но много основ.

среда, 18 июня 2014 г.

По данным отчёта Mozilla, доля негативных отзывов об интерфейсе Australis составляет 84%

C Firefox 28 подключили новый, хромоподобный, интерфейс. Но нравится он не всем...
http://www.opennet.ru/opennews/art.shtml?num=38504

Вернуть интерфейс примерно к старому виду:
Classic Theme Restorer

Но вообще, клонировать хром это тупиковый путь, и хром выбирают совсем не за скругления табов... Мне, например,хром нравится нормальной работой с флэшем, тормоза флэша никак не мешают остальному браузеру, и подвисание части табов не мешает работе с активной парой табов. Причина -- в многопоточности и многопроцессности хрома. Можно даже снять спокойно наиболее прожорливый процесс, а когда содержимое связанных табов понадобится - просто обновить страницу.
А не нравятся оба прожорливостью памяти. Например, хром на 600 табах ест более 20Гб оперативки, ФФ 2.0 на 700 табах влезало в 2 гига. Правда, сейчас ФФ ест даже больше хрома и течёт памятью. Эта идиотская гонка версий тоже чего стоит. А вообще, будь моя воля, стояли бы у меня везде ФФ 3.5, как "последняя из могикан".

Ещё убрали диспетчер вкладок. Вообще. У того же хрома диспетчер есть и вполне рабочий, так что халтурно функционал копируют.

вторник, 17 июня 2014 г.

kamailio -- автодополнение не работает?

kamcmd can work in command line mode (the RPC or command name is just another command line parameter) or in interactive mode. The interactive mode supports history and tab-completion (if kamcmd was compiled with libreadline support).

Ставим libreadline, пересобираем.

понедельник, 16 июня 2014 г.

Про гугл, кремниевую долину и сан-франциско

(1) http://blogerator.ru/page/molchanie-gugljat-ili-grozdja-narodnogo-gneva-google-protesty-avtobus
(2) http://blogerator.ru/page/strasti-budimirovy-programmisty-prognoznaja-analitika-avtomatizacija-1
(3) http://blogerator.ru/page/strasti-budimirovy-prognozy-analitika-razvitija-progress-it-2
(4) должна быть еще часть

Из-за бума технологии и технологических компаний (не только Google), очень сильно растут цены на жилье и службы. Простые учителя, продавцы и другие, кто зарабатывает в несколько раз меньше “технологической элиты” (тут я имею ввиду не только программистов, а всех, кто связан с бумом так или иначе, включая фирмы, которые делают аудит или поставляют контракторов), оказываются в довольно невыгодном положении. Они не могут позволить купить себе дом и становятся перед выбором – переезжать в место подешевле, где жить доступнее, или оставаться, но платить нереальные деньги за съем/садик/итп., и навсегда забыть про мечту о собственном доме.
http://larrr.com/google-sux/

Преставьте себе место, где живут богатые люди в большом количестве. Вопрос на засыпку – что это значит для цен на недвижимость и услуги? Правильно – они будут охренеть какие высокие. Садик за 2000$ в месяц? Легко! Посредственный старый маленький дом за 715 тысяч в ебенях и с плохими школами? Да без проблем! Думаете, снять дешевле? Да вряд ли, 2500$+ в месяц.

Так что, если вдруг получите оффер в Силиконовой, на 100 000$/год со всеми плюшками, и вы не холостяк (или холостячка), то есть все шансы, что будете сводить концы с концами. А свой дом вам будет только сниться. Разве что вторая половинка тоже работает, и вам не надо отправлять трех карапузов в садик – по 2000$ за нос :}.
http://larrr.com/ne-vse-kotu-maslenitsa/

Какая же silicon valley, кремниевая или силиконовая?

http://beta.hstor.org/getpro/habr/comment_images/bed/62b/039/bed62b0395db05388bb2b008760a7a24.png
А хитрость в том, что оба названия существуют, только это разные долины. О той, которая техническая - она таки кремниевая, а силиконовая это в Сан-Фернандо, она же порно долина. В вики указано некорректно, ибо "вики не устанавливает нормы, а идёт за ними", что делает её бессмысленной.
И маленький хинт: silicon это кремний, он же Si, silicium.

воскресенье, 8 июня 2014 г.

nginx proxy_cache

syntax: proxy_cache [зона|off]
default: off
context: http, server, location

Директива задаёт зону для кэширования. Одна и та же зона может использоваться в нескольких местах. Параметр "off" запрещает кэширование, унаследованное с предыдущего уровня конфигурации.

proxy_cache_key
Ключ, по которому считается адрес кэшированной страницы

proxy_cache_path
где лежит кэш страниц

proxy_ignore_headers
Какие заголовки игнорировать, например Expires Cache-Control Set-Cookie

proxy_cache_use_stale
Когда доставать данные из кэша, например таймаут, 502 итд

Могут пригодиться proxy_hide_header, proxy_cache_bypass, proxy_no_cache

Но кэширование это только половина проблемы, кэши ещё надо чистить. В частности, есть proxy_cache_purge
Прозрачное кэширование в nginx для всех и каждого
Кеширующий прокси-сервер на nginx. Хитрая конфигурация
nginx + apache. Кеширование

Весьма полезная дока об особенностях

четверг, 5 июня 2014 г.

Cisco Express Forwarding (CEF)

Cisco Express Forwarding (CEF) — технология высокоскоростной маршрутизации/коммутации пакетов, использующаяся в маршрутизаторах и коммутаторах третьего уровня фирмы Cisco Systems, и позволяющая добиться более быстрой и эффективной обработки транзитного трафика.
Функционал, который поддерживает CEF:
  • QoS
  • ACL
  • Zone Based Firewall
  • NAT
  • Netflow
  • IPSec
  • GRE
  • PBR
CEF не работает в следующих случаях:
  • Включен ACL Logging (в конце ACL добавлено слово log, например deny ip any any log)
  • Пакеты предназначены для самого маршрутизатора/коммутатора.
  • Нет L2 Adjacency. 
http://xgu.ru/wiki/Cisco_Express_Forwarding

и немного тут
http://www.opennet.ru/base/cisco/cisco_mem.txt.html

вторник, 3 июня 2014 г.

FreeSWITCH: ACL

https://wiki.freeswitch.org/wiki/ACL
ACL во FreeSWITCH
http://blog.2600hz.com/post/18096749028/understanding-how-fs-supports-opensips-as-a

Пример: когда надо сделать авторизацию по IP (например FS стоит за opensips/kamailio) и всё лишнее фильтруется, можно сделать так:
autoload_configs\acl.conf.xml
     <list name="sip_ip_auth" default="deny">
       <node type="allow" cidr="200.2.2.2/32"/>
     </list>

sip_profiles/internal.xml
set auth-calls=false

и пример из dialplan/public.xml
    <extension name="from_kamailio">
      <condition field="network_addr" expression="^2\.1\.10\.10$" />
      <condition field="destination_number" expression="^(.*)$">
        <!-- <action application="info"/> -->
        <action application="bridge" data="sofia/internal/$1@1.1.1.1"/>
        <!-- <action application="transfer" data="$1 XML default"/> -->
      </condition>
    </extension>
в данной схеме не будет работать multi-tenant, тут надо вместо айпи что-то типа ${to-domain} (именно такой переменной нету)
Включив action application="info" -- можно увидеть все доступные переменные, также через консоль: uuid_dump id_ноги

ещё линки
https://www.mail-archive.com/freeswitch-users@lists.freeswitch.org/msg00679.html

пятница, 30 мая 2014 г.

FreeSWITCH: работа с очередями

2 основных модуля: mod_fifo и mod_callcenter

proxmox: HA, fencing

Fencing is vital for Proxmox to manage a node loss and thus provide effective HA. Fencing is the mechanism used to prevent data incoherences between nodes in a cluster by ensuring that a node reported as "dead" is really down. If it is not, a reboot or power-off signal is sent to force it to go to a safe state and prevent multiple instances of the same virtual machine run concurrently on different nodes.

http://stormbp.blogspot.ru/2012/05/proxmox-ve-2-cluster-with-drbd.html
http://ru-sysadmins.livejournal.com/2222322.html
http://pve.proxmox.com/wiki/Two-Node_High_Availability_Cluster


iptables+bridge

Например, есть сервер с виртуализацией (может быть просто 2 сетевых интерфейса), где сетевые карты виртуалок сидят в бридже с основным интерфейсом, например vmbr0 с eth0 и veth100.0
Если просто вешать правила на хост-ноде, даже при policy DROP хост-нода станет недоступна, но виртуалки будут спокойно ходить через бридж. Это потому, что бридж это L2, и тут нужен ebtables и это будет примерно так
ebtables -A FORWARD -p ip --ip-source 192.168.253.1 --ip-destination 192.168.253.2 -j DROP

Если же нет нужных модулей под ebtables или хочется/нужен iptables, нам в помощь приходит
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
(через sysctl)

А с учётом интерфейса -- нужен physdev

Линки
http://toster.ru/q/29447
http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html
http://www.cyberciti.biz/faq/debian-network-interfaces-bridge-eth0-eth1-eth2/

понедельник, 26 мая 2014 г.

FreeSWITCH: не запускается

Может быть такое, что сделали service freeswitch restart -- и больше ничего не работает, в логах пусто даже несмотря на то, что включен mod_logfile и mod_syslog. И странно, что нет опции configtest.
Проверить конфиг можно так:
# freeswitch -nf -c -u freeswitch
2014-05-26 19:30:06.166869 [INFO] switch_event.c:649 Activate Eventing Engine.
2014-05-26 19:30:06.177138 [WARNING] switch_event.c:623 Create additional event dispatch thread 0
2014-05-26 19:30:06.199407 [ERR] switch_xml.c:1385 Couldnt open /etc/freeswitch/lang/de/*.xml (No such file or directory)
2014-05-26 19:30:06.204145 [ERR] switch_xml.c:1385 Couldnt open /etc/freeswitch/lang/fr/*.xml (No such file or directory)
2014-05-26 19:30:06.204169 [ERR] switch_xml.c:1385 Couldnt open /etc/freeswitch/lang/ru/*.xml (No such file or directory)
2014-05-26 19:30:06.204187 [ERR] switch_xml.c:1385 Couldnt open /etc/freeswitch/lang/he/*.xml (No such file or directory)
2014-05-26 19:30:06.204203 [ERR] switch_xml.c:1385 Couldnt open /etc/freeswitch/lang/es/es_ES.xml (No such file or directory)
2014-05-26 19:30:06.204224 [ERR] switch_xml.c:1385 Couldnt open /etc/freeswitch/lang/pt/pt_BR.xml (No such file or directory)
Cannot Initialize [[error near line 4424]: unclosed <!--]
#

То, что нет языковых каталогов хоть и ERR, но запуску не мешает, а вот незакрытый комментарий это серьёзно. Настолько, что даже в лог ничего не написать...

А что за странная строка 4424? Ответ искать в /var/log/freeswitch/freeswitch.xml.fsxml - сюда объединяются все конфиги. Править его бесполезно, но найти конкретное место и уже его искать в оригинальных конфигах можно.
Такой бы файлик еще для nginx-а...

Да, если что -- выход ... (три точки)

пятница, 23 мая 2014 г.

HP ProCurve и cisco + multicast

У многих управляемых свичей есть весьма неприятный баг: по умолчанию не работает multicast, ибо выключено, поэтому могут не работать всякие proxmox (corosync для работы требует мультикаст). Например, HP 2510-24
ftp://ftp.hp.com/pub/networking/software/2510-AdvTrafficMgmt-Aug2006-59914762.pdf
Проверяем
show ip igmp
show ip igmp config
и видим везде off. Включается на каждый влан отдельно.
vlan 1 ip igmp

cisco:
https://github.com/corosync/corosync/wiki/Corosync-and-Cisco-switches

switch# config t
switch(config)# ip multicast-routing
switch(config)# int vlan1
switch(config-if)# ip pim sparse-dense-mode
switch(config-if)# ^Z
switch# wr

вариант 2
# conf t
# no ip igmp snooping
http://pve.proxmox.com/wiki/Multicast_notes

proxmox: обнуление (удаление) кластера

http://undefinederror.org/how-to-reset-cluster-configuration-in-proxmox-2/


proxmox: Waiting for quorum... Timed-out waiting for cluster

При попытке запустить кластер может быть ошибка (при service cman restart)
Starting cluster:
   Checking if cluster has been disabled at boot... [  OK  ]
   Checking Network Manager... [  OK  ]
   Global setup... [  OK  ]
   Loading kernel modules... [  OK  ]
   Mounting configfs... [  OK  ]
   Starting cman... [  OK  ]
   Waiting for quorum... Timed-out waiting for cluster
[FAILED]

Что может быть не так:
1) проверить /etc/hosts, что адреса и хосты совпадают
2) имя кластера не равно имени одной из нод
3) стоит свич, который фильтрует мультикаст (если свич управляемый и/или их больше 1 -- шанс такого случая большой)
4) проверить, что /etc/cluster/cluster.conf совпадают на нодах
5) фаервол выключен или правильно настроен
6) нет проблем с маршрутизацией

В 3 случае может помочь перевод на юникаст
cluster.conf:
<cman transport="udpu" keyfile="/var/lib/pve-cluster/corosync.authkey">

Но это имеет смысл только когда нод 2-3, так как сильно растет нагрузка на сеть.
Можно также попробовать выставить <quorumd> там же.
Проверить мулькаст-пинги можно через omping, ssmping

Также имеет смысл ознакомиться с
http://pve.proxmox.com/wiki/Multicast_notes

линки

proxmox + ploop

The plan is to add ploop support when we switch to 3.10 kernel (when openvz team release a 3.10 kernel).


понедельник, 19 мая 2014 г.

What's the difference between utf8_general_ci and utf8_unicode_ci

http://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci/766996#766996

There are at least two important differences:
  • Accuracy of sorting
    utf8_unicode_ci is based on the Unicode standard for sorting, and sorts accurately in a very wide range of languages.
    utf8_general_ci comes very close to correct Unicode sorting in many common languages, but has a number of inaccuracies in some languages making in unsuitable for correct sorting in those languages.
  • Performance
    utf8_general_ci is faster at comparisons and sorting, because it takes a bunch of performance-related shortcuts.
    utf8_unicode_ci uses a much more complex comparison algorithm which aims for correct sorting according in a very wide range of languages. This makes it slower to sort and compare large numbers of fields.
Unicode defines complex sets of rules for how characters should be sorted. These rules need to take into account language-specific conventions; not everybody sorts their characters in what we would call 'alphabetical order'.
  • As far as Latin (ie "European") languages go, there is not much difference between the Unicode sorting and the simplified utf8_general_ci sorting in MySQL, but there are still a few differences:
    For examples, the Unicode collation sorts "ß" like "ss", and "Œ" like "OE" as people using those characters would normally want, whereas utf8_general_ci sorts them as single characters (presumably like "s" and "e" respectively).
  • In non-latin languages, such as Asian languages or languages with different alphabets, there may be a lot more differences between Unicode sorting and the simplified utf8_general_ci sorting. The suitability of utf8_general_ci will depend heavily on the language used. For some languages, it'll be quite inadequate.
Some Unicode characters are defined as ignorable, which means they shouldn't count toward the sort order and the comparison should move on to the next character instead. utf8_unicode_ci handles these properly.
What should you use?
There is almost never any reason to use utf_general_ci anymore, as we have left behind the point where CPU speed is low enough that the performance difference would be important. Your database will almost certainly be limited by quite other bottlenecks than this nowadays. The difference in performance is only going to be measurable in extremely specialised situations, and if that's you, you'd already know about it. If you're experiencing slow sorting, in almost all cases it'll be an issue with your indexes/query plan. Changing your collation function should not be high on the list of things to troubleshoot.
When I originally wrote this answer (over 4 years ago) I said that if you wanted, you could use utf8_general_ci most of the time, and only use utf8_unicode_ci when sorting was going to be important enough to justify the performance cost. However, the performance cost is no longer really relevant (and it may not have been back then, either). It's more important to sort properly in whichever language your users are using.
One other thing I'll add is that even if you know your application only supports the English language, it may still need to deal with people's names, which can often contain characters used in other languages in which it is just as important to sort correctly. Using the Unicode rules for everything helps add peace of mind that the very smart Unicode people have worked very hard to make sorting work properly.

FreeBSD: "/usr/ports/Mk/bsd.port.mk", line 1767: Malformed conditional (defined(USE_RC_SUBR) && ${USE_RC_SUBR:tu} != "YES")

После 5 мая многие могли в очередной раз столкнуться с багами портов, а именно:
# make
Unknown modifier 't'

"/usr/ports/Mk/bsd.port.mk", line 1767: Malformed conditional (defined(USE_RC_SUBR) && ${USE_RC_SUBR:tu} != "YES")
Unknown modifier 't'

Unknown modifier 't'

Unknown modifier 't'

"/usr/ports/Mk/bsd.sites.mk", line 957: Malformed conditional (!empty(_PERL_CPAN_ID) && ${_PERL_CPAN_FLAG:tl} == "cpan")
Unknown modifier 't'

"/usr/ports/Mk/bsd.port.mk", line 2929: Unclosed conditional/for loop
"/usr/ports/Mk/bsd.port.mk", line 2929: Unexpected end of file in for loop.

"/usr/ports/Mk/bsd.port.mk", line 6708: Unclosed conditional/for loop
"/usr/ports/Mk/bsd.port.mk", line 6708: Unexpected end of file in for loop.

make: fatal errors encountered -- cannot continue

вторник, 6 мая 2014 г.

SFP: подключаем не фирменные SFP к брендированному оборудованию

Если сравнить цены на фирменные и "чужие" SFP -- разница может быть в 10 раз. Например, WDM одномод 3км - у HP цена вопроса около 20 тысяч, SNR - около тысячи, а opticin sfp-wdm3.03 -- вообще 500р.

Иногда достаточно команд (cisco)
service unsupported-transceiver
no errdisable detect cause gbic-invalid

Но иногда нужно шить модули, для этого нужен специальный SFP программатор, типа
http://shop.nag.ru/catalog/00007.Avtomatizatsiya-i-monitoring/13766.Drugoe/08255.Prog-miniUSB
+ прошивки поддерживаемых SFP, чтобы их вшить.

И полезный линк в тему
http://forum.nag.ru/forum/index.php?showtopic=43748

воскресенье, 4 мая 2014 г.

Заметки на полях: Intel vPro совсем не "PRO"

Заметки на полях: Intel vPro совсем не "PRO": Intel vPro aka AMT давно уже не "PRO". Оказывается ушлые интеловцы выпилили поддержку тэгированных вланов на интерфейсах AMT...



Интел уже много лет "энтерпрайз" в худшем смысле, увы. Именно поэтому я уважаю АМД, у них отставание примерно на поколение, но изначально дешевле, плюс даже в бытовом сегменте есть много "серверных" плюшек типа ЕСС (во всяком случае, еще пару лет назад было)

среда, 30 апреля 2014 г.

MySQL TokuDB: Высокопроизводительный MySQL-движок TokuDB переведён в разряд открытых проектов

http://www.opennet.ru/opennews/art.shtml?num=36779

Компания Tokutek открыла исходные тексты проекта TokuDB (Tokutek storage engine), в рамках которого развивается высокопроизводительный транзакционный движок хранения для MySQL и MariaDB. Вместо классических B-tree деревьев в TokuDB применяются рекурсивные индексы (Fractal Tree indexes), что в сочетании с хранением данных в сжатом виде, позволяет значительно оптимизировать операции ввода/вывода.

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

При проведении тестов, TokuDB опережает InnoDB при добавлении больших объемов данных более чем в 10 раз (InnoDB 1,555 записей в сек, TokuDB 16,437 записей в сек), но проигрывает по степени нагрузки на CPU при выборке данных. Недостаточная эффективность выборки данных компенсируется ситуациями когда требуется произвести выборку большого числа последовательно сохранённых записей. В некоторых тестах выигрыш в скорости добавления данных достигает 80 раз. Применяемые методы сжатия данных позволяют в разы уменьшить размер базы и индексов (в 6.2 раза по сравнению с InnoDB и в 5.5 раз по сравнению с MyISAM), в некоторых ситуациях степень сжатия данных может достигать 25 раз.

четверг, 24 апреля 2014 г.

Proxmox: Failed to fetch https://enterprise.proxmox.com/debian/dists/wheezy/pve-enterprise/binary-amd64/Packages The requested URL returned error: 401

При обновлении свежих версий proxmox (3.1 и старше) после apt-get update может быть ошибка
W: Failed to fetch https://enterprise.proxmox.com/debian/dists/wheezy/pve-enterprise/binary-amd64/Packages  The requested URL returned error: 401

Суть -- "гоните бабла". То есть, обновление для этого сервера не пройдет, поскольку не куплена подписка.
По хорошему, надо смотреть в сторону других продуктов, и если требуется именно KVM+OpenVZ, подобный функционал можно реализовать на базе CentOS, но без "фирменного" веб-интрефейса. Да, он несколько неудобен и сначала весьма непонятен, но многие вещи он делает неплохо.
Итак, пока остаёмся на текущем продукте, но правим ошибку.

пятница, 18 апреля 2014 г.

просмотр memcached статистики

https://code.google.com/p/phpmemcacheadmin/
http://blog.elijaa.org/index.php?pages/phpMemcachedAdmin-Download-Version-1.2.2

Пример статистики
NAME                                      SIZE   %MEM    TIME  CONN   %HIT   REQ/s   GET/s   SET/s   DEL/s   EVI/s     READ/s   WRITE/s

127.0.0.1:11211 512.0 Mb 0.5 2 ms 310 96.5 40.8 34.4 4.8 1.6 0.0 1.0 b 5.4 b
SIZETotal cache size on this server
%MEMPercentage of total cache size used on this server
%HITGlobal hit percent on this server : get_hits / (get_hits + get_misses)
TIMETime taken to connect to the server and proceed the request, high value can indicate a latency or server problem
REQ/sTotal request per second (get, set, delete, incr, ...) issued to this server
CONNCurrent connections, monitor that this number doesn't come too close to the server max connection setting
GET/s, SET/s, DEL/sGet, set or delete commands per second issued to this server
EVI/sNumber of times an item which had an explicit expire time set had to be evicted before it expired
READ/sTotal number of bytes read by this server from network
WRITE/sTotal number of bytes sent by this server to network

Есть еще вариант с sflow
https://groups.google.com/forum/#!topic/memcached/zX0s7aMTf98

Просмотр того, что есть в кэше
https://redislabs.com/blog/finally-you-can-see-whats-stored-in-your-memcached

Просмотр "живых" запросов (в динамике)
ngrep -W none -T -d any "^(get|set|delete|END|STORED|VALUE|DELETED)" port 11211 | awk '{print $1 " " $2}'

Можно просто запускать режим отладки
/usr/bin/memcached -m 128 -vvv -p 11211 -U 11211 -u ubuntu -d

линки

понедельник, 14 апреля 2014 г.

apache, nginx: ограничение видов запросов

В apache через .htaccess, Limit и LimitExcept
Например
http://www.webmasterworld.com/apache/3537686.htm
http://board.phpbuilder.com/showthread.php?10367096-.htaccess-configuration-(limit-get-allow-deny)-and-lt-Limit-GET-HEAD-POST-gt

nginx
синтаксис: limit_except метод ... { ... }
контекст: location
Ограничивает HTTP-методы, доступные внутри location. Параметр метод может быть одним из GET, HEAD, POST, PUT, DELETE, MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK или PATCH. Если разрешён метод GET, то метод HEAD также будет разрешён. Доступ к остальным методам может быть ограничен при помощи директив модулей ngx_http_access_module и ngx_http_auth_basic_module:

limit_except GET {
    allow 192.168.1.0/32;
    deny  all;
}
Обратите внимание, что данное ограничение действует для всех методов, кроме GET и HEAD.
http://nginx.org/ru/docs/http/ngx_http_core_module.html

суббота, 12 апреля 2014 г.

zabbix: учим слать почту через сервера с авторизацией

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

sendmail: Отправка почты в мир с локальным hostname

Понадобилось настроить отправку почты с сервера за NAT, вдобавок сервер с внутренним hostname (вида zabbix.local). Поменять имя сервера нельзя и нет смысла. Вообще, правильным решением было бы снести этого монстра прошлого века и поставить что-то нормальное, но было желание получить опыта.

в /etc/mail/sendmail.mc ищем LOCAL_DOMAIN и вписываем туда нужный нам хостнейм, повторяем для MASQUERADE_AS. То, что кавычки в начале и конце строки разные -- не бага, а фича, аккуратно! Чуть ниже идут MASQUERADE_DOMAIN, добавляем секцию с внешним хостнеймом (примеры там есть). А также активируем
FEATURE(`always_add_domain')dnl
FEATURE(`masquerade_entire_domain')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`allmasquerade')dnl

Теперь ставим sendmail-cf, чтобы можно было пересобрать конфигурацию, и перестраиваем конфиг
make -C /etc/mail
/etc/init.d/sendmail restart

От рута не тестируем! Сендмыл неадекватен и рутовую почту не подменяет даже с FEATURE(`allmasquerade') ! Вот всяком случае, с centos 5.10
Отслеживать можно через просмотр очереди mailq, очистка очереди через удаление файлов в /var/spool/mqueue
Причины отказа в /var/log/maillog

Линки

четверг, 10 апреля 2014 г.

SuperMicro IP KVM: no iKVM64 in java.library.path

Суть в том, что для supermicro IPMI требуется java web start, но почему-то просто JRE ему мало, нужен icedtea
sudo apt-get install icedtea-netx

Но после подключения и попытки запросить консоль можно поймать
no iKVM64 in java.library.path
Сохраняем  launch.jnlp на диск и вносим изменения в секции:
<resources os="Linux" arch="amd64"> и <resources os="Linux" arch="x86_64">, перед </resources> вписать
<property name="jnlp.packEnabled" value="true"/>
<property name="jnlp.versionEnabled" value="true"/>

<j2se version="1.6.0+" initial-heap-size="96M" max-heap-size="128M"/>

После этого должно нормально запускаться, проверим

javaws launch.jnlp

Линки
http://jskyworker.blogspot.ru/2013/02/no-ikvm64-in-javalibrarypath-supermicro.html
http://blog.coffeebeans.at/?p=83
http://www.hackerway.ch/2013/01/28/how-to-resolve-no-ikvm64-in-java-library-path-error-ubuntu-x64-12-04-lts/

вторник, 8 апреля 2014 г.

ISPManager и сбойный перенос пользователя

Бывает, что запускается процесс переноса.. и всё. Сутками будет гореть значок импорта, повторно запустить не даст -- задача запущена.
Как чистить?

  1. Удаляем /usr/local/ispmgr/var/run/ispmgr
  2. Также, /usr/local/ispmgr/var/.usermove
  3. Прибиваем pbackup (killall, pkill)
  4. А теперь сам процесс ispmgr, он перезапустится при первом же обращении к панели.
Но если возникают такие ситуации, значит что-то не так с процессом переноса, надо проверить права на каталоги, файлы, нет ли конфликтов имен, включить дебаг-режим и изучать.
Ну и помнить, что перенос далеко не всегда начинается сразу, и если мы пытаемся смигрировать миллион файлов, процесс может быть крайне долгим.

http://forum.ispsystem.com/ru/showthread.php?t=7499

DynDNS died...

To our Dyn free hostname users:

For the last 15 years, all of us at Dyn have taken pride in offering you and millions of others a free version of our Dynamic DNS Pro product. What was originally a product built for a small group of users has blossomed into an exciting technology used around the world.

That is why with mixed emotions we are notifying you that in 30 days, we will be ending our free hostname program. This change in the business will allow us to invest in our customer support teams, Internet infrastructure, and platform security so that we can continue to strive to deliver an exceptional customer experience for our paying customers.

Скорбим и ищем замену.

понедельник, 7 апреля 2014 г.

MariaDB multi-source replication

http://blog.mariadb.org/tag/mariadb-10/

Available since 10.0.0
  • Multi-source replication (MDEV-253)
    • Multi-source replication is a longtime wish of many users. In scenarios where you partition your data over many masters you can then replicate the data from all masters onto one slave. Typical use cases are:
      • Data partitioned over many masters can be pulled together onto one slave for analytical queries
      • Many masters can replicate to the same slave and a complete backup can be done on the slave
      • Newer hardware usually provides more performance. Usually all hardware isn’t upgraded at once and multi-source can be used for replicating many masters to a powerful new slave.
    • Original code from Taobao

Более подробное описание
https://mariadb.atlassian.net/browse/MDEV-253

Each master is handled by a specific replicator instance in the slave server. Each replicator instance consists of separate I/O thread, SQL thread, and associated state and configuration. In efffect, several replication slaves are running at the same time, each replicating from a separate master, but all replicating into a common data store (typically, but not necessarily to separate databases/tables).
A replicator instance is identified with a user-chosen name used in replication SQL statements such as CHANGE MASTER TO ... This name is also included in file names to distinguish the files that keep the replication state (relay logs, master.info, relay-log.info). This way, each separate instance can be configured separately, but otherwise the same way as existing single-source replication.

синтаксис
https://mariadb.com/kb/en/multi-source-replication/

воскресенье, 23 марта 2014 г.

Рассуждения о Software Defined Storage: что не так с IO?

http://habrahabr.ru/post/124755/

Первое прочтение: как он прав.
Второе: какой бред..
Третье: что-то разумное есть, но в целом идея не очень. Действительно, СХД может тоже выдать сбой, но это всегда требует переписывания софта, потому что только софт может знать, что и как обрабатывать. А дальнейшие размышления в комментах на тему вероятности правдивости -- реальный бред.

среда, 19 марта 2014 г.

Dell: обновляем прошивки

Итак, что надо обновлять:
You can perform firmware update for the following components:

    iDRAC
    BIOS
    Lifecycle Controller
    Diagnostics
    Operating System Driver Pack
    Network Interface Card (NIC)
    Power Supply Unit (PSU)
    RAID Controller

опционально -- прошивки дисков. В общем, шить там можно многое, но то что не Urgent - без особой необходимости лучше не трогать.

суббота, 15 марта 2014 г.

FreeBSD: предупреждение при сборке чего угодно из портов и ошибка про сборке lang/python2

"/usr/ports/Mk/bsd.python.mk", line 558: Malformed conditional (${PYTHON_REL} >= 320 && defined(PYTHON_PY3K_PLIST_HACK))
"/usr/ports/Mk/bsd.port.mk", line 6589: if-less endif
make: fatal errors encountered -- cannot continue

FreeBSD: scons: done reading SConscript files. error: setting stack size not supported:

При попытке собрать serf (для того же subversion) можно поймать баг

# make -C /usr/ports/www/serf install clean
===>  Building for serf-1.3.4
scons: Reading SConscript files ...
scons: done reading SConscript files.
error: setting stack size not supported:
  File "/usr/local/lib/scons-2.3.0/SCons/Script/Main.py", line 1344:
    _exec_main(parser, values)
  File "/usr/local/lib/scons-2.3.0/SCons/Script/Main.py", line 1308:
    _main(parser)
  File "/usr/local/lib/scons-2.3.0/SCons/Script/Main.py", line 1072:
    nodes = _build_targets(fs, options, targets, target_top)
  File "/usr/local/lib/scons-2.3.0/SCons/Script/Main.py", line 1228:
    jobs = SCons.Job.Jobs(num_jobs, taskmaster)
  File "/usr/local/lib/scons-2.3.0/SCons/Job.py", line 92:
    self.job = Parallel(taskmaster, num, stack_size)
  File "/usr/local/lib/scons-2.3.0/SCons/Job.py", line 365:
    self.tp = ThreadPool(num, stack_size, self.interrupted)
  File "/usr/local/lib/scons-2.3.0/SCons/Job.py", line 280:
    prev_size = threading.stack_size(stack_size*1024)
*** [do-build] Error code 2

Stop in /usr/ports/www/serf.

*** [install] Error code 1

Stop in /usr/ports/www/serf.

воскресенье, 9 марта 2014 г.

FreeBSD: ... by ``make reinstall'' to upgrade it properly. If you really wish to overwrite the old port of ports-mgmt/pkg without deleting it first, set the variable "FORCE_PKG_REGISTER"

Может получиться так, что попытка что-то обновить/установить через portmaster при установленном (и правильно настроенном) pkg вылезает баг: в списке обновлений также есть pkg, и при запуске установки выпадает ошибка

_pkg.zsh /tmp/ports/usr/ports/ports-mgmt/pkg/work/stage/usr/local/share/zsh/site-functions/_pkg
===> scripts/sbin (install) install -o root  -g wheel -m 555
pkg2ng  /tmp/ports/usr/ports/ports-mgmt/pkg/work/stage/usr/local/sbin/pkg2ng
====> Compressing man pages (compress-man) ===>  Installing for
pkg-1.2.2 ===>  Checking if ports-mgmt/pkg already installed ===>
pkg-1.2.2 is already installed You may wish to ``make deinstall'' and
install this port again by ``make reinstall'' to upgrade it properly.
If you really wish to overwrite the old port of ports-mgmt/pkg without
deleting it first, set the variable "FORCE_PKG_REGISTER" in your
environment or the "make install" command line. ***
[check-already-installed] Error code 1

Stop in /usr/ports/ports-mgmt/pkg.

например
http://lists.freebsd.org/pipermail/freebsd-pkg/2013-December/000155.html
Но причина - не баг pkg, а баг portmaster, исправленный в более свежих версиях, лечится обновлением портов + принудительным обновлением портмастера
cd /usr/ports/ports-mgmt/portmaster && make deinstall clean && make install clean

понедельник, 3 марта 2014 г.

htaccess redirect и кириллические пути

Допустим, надо сделать редирект с
http://сайт.рф/каталог/новый
в
http://сайт.рф/новый-каталог

Шаг 0, обязательный! Убеждаемся, что у нас кодировка у файла .htaccess UTF-8, без этого работать не будет!

записи будут такие
RewriteEngine On
RewriteCond %{REQUEST_URI} /каталог/новый [NC]
RewriteRule .* /новый-каталог [L,R=301]

Начальные слэши обязательны, без них будет путь на сервере.
А вот если надо на другой русский домен, сам домен надо за-punycode-ить, например на https://www.reg.ru/whois/punycode
для сайт2.рф будет 
RewriteRule .* http://xn--2-7sb1a4ah.xn--p1ai/новый-каталог [L,R=301]

Можно попробовать объединить строки в 1
RewriteRule /каталог/новый /новый-каталог [L,R=301]

И пара полезных линков "по теме"
20+ правил .htaccess, которые должен знать каждый разработчик
Директива RewriteCond

четверг, 27 февраля 2014 г.

Intel NUC - небольшой обзор

Что это
http://www.intel.ru/content/www/ru/ru/nuc/introduction-to-intel-nuc.html
Intel® NUC — это ПК в ультракомпактном форм-факторе размером 10 x 10 см. Intel® NUC размером 10 x 10 см не уступает по производительности и обеспечиваемым возможностям вашему обычному ПК с огромным системным блоком. От домашнего кинотеатра до игр и цифровых музыкальных автоматов, у комплекта Intel® NUC есть все, что нужно для управления всей вашей цифровой жизнью. Просматривайте сайты социальных сетей, проверяйте эл. почту и общайтесь в видеочате с друзьями, и все это, не создавая беспорядка на вашем рабочем столе. Intel® NUC также найдет применение в бизнес-приложениях, таких как цифровые информационные панели и терминалы. Думаете, вы знаете, на что способно компактное решение? Подумайте еще раз.

понедельник, 24 февраля 2014 г.

Батареи для ИБП

VRLA - необслуживаемая герметичная аккумуляторная батарея, также часто называемая VRLA батарея, получила название от технологии VRLA (Valve Regulated Lead Acid -“клапанно-регулируемая свинцово-кислотная») или SLA (Sealed Lead Acid “герметизированная свинцово-кислотная»). Также могут встречаться названия: VRLA аккумулятор, SLA аккумулятор, герметичная свинцово-кислотная батарея, герметичный свинцово-кислотный аккумулятор и др. Этот тип аккумуляторных батарей не требует долива воды в течении всего срока службы, также характеризуется отсутствием выделения газов и утечкой электролита.

четверг, 20 февраля 2014 г.

Очерк безопасности SIP

http://habrahabr.ru/company/pt/blog/212839/

А проблема безопасности SIP действительно актуальна, мне например неизвестно про операторов, которые дают SRTP+TLS, в частности телфин - он не умеет даже кодеки высокого качества, что уж говорить про шифрованные разговоры...
Ну и md5, rtp который перехватывается на раз, итд.

понедельник, 17 февраля 2014 г.

Bacula: Pools, Volumes and Labels

http://ru.wikibooks.org/wiki/Bacula/Pools,_Volumes_and_Labels

bitrix: Работа с сокетами Ошибка

bitrix Работа с сокетами Ошибка
Проблема актуальна, например когда сервер разработки внутри сети и наружу выставлен только 80 порт, или когда есть http/ntlm авторизация. Проверка пытается подключиться к серверу сокетом, а поскольку что-то мешает, получается ошибка.
Фикс: в /etc/hosts прописываем
127.0.0.1 our.site.ru (указываем то имя, с которого делали проверку)

https://dev.1c-bitrix.ru/community/forums/forum6/topic32139/

Атака с помощью вашего сервера времени: NTP amplification attack (CVE-2013-5211)

Несколько запоздало, но
http://habrahabr.ru/post/209438/

Проблема до сих пор актуальна, судя по недавней атаке в 400 гбит на cloudflare
http://www.xakep.ru/post/62039/default.asp
https://twitter.com/eastdakota/status/433002992694874112

воскресенье, 16 февраля 2014 г.

Xen Cloud Platform = XAPI

http://www.xenproject.org/developers/teams/xapi.html

Note that we never really had a clear name for the XAPI project. The project was initially named after the Xen Cloud Platform, which is essentially a distribution of the Hypervisor, the XAPI toolstack and various other components. Later, the project also delivered packages into Linux distributions. This has created some confusion in the community! To make this clearer, the project team proposes to name the project after the XAPI toolstack. In other words, the project would be named after the codebase instead of one deliverable that the project produces.

Последняя версия Xen Cloud Platform - 1.6, и, насколько я понимаю, сейчас достаточно скачать XenServer и получить XAPI.

суббота, 15 февраля 2014 г.

AIX: Создание нового volume group

http://aixdoc.wordpress.com/2012/03/05/creating-a-volume-group/

Есть 780p, виртуализация, LPAR. Подключили второй диск, теперь надо его задействовать под базу оракла.

Вкратце:
1) пересканируем систему, чтобы нашло новый диск
cfgmgr

2) делаем volume group
mkvg -y oraclevg hdisk1

3) проверяем
lsvg oraclevg

4) создаём ФС с автомонтированием, точкой монтирования и указанием размера
crfs -v jfs2 -A yes -g oraclevg -m /oradata -a size=10G
чуть подробнее: -A - автомонтирование, остальное понятно по применению.

5) монтируем, проверяем
mount /oradata
df -g /oradata

понедельник, 10 февраля 2014 г.

ARM и контейнеры

В свете плавного прихода арм-процессоров в серверную инфраструктуру, контейнеры обретают смысл, в том числе для быстрого деплоя и изоляции приложений.
http://www.xbitlabs.com/news/cpu/display/20140131110927_AMD_to_Ship_ARM_Based_Opteron_PCs_to_Software_Makers_This_Quarter.html
как пример.

LXC
http://kb.haeringer.org/virtualization-on-arm-with-lxc/

OpenVZ
http://openvz.org/Porting_the_kernel
OpenVZ kernel supports x86, x86_64, IA64, power64, arm and sparc architectures as of now.
есть набор патчей под 2.6.27 от  Kir Kolyshkin, его страницы
http://k001.livejournal.com/611280.html
http://openvz.livejournal.com/24651.html
но с 3 веткой они похоже не работают.

tmpfs, ramfs, ramdisk

tmpfs
Файловая система, размещаемая в памяти, может свопиться, размер выставляется при создании, можно изменить размер при перемонтировании.
Подключаем
# mount -t tmpfs -o size=100m tmpfs /tmp
в fstab
tmpfs           /tmp      tmpfs   size=2G         0       0

ramfs
Тоже размещается в памяти, но не может попадать в своп, поэтому актуально для данных, которые должны быть всегда в памяти, например для быстродействия. Не поддаётся ограничению, то есть записав на такой раздел больше, чем есть доступной памяти, сервер ляжет. Не отображается через df, только через mount.

ramdisk
Это устройства вида /dev/ramX. После создания форматируется как обычный диск.
Сложно придумать применение на данный момент, ramfs+tmpfs вполне достаточно.

https://www.kernel.org/doc/Documentation/blockdev/ramdisk.txt

линки
http://rus-linux.net/nlib.php?name=/MyLDP/file-sys/twofs.html

пятница, 7 февраля 2014 г.

Ставим oracle 11 на debian

Для боевой среды это плохая связка, а для тестовой вполне допустимо. И есть много нюансов. Для боевой из бесплатных лучше взять centos

Установка Oracle 11g R2 на Debian Lenny
под squeeze и wheezy алгоритмы примерно те же
HOWTO: Install Oracle 11gR2 on Debian Wheezy

вторник, 4 февраля 2014 г.

nginx: limit_req для POST

Штатно нельзя поставить ограничение на конкретный метод типа POST, только через Ж, увы.
Если просто написать
        location /login/ {
                if ($request_method = POST) {
                        limit_req zone=login; #burst=1;
                }

то при nginx -t будет ошибка
nginx: [emerg] "limit_req" directive is not allowed here in /etc/nginx/nginx.conf:48

Вариант через error_page

     if( $request_method = "POST")
     {
         return 402;
     }
     error_page 402 = @post;
   }
   location @post
   {
      limit_req ...
   }

Вариант через map
http://nginx.org/ru/docs/http/ngx_http_map_module.html
Основан на том, что если $is_post пуст, то ограничение не применится.

limit_req_zone $is_post zone=login:1m rate=1r/s;

map $request_method $is_post {
    POST $binary_remote_addr;
}

server {
...
limit_req zone=login; 
}

как-то так (пока не тестировалось, вечером постараюсь).