среда, 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 г.

Цинизм в IT: Посмотреть размеры очередей Postfix

Цинизм в IT: Посмотреть размеры очередей Postfix:

for i in active bounce corrupt defer deferred flush hold incoming maildrop public saved trace; do echo -n "$i "; find "/var/spool/postfix/$i" | wc -l; done



Делаться может долго, особенно когда писем больше миллиона.

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

debian 7 (wheezy) + redmine 2

На конец 2014 года в штатных репах редмайн есть, но АЖ 1.4, как всегда устаревшая на несколько лет версия. Но кому нужен такой бесполезный хлам?
К слову, офсайт:


    IMPORTANT: The Debian package is v1.4.4. That version is out of support and has multiple security issues.
    Будем ставить 2 ветку.

    понедельник, 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/

    пятница, 29 августа 2014 г.

    PCI DSS (Payment Card Industry Data Security Standard)

    Опыт badoo
    http://habrahabr.ru/company/badoo/blog/234677/

    Дока по стандарту, русское описание
    http://pcidss.ru/files/pub/pdf/1_PCI_DSS_v3.pdf

    ликбез о том, почему не стоит использовать make install

    Довольно старая статья, но до сих пор актуальная.
    ликбез о том, почему не стоит использовать make install

    Вкратце: вместо make install нужно делать checkinstall. Также для deb* можно готовить пакеты через fakeroot. Или
    dh_make + dpkg-buildpackage -rfakeroot
    Ну и небольшое ускорение с
    sudo auto-apt update && auto-apt -y run ./configure

    среда, 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/

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

    вторник, 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 который перехватывается на раз, итд.

    среда, 19 февраля 2014 г.

    понедельник, 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