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

Отмена перехода на зимнее время

В линуксах достаточно обновить tzdata, во фре сложнее: писали, что надо обновить ядро, но это не работает (несколько серверов на 8.2 - не перешли)
Итак.
# date
Mon Oct 31 01:56:57 MSK 2011
#portinstall misc/zoneinfo
#tzsetup

Выбираем MSK (у меня так)
# date
Mon Oct 31 03:00:41 MSK 2011

Вариант 2 - установить GMT-4
ln -sf /usr/share/zoneinfo/Etc/GMT-4 /etc/localtime

PS
# diff /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Files /usr/share/zoneinfo/Europe/Moscow and /etc/localtime differ
(на пока не обновлённой системе)
Так что для начала - попробовать просто сделать симлинк. Не поможет - тогда уже обновлять мир или ставить доп пакеты.

PS2
Оказывается, centos 6 в пролёте - там g-версия, это где-то май.
zdump -v /etc/localtime | grep 2011
показывает, что должен быть перевод 30.10
Лечение: http://rpm.pbone.net/index.php3/stat/4/idpl/17043165/dir/centos_6/com/tzdata-2011h-2.el6.noarch.rpm.html - выбираем поближе зеркало, wget ...., rpm -Uvh tzdata-*
Также можно попробовать подключить репу, которая pre-centos 6.1, там должна быть нормальная версия.

Есть ещё http://habrahabr.ru/blogs/sysadm/130363/, но там про центось 6 нет (разве что в комментах, не читал их)

Debian: right way

Разбираемся, что и как настраивается.

mysql
Основной конфиг
/etc/mysql/my.cnf
Также читается debian.cnf

Не забываем про
# You can copy this file to /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options
# (/var/lib/mysql for this installation) or to
# ~/.my.cnf to set user-specific options.


apache
Установленные модули
/etc/apache2/mods-avaliable
Если нам нужно что-то -- ставим, потом идём в mods-enabled и делаем симлинк
ln -s ../mods-avaliable/rpaf.load

Рабочие сайты
/etc/apache2/sites-avaliable
Как и с дополнениями. Свои сайты пишем в sites-avaliable, потом симлинк в sites-enabled

Вообще, в /etc/apache2/apache2.conf крайне редко приходится писать: весь изменяемый функционал вынесен.

php5
Тут у меня получилось 3+ конфигов:
/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini
/etc/php5/cli/php.ini
Вдобавок в каждой из этих каталогов есть conf.d, которые являются симлинками в /etc/php5/conf.d

Изменения для модулей надо писать в эти файлы, например после установки APC в /etc/php5/conf.d/apc.ini дописываем
apc.ttl=1
apc.max_file_size=16M
(данные строки хочет битрикс)

Также можно создать в /etc/php5/conf.d файл timezone.ini с указанием временной зоны.
В таком случае изменения будут применены для всех доменов. Должно работать в том числе с fastcgi/fcgid, штатно они работают только с локальным php.ini (ispmanager)

[будет дополняться по мере работы с битриксом]

пятница, 28 октября 2011 г.

Особенности поиска в apt-cache

~# apt-cache search named|wc -l
179

~# apt-cache search named|egrep -i "bind|named"|wc -l
13

Более 90% в выводе - мусор, не имеющий отношения к named. Например, smssend, tkabber итд.
Поэтому есть ключ --names-only

~# apt-cache search --names-only named|wc -l
1
Но в данном случае видим, что надо было искать не named, а bind

~# apt-cache search --names-only bind|wc -l
53

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

четверг, 27 октября 2011 г.

Анонсирован выход Xen Cloud Platform (XCP) 1.1

http://www.opennet.ru/opennews/art.shtml?num=32022
http://xen.org/download/xcp/index_1.1.0.html
http://wiki.xen.org/xenwiki/XAPI_on_debian

После семи месяцев разработки увидел свет релиз Xen Cloud Platform 1.1 (XCP), развиваемой силами сообщества разработчиков Xen платформы для организации развертывания и управления работой cloud-инфраструктуры. XCP можно использовать как автономное решение для развертывания сервиса аренды виртуальных серверов, приватных cloud-окружений и инфраструктур промышленной виртуализации, так и как базис для наращивания функциональности и создания новых программных решений, построенных поверх кодовой базы XCP.

Платформа XCP является свободным (GPLv2) ответвлением от продукта Citrix XenServer. Разработчики гарантируют, что XCP всегда будет доступен под свободной лицензией и все части проекта будут открыты. Загрузочный пакет XCP оформлен в виде готового iso-образа (307 Мб), основанного на CentOS и адаптированного для быстрого развертывания хост-системы (Dom0). В комплект входят все необходимые драйверы и модули для поддержки популярных cloud-инфраструктур. Для дистрибутивов Debian и Ubuntu предоставлена возможность установки штатного инструментария XenAPI из специального репозитория, что позволяет на базе Debian и Ubuntu создать вариант сервера виртуализации, полностью функционально эквивалентного стандартному дистрибутиву XCP.

Поддержка стандартных API в платформе XCP дает возможность в случае непредвиденных проблем, например, при нехватке мощности оборудования в пиковые моменты, перенести часть корпоративного «облака» во внешние системы, такие как Amazon EC2, Rackspace Cloud Servers или GoGrid. Консолидация серверов предприятия и их размещение без привязки к физическому оборудованию в инфраструктуре виртуализации позволяет повысить гибкость, увеличить безопасность и понизить затраты, за счет более рационального расходования ресурсов (аппаратное обеспечение не простаивает и нагружается равномерно, новые серверы докупаются по мере необходимости, каждый сервис не пересекается в ОС с другими сервисами и запускается в отдельном окружении). Технология XenMotion позволяет организовать работу высоконадежных конфигураций, за счет горячего резервного копирования виртуальных машин и совместного использования разделяемых ресурсов.


Ключевые отличия xapi по сравнению с xend'ом:

Поддержка концепции «пула» — объединения одинаковых серверов в массу неразличимых вычислительных ресурсов, которые могут заменять друг друга без каких-либо специальных усилий со стороны обслуживающего персонала.
Автоматическая конфигурация всех подсистем серверов согласно общей конфигурации пула, включая автоматическое создание соединений с сетевыми хранилищами и конфигурирование сетевых интерфейсов.
Open vSwitch в качестве основного бэкэнда для сетевых соединений, позволяющий создавать pure-virtual сети с произвольной архитектурой.
Готовые шаблоны для большинства операционных систем.
Единый метод администрирования как PV, так и HVM машин.
Особая версия XenStored (одна из важнейших компонент обвязки зена), полностью переписанная на окамле, с повышенной (по сравнению со стандартной версией) стабильностью и производительностью.
Обширное и продуманное API для управления пулом.

Ещё почитать:
Xen Cloud Platform в условиях предприятия [1] [2] [3] [4]

debian: Can't locate GD.pm

apt-get install libgd-gd2-noxpm-perl

среда, 26 октября 2011 г.

maatkit

mk-archiver - архивирование строк из таблицы MySQL в другую таблицу или в файл;

mk-deadlock-logger - выявление и сохранение информации о взаимных блокировках;

mk-duplicate-key-checker - поиск дублирующихся индексов и внешних ключей;

mk-find - аналог утилиты find для выполнения поиска по таблицам и выполнения
действий над результатами;

mk-heartbeat - мониторинг задержки при выполнении репликации;

mk-kill - удаляет запросы, соответствующие определенным критериям;

mk-loadavg - следит за нагрузкой на базу и выполняет указанные действия при обнаружении перегрузки;

mk-log-player - позволяет повторно выполнить запросы из лога;

mk-parallel-dump/mk-parallel-restore - создание и восстановление дампа таблиц в
параллельном режиме;

mk-purge-logs - чистит бинарный лог в соответствии с заданными правилами;

mk-query-advisor - анализирует запросы и выявляет возможные проблемы;

mk-query-digest - парсит лог и анализирует, фильтрует и преобразует запросы в
логе, формируя в итоге полезный суммарный отчет;

mk-query-profiler - выполняет SQL-запросы и выводит статистику или измеряет
активность других процессов;

mk-table-checksum - генерация контрольных сумм с целью проверки целостности реплицированных данных;

mk-table-sync - эффективная синхронизация содержимого нескольких таблиц;

mk-upgrade - запускает запрос одновременно на нескольких серверах и проверяет идентичность ответов;

mk-variable-advisor - анализирует переменные MySQL и выявляет возможные проблемы;

mk-visual-explain - выводит результат выполнения EXPLAIN-запроса в древовидном виде.

mk-index-usage - строит детальный отчет на основе выполнения EXPLAIN-операции
для каждого фигурирующего в логе запроса

http://www.opennet.ru/tips/2491_mysql_log_analyze_monitoring_index.shtml

WebDAV

Что это - неплохое описание
http://citforum.ru/internet/webservers/webdav/
WebDAV является расширением протокола HTTP/1.1. WebDAV добавил в HTTP/1.1 несколько новых заголовков и методов, а также изменил существующие методы HTTP

Есть много реализаций на сервере, в том числе через apache и nginx. Через nginx - будет несколько урезанным, там чего-то нет, поэтому полноценным сервером оно выступать не может. Зато апач тяжёл.

Собственно, задача - поднять удалённое шифрованное хранилище (c encFS), но об этом как-нибудь в другой раз.

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

Joomla 1.5.12 и php 5.3

Штатно старые версии жумлы не работают в php 5.3, надо немного подправить.

В разных версиях разные ошибки, поэтому всё, что было мной найдено в сети

Вариант 1:
Joomla! → Учим меню Jooml'ы <=1.5.13 дружить с PHP 5.3
Сегодня перенося старый сайт нового клиента на свой vds, обнаружил, что пропал вывод меню.
Гугление дало понять две вещи:
1. Проблема не решена
2. Для решение проблемы предлагают откатить PHP на старую ветку (5.2 и ниже)
Естественно это вообще не вариант. По-этому пришлось как всегда всё делать самому.
Ошибка заключается в том, что данные в функцию передаются по ссылке. Для её исправление, достаточно убрать амперсанды в нужных местах.
Для основного меню сайта, в файле /modules/mod_mainmenu/helper.php на строке 31 перед параметром $params.
С админкой телодвижений немного больше =)
В файле /libraries/joomla/html/html/menu.php на 124ой убираем амперсанд от $children в параметрах вызова функции treerecurse, затем в /libraries/joomla/html/html/grid.php на строках 93,115,157 перед $row.

http://forum.dklab.ru/viewtopic.php?t=36396

Вариант 2:

http://inetmarketing.ws/sozdanie-sajtov/obnovlyaem-joomla-dlya-php-5-3-svoimi-rukami
(много кода)

Вариант 3:

Warning: Parameter 3 to showItem() expected to be a reference, value given in /var/www/prohotel/data/www/media.prohotel.ru/htroot/includes/Cache/Lite/Function.php on line 100
Warning: Parameter 1 to HTML_content::show() expected to be a reference, value given in /var/www/prohotel/data/www/media.prohotel.ru/htroot/includes/Cache/Lite/Function.php on line 92

http://forum.joomla.org/viewtopic.php?f=268&t=530296

csync: часть 2

Настраиваем. (на примере centos)

!Порт 30865

Для начала, необходим файл - приватный ключ
csync2 -k /etc/csync2/csync2.cluster.key

Теперь надо править конфиги
vi /etc/csync2/csync2.cfg


Теперь построим локальную базу всех файлов проекта, с которой работает csync2.

Если данные на серверах идентичны, можно использовать команду:

# csync2 -cIr /

Мы выполняем именно ее, так как второй сервер клонирован из первого.

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

# csync2 -cr /

Эта команда будет работать дольше, и при первом запуске синхронизации будут проверены на актуальность все данные (что тоже для первого раза будет работать достаточно долго, несколько минут).

Клиентская часть - запуск csync2 с ключом "-x".

Можно определить (в зависимости от объема данных) необходимую частоту обновлений и прописать запуск csync2, например, через cron. Строка в /etc/crontab:

*/5 * * * * root /usr/sbin/csync2 -x >/dev/null 2>&1

...означает запуск csync2 каждые 5 минут.

http://packetcloud.net/2009/08/28/compiling-csync2-on-centos-5/
http://www.1c-bitrix.ru/blog/demidov/start-the-web-cluster-in-the-cloud-scalaxy.php
http://habrahabr.ru/blogs/sysadm/120702/

воскресенье, 23 октября 2011 г.

csync: часть 1

Это утилита для синхронизации файлов на серверах.

Для начала, Ставим.

FreeBSD
Тут проблем нет:
cd /usr/ports/net/csync2 && make install clean

Debian
Как ни странно, тут тоже проблем особо нет
apt-get install csync2

CentOS
Вот тут всё плохо. Warning: No matches found for: csync
Увы и ах, тут центось - сливает по полной. Выход 1 - брать компилер и собирать пакет.
В доке битрикса есть установка csync из пакетов, через freshrpms
Мой пример подключения репы (в доке качается и ставится попакетно):
vi /etc/yum.repos.d/freshrpms.repo
[freshrpms-cluster]
name=freshrpms cluster repo for csync2
baseurl=http://ftp.freshrpms.net/pub/freshrpms/redhat/testing/EL5/cluster/$basearch/
enabled=1
gpgcheck=0

Можно сделать wget -r http://ftp.freshrpms.net/pub/freshrpms/redhat/testing/EL5/cluster/`uname -i`

Если самому собирать - в зависимостях librsync, libtasn1, xinetd, sqlite2, libsqlite. Если кто будет собирать - просьба поделиться spec-файлами.

суббота, 22 октября 2011 г.

Gentoo

Весьма интересный дистр, хоть и со своими тараканами. Не LFS конечно, но новичкам не по зубам. Зато есть штатные средства для кросс-дев на тот же арм.

Есть описание даже на лурке, и что еще более странно - есть и полезная инфа.

Есть даже на баше:
<@insomnia> Нужно выполнить всего три команды, чтобы поставить Gentoo
<@insomnia> cfdisk /dev/hda && mkfs.ext4 /dev/sda1 && mount /dev/hda1 /mnt/gentoo/ && chroot /mnt/gentoo/ env-update && . /etc/profile && emerge --sync && cd /usr/portage && scripts/bootsrap.sh && emerge system && emerge vim && vi /etc/fstab && emerge gentoo-dev-sources && cd /usr/src/linux && make menuconfig && make install modules_install && emerge gnome mozilla-firefox openoffice && emerge grub && cp /boot/grub/grub.conf.sample /boot/grub/grub.conf && vi /boot/grub/grub.conf && grub && init 6
<@insomnia> это первая

На самом деле, команда нерабочая, но легко делится на части "что надо сделать".

!Русская версия похоже больше не поддерживается, но пока актуальна
Русская дока
Начинать можно отсюда
"экспресс-старт"
Ещё (уже не оф, это про порты)

вторник, 18 октября 2011 г.

XEN

Чем больше общаюсь с xen, тем меньше ему доверяю. Периодические танцы с бубном, отвал xm и прочие радости уже вкусил. Проблема в том, что у меня нет возможности "отдельная SAN и пачка нод", поэтому и данные, и хен расположены на 1 машине с centos 5.5

Сегодняшний прикол: работали нормально, но отвалился eth0, всякие /etc/init.d/network restart и ifconfig eth0 down; ifconfig eth0 up не помогли, не сообщало даже об отключении кабеля. Ладно, ребут... Больше виртмашины не запустились.
В логах

cat /var/log/xen/xend.log
[2011-10-18 18:28:17 4528] INFO (SrvDaemon:332) Xend Daemon started
[2011-10-18 18:28:17 4528] INFO (SrvDaemon:336) Xend changeset: unavailable.
[2011-10-18 18:28:17 4528] ERROR (SrvDaemon:349) Exception starting xend (no element found: line 1, column 0)
...
cat /var/log/xen/xend-debug.log
Xend started at Tue Oct 18 18:28:17 2011.
Exception starting xend: no element found: line 1, column 0

И на xm list
Error: Unable to connect to xend: No such file or directory. Is xend running?

Думал, что что-то снова с ядром, и нечаянно обнулил /boot/grub/grub.conf, благо была копия. Как оказалось, на диске кончилось место, потому что хен зачем-то стал машины не выключать, а сейвить. Также непонятно, почему очистить файл мы смогли, но записать новые данные на то же самое место - нет.

Ладно, очистил /var/lib/xen/save/
Перезагрузились.. Не работает. Обновил xen с либами, ядро, перезагрузился раз 20 с разными вариантами загрузки... Глухо.
Гугл на запрос ничего полезного не сказал. Но потом случайно наткнулся на http://www.karlkatzke.com/xend-fails-to-start-due-to-xml-error/ и узнал, что это глюк в xml файлах (возможно, их при ребуте очистило так же, как мне grub.conf). Фикс:
rm -rf /var/lib/xend

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

пятница, 14 октября 2011 г.

selectel псевдо-API

Ответ саппорта

API на сегодняшний день в разработке, не реализован.
Для включения и выключения виртуальных машин существует workaround:
Последовательность действий:
1) Авторизация на сайте, получение и сохранение cookie:
curl -v --cookie-jar /tmp/cloud.txt --data "action_method=GET&user=ЛОГИН&pass=ПАРОЛЬ" https://support.selectel.ru/
2) Непосредственно команда для запуска машины:
curl -v --cookie /tmp/cloud.txt "https://support.selectel.ru/cloud/proxy.php?uuid=ИДЕНТИФИКАТОР_МАШИНЫ&action=vm-start";;;
3) Удаление cookie:
rm /tmp/cloud.txt

Идентификатор (VM UUID) указан на вкладке «Информация» виртуальной машины. Для выключения машины вместо действия (action) vm-start нужно написать vm-stop.

XEN/KVM hosting

Для начала
http://www.linode.com/

(будет дополняться)

четверг, 13 октября 2011 г.

Intel осваивает модель платежей donate (donat)?

Обнаружил на 3dnews статью Core i3-2332M: заплати и получи плюс 400 МГц и больше кеша. Но данная система довольно давно известна игрокам под названием "donate" - чтобы получить круче, плати. (суть: платишь баблос, всё больше и больше, получаешь всё меньше и меньше)

В идеале - интел станет раздавать процы с 1 ядром 1ГГц, 128к кэша, и можно ступенчато апать до топовых. Ну или продавать по себестоимости кристалла. Впрочем, это очень остро поставит вопрос о разлочке таких ядер программно или аппаратно, и может быть как очень прибыльным, так и весьма убыточным вариантом продаж.

вторник, 11 октября 2011 г.

UEFI: обзор со всех сторон

http://www.3dnews.ru/offsyanka/618151/

mod_fcgid: HTTP request length xyz (so far) exceeds MaxRequestLen (131072)

Debian:
vi /etc/apache2/mods-available/fcgid.conf

в <IfModule mod_fcgid.c> дописываем
# to get around upload errors when uploading images increase the MaxRequestLen size to 15MB
MaxRequestLen 15728640

CentOS:
vi /etc/httpd/conf.d/fcgid.conf

В конец
# to get around upload errors when uploading images increase the MaxRequestLen size to 15MB
MaxRequestLen 15728640

Перезапускаем апач, проверяем.

офдока
Почти все ссылаются на
http://www.blogtorrent.de/2010/11/30/mod_fcgid-http-request-length-135714-so-far-exceeds-maxrequestlen-131072/
Ну и я подглядел тут:
http://blog.philippklaus.de/2011/04/fix-mod_fcgid-http-request-length-xyz-so-far-exceeds-maxrequestlen-131072/

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

OCZ RevoDrive Hybrid: симбиоз SSD и HDD на PCIe-плате

http://www.3dnews.ru/news/616278

Новинка построена на печатной плате под шину PCI Express х1 с применением более современной фирменной архитектуры VCA 2.0 (Virtualized Controller Architecture) и сочетает в себе твердотельный диск объёмом 100 Гбайт и винчестер ёмкостью 1 Тбайт. Как сообщается, передача данных осуществляться на скорости до 910 Мбайт/с, а производительность в произвольных операциях записи достигает 120000 IOPS.
Разработчики оценили своё детище в $500 и дают на него трёхлетнюю гарантию качества.

OpenSSL

Основы работы с OpenSSL
Хороший FAQ

пятница, 7 октября 2011 г.

Осваиваем iozone

Это интересная утилита, которая умеет делать замеры чтения, записи (произвольной, последовательной), выдавать в мб/с и в iops-ах.

Для начала, надо его поставить.
Freebsd
cd /usr/ports/benchmarks/iozone && make install clean

CentOS
yum install --enablerepo=rpmforge iozone
(rpmforge должен быть подключен)


debian:
apt-get install iozone3

дальше о запуске хорошо описано тут:
http://disorder.ru/archives/tag/iozone

По простому:
$ iozone -a > iozone.log
$ Generate_Graphs iozone.log
По первой команде программа выполнит все возможные тесты, по второй - покажет трехмерный график.

вторник, 4 октября 2011 г.

ISPManager и python

Как cgi запустить несложно, но это очень ограничивает производительность

Также можно через mod_python и mod_wsgi

Django хорошо работает через mod_wsgi:
http://forum.ispsystem.com/ru/showthread.php?t=14832

http://stackoverflow.com/questions/799354/configure-apache-to-use-python-just-like-cgi-php

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

Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

Ошибка при работе с mod_rewrite в дебиане после установке апача. Причина - модуль стоит, но штатно не подключается? Почему? Одним фанатикам ведомо.
Впрочем, лечится просто:
# cd /etc/apache2/mods-enabled
# ln -s ../mods-avaliable/rewrite.load

Или "фирменный" вариант
a2enmod rewrite
но он делает тоже самое.

Нагрузочное тестирование веб-проекта

Зачем это нужно? Вроде неплохо описано тут:
http://habrahabr.ru/blogs/testing/106493/

Performance vs. load vs. stress testing

Совсем простой метод:
time wget -O /dev/null "http://site.ru/index.php"
Показывает скорость получения страницы, без статики.
Можно запустить в N потоков.
Впрочем, есть curl-loader

Более наглядный вариант - через плагин к FF - webdeveloper. Можно посмотреть скорость загрузки каждого элемента, но нагрузочное тестирование этим не провести.

Чуть более действенный метод через ab, но загружать будет только 1 страницу.
ab -n 1000 -c 100 — чтобы быть уверенным, что сайт не уйдет в даун после нагрузки
ab -n 1000 -c 2 — чтобы оценить, какой наплыв посетителей он способен выдержать

Есть ещё siege

pylot
Нечто среднее между jmeter и ab. Но правила там задаются в xml-файле, так что без быстрого старта его сложно освоить. Сейчас он перерос в multi-mechanize, но новый проект гораздо сложнее в освоении.
Плюсы - он на питоне. Минус - с наскока его всё-таки не освоить.

Перейдём к jmeter - мощной программе, но весьма сложной в освоении. Увы, на яве.
Простой нагрузочный тест с Apache JMeter
Рецепт нагрузочного тестирования на JMeter
Быстрое создание нагрузочных тестов на JMeter для web-сайтов
Отладка тест-плана JMeter

Видео
Видео с HighLoad++: Юрий Ковалев — Нагрузочное тестирование без границ