суббота, 30 марта 2013 г.

Балансировщик нагрузки для Amazon EC2 c автомасштабированием

http://habrahabr.ru/post/136827/

На базе ELB

+

gigimon,#
Помимо амазоновского сервиса автомасштабирования, есть (как минимум) 2 сервиса, которые позволяют это делать на амазоне сильно умнее (scalr.com, alestic.com). Умнее в том, что есть интеграция с ПО на инстансах (если это mysql, то будет подниматься репликация, если apache, то автоматически будет добавляться к фронтенду в список бэкендов)
0
anatolijd,#
вьі наверно имели ввиду ylastic.com?

пятница, 29 марта 2013 г.

perl+cpan

Если есть возможность, всегда надо ставить штатной системой пакетов. Но иногда всё-таки нужно ставить из цпана, делается это так
perl -MCPAN -e 'install DBD::mysql'

Могут быть ошибки разного рода, например
dbdimp.c:3215 error: 'imp_sth_t' has no member named 'warning_count'

В данном случае видно, что это ошибка сборки dbdimp.c, то есть проблема зависимостей библиотек. В линуксе обычно требуется сначала поставить mysql-devel + mysqlclient. В общем, тут нет автоматического решения зависимостей, и это ещё один минус такой ручной установки. Ну и сложнее потом сопровождать такую систему, поэтому если нужен 1-2 модуля, можно их просто скачать прямо в проект, доставив зависимости через систему.

Линки
http://twiki.org/cgi-bin/view/TWiki/HowToInstallCpanModules
http://www.dark.ca/2010/04/08/cpan-rpms-in-rhel-centos/
http://stackoverflow.com/questions/1440320/installation-of-perl-packages-is-failing-on-centos-5-64-bit

четверг, 28 марта 2013 г.

Приватные аналоги Dropbox

Наиболее известные аналоги:
LiquidFiles
ownCloud 1
seafile 1
alfresco w

Совсем простой вариант openfiler

Непонятный вариант
ajaxplorer

Выбор-то есть, но сравнений продуктов особо найдено не было. Хотя нужно ещё смотреть, что требуется от системы, поскольку они различаются плюшками.
Многие имеют версию enterprise, платную, и community-версию.

вторник, 26 марта 2013 г.

Порядок обработки фаз nginx

Из кода, порядок обработки фаз nginx

typedef enum {
     NGX_HTTP_POST_READ_PHASE = 0,

     NGX_HTTP_SERVER_REWRITE_PHASE,

     NGX_HTTP_FIND_CONFIG_PHASE,
     NGX_HTTP_REWRITE_PHASE,
     NGX_HTTP_POST_REWRITE_PHASE,

     NGX_HTTP_PREACCESS_PHASE,

     NGX_HTTP_ACCESS_PHASE,
     NGX_HTTP_POST_ACCESS_PHASE,

     NGX_HTTP_TRY_FILES_PHASE,
     NGX_HTTP_CONTENT_PHASE,

     NGX_HTTP_LOG_PHASE
} ngx_http_phases;

Выполняются в порядке перечисления.

Adaptec RAID 6805

Adaptec RAID 6805 и модификация Adaptec 6805Q with maxCache™ 2.0 с поддержкой ssd cache.

Достаточно интересный RAID контроллер, отличающийся поддержкой большого числа ОС:
Windows 7, Windows Vista, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 x64, Windows 2003 Server, Ubuntu Linux 10.4, Debian Linux 5, Fedora Core 12, RedHat Enterprise Linux 6, SuSE Linux Enterprise Server 11, FreeBSD 8, Sun Solaris 10, VMware ESXi 5.0, VMware ESXi 4, VMware ESX 4.1 Classic
Порты: 2x SFF-8087, поддерживается SAF-TE и SES2/SGPIO.
Одно из главных преимуществ - нет батарейки, вместо неё используется zero maintenance cache с ионисторами, модуль AFM-600.

Adaptec RAID 6805 ASR-6805 KIT PCI-E x8, 8-port SAS / SATA, RAID 0 / 1 / 1E / 10 / 5 / 5EE / 6 / 50 / 60 / JBOD, Cache 512Mb (660 уе)
+
Flash Module Adaptec AFM-600 модуль резервного сохранения данных из кэша на flash память (210 уе)
Модуль резервного сохранения данных из кэша RAID контроллера. При отключении питания все данные из кэша переписываются во flash память модуля. В процессе перезаписи питание осуществляется от входящего в комплект суперконденсатора.

Аналоги:
LSI 9265-8i, LSI 9750-8i

Сравнения:
LSI 9265-8I MEGARAID CARD VS ADAPTEC 6805 RAID CARD – THE ULTIMATE 6GB/S RAID SHOWDOWN

Но стоит учесть негативный опыт amarao с LSi: https://github.com/amarao/lsi-sata-fuckup
Также помнить, что штатная утилита у LSi - тот ещё выкидыш (приводящий иногда к полному зависанию системы), поэтому во фре использовать mfiutil. В лине хз.

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

FreeBSD 7: undefined reference to `sqrt'

При попытке обновить nginx обновляется dialog4ports, и тот выпадает с ошибкой

cc -O2 -fno-strict-aliasing -pipe  -I/usr/ports/ports-mgmt/dialog4ports/work/dialog-1.1-20120706 -D_XOPEN_SOURCE_EXTENDED -Wsystem-headers -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wno-pointer-sign  -o dialog4ports dialog4ports.o mixedlist.o arrows.o buttons.o dlg_keys.o help.o inputstr.o mouse.o mousewget.o textbox.o rc.o trace.o ui_getc.o util.o version.o -lncursesw
util.o(.text+0x2ead): In function `dlg_auto_size':
: undefined reference to `sqrt'
*** Error code 1
1 error
*** Error code 1

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

FreeBSD 7.4. Связано это с изменениями в системе портов, решение -- перейти на 8 версию или более не использовать portsnap и зафиксировать порты на тэге RELENG_7_EOL

"7.4 is EOL. If you want to continue using it you will need to use 
RELEASE_7_EOL. head is not supported. "
Ну и собственно по линку подробности.

Если сильно надо, находим файл ports-supfile, копируем в другое место, прописываем *default host= и
*default release=cvs tag=RELENG_7_EOL

и после этого запускаем
csup ports-supfile

ZFS: С чего начать

Вообще, это нужно делать первой заметкой, но мне ещё до заведения блога приходилось общаться с zfs. А тут спросили "что почитать"...
Спрашивали в контексте nexenta, поэтому будет ещё 3 линк

1. Совсем введение, что это вообще такое
http://ru.wikipedia.org/wiki/ZFS

2. Основная дока
Oracle Solaris ZFS Administration Guide
(можно поискать в печатном виде)

3. ZFS for Dummies

4. http://docs.oracle.com/cd/E19253-01/820-0836/index.html (русская версия)

четверг, 21 марта 2013 г.

proxmox: quick start

proxmox это система виртуализации, которая умеет как полную виртуализацию (HVM), так и контейнерную (openVZ). Увы, паравиртуалицазию (PV) оно не умеет, что частично компенсируется контейнерами. Для PV нужен xen. Впрочем, за счёт pv-ops для свежих версий линукса эта проблема не так актуальна.

Простая установка действительно простая: качаем ISO с офсайта (VE версия), и грузимся с него
Внимание! В системе должен быть только 1 диск, который будет целиком отдан под систему, никаких запросов о разбиении диска не будет!
Сама установка элементарна: вводим страну, выбираем таймзону, проверяем имя узла, настройки сети, задаём почту и пароль для рута... Вроде и всё.
После перезагрузки обращаемся браузером или через ssh на тот айпи, который был присвоен системе, это будет написано на экране даже без логина в систему, по http можно без указания порта, перекинет куда надо автоматом. Логин root, пароль тот, что вводили при установке.

четверг, 14 марта 2013 г.

ispmanager: зачем root задаётся через переменную

Обнаружилось на новом сервере, что в nginx панель пишет так:
server {
    ...
    set $root_path /var/www/...
    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
        root $root_path;
        ...
    }
}

"Используется для определения владельца домена. Пользователи начали ломать location'ы своими плагинами и менять root. Как результат, доменов в панели нет."
http://forum.ispsystem.com/ru/showthread.php?p=127025#post127025

При этом, на старом сервере формат записи всё тот же, root задаётся напрямую в location без всяких переменных.

среда, 13 марта 2013 г.

sublime text 2

Пара интересных линков

Bit rot

Есть такой эффект bit rot - самопроизвольное изменение данных, даже если с ними не работали.
"Bit rot, also known as bit decay, data rot, or data decay, is a colloquial computing term for the gradual decay of storage media or a (sometimes jocular) explanation for the degradation of a software program over time, even if ‘nothing has changed"
http://en.wikipedia.org/wiki/Bit_rot#Decay_of_storage_media

RAID-5 write hole и ZFS

У Raid-5 есть достаточно серьёзная проблема, которая называется write hole - при записи данных и отключении питания может получиться, что на дисках данные отличаются.

"RAID-5 (and other data/parity schemes such as RAID-4, RAID-6, even-odd, and Row Diagonal Parity) never quite delivered on the RAID promise -- and can't -- due to a fatal flaw known as the RAID-5 write hole. Whenever you update the data in a RAID stripe you must also update the parity, so that all disks XOR to zero -- it's that equation that allows you to reconstruct data when a disk fails. The problem is that there's no way to update two or more disks atomically, so RAID stripes can become damaged during a crash or power outage."
https://blogs.oracle.com/bonwick/entry/raid_z

У zfs этой проблемы нет, поскольку там совсем другие принципы - Copy-on-Write и данные не перезаписываются, плюс встроенное версионирование. Да, иногда и у ZFS бывают проблемы, но они гораздо реже, а за счёт того, что все данные имеют чексумму, система автоматически может обнаружить и зачастую исправить сбой в данных. Это особенно актуально на бытовом железе.

И ещё немного про raid-z
https://blogs.oracle.com/ahl/entry/what_is_raid_z
http://www.stableit.ru/2010/08/raid-z.html

Основные недостатки ZFS -- требуется больше памяти и дикое падение производительности при заполнении пула более чем на 50-85%, смотря какой объём пула.

nginx: Why Is High Concurrency Important?

Кого интересует устройство nginx, есть довольно подробное описание.
http://www.aosabook.org/en/nginx.html

вторник, 12 марта 2013 г.

Определяем текущий shell

Универсальные варианты, работает и в bash и csh
# echo $SHELL
Показывает шелл, который установлен "по умолчанию". Вызов вложенного шелла эту переменную уже не меняет.
Можно менять, например setenv SHELL /dev/null (на примере csh), так хорошо разыгрывать друзей можно.

Более действенный метод
# ps aux|grep $$
тут уже "не скрыться".

вторник, 5 марта 2013 г.

bitrix: мифическая "оценка производительности"

Многим (да и мне) долгое время было непонятно, что это за "оценка производительности", как она считается и на что влияет.
Оказывается, всё элементарно.

"Эта цифра - есть величина, обратная времени исполнения ядра продукта [среднему на 10 измерений].

Т.е. на основе приведенной картинки можно сказать, что публичная страница сайта с пустым шаблоном (например, версия для печати), с пустой рабочей областью будет создаваться за 1/40,32 или 0,0248 сек.

Обратите внимание, мы получили "Среднее время отклика".

Если говорить проще, то сервер сгенерирует 40 [пустых, но с подключением ядра] страниц в секунду.

А значит, она не вычисляется на основе "попугаев", приведенных ниже относительно файловой системы, работы базы, сессий и почты. Эти цифры нужны для того, чтобы помочь системному администратору найти узкое место (если такое есть). Оценка производительности всегда обратна величине среднего времени отклика. "
http://dev.1c-bitrix.ru/community/blogs/howto/2450.php

Снимаем статистику с php ускорителей

Снимаем статистику с php ускорителей
  • APC
  • XCache
  • ZendOptimizer/Zend Guard Loader
А в принципе и всё.. Есть ещё eAccelerator, но "пациент скорее мёртв".

Mikrotik Metarouter

http://wiki.mikrotik.com/wiki/Metarouter
Виртуализация для микротика, можно на 1 роутере запустить несколько псевдо-роутеров или мини-линух OpenWRT.
Но куча подводных камней, начиная с того, что работает оно не на всех моделях + есть давно известные баги, по всей вероятности аппаратные.


MetaRouter is a new feature in RouterOS 4.0 beta 1 and RouterOS v3.21
Currently MetaRouter can be used on
RB400, RB700 series, RB900 series, RB2011 boards
Listed PPC boards: RB1000, RB1100, RB1100AH and RB800.

При этом

Issues and possible workarounds for MetaROUTER feature on RouterBOARDs with MIPS-BE architecture
Random freezing
Only listed routers are affected by this issue: RB450G, RB750G, RB435G, RB493G
...

PPC
Issues and possible workarounds for MetaROUTER feature on RouterBOARDs with PPC architecture
Not enough resources
Only listed routers are affected: RB1100AH

Плюс в  pc-based версиях есть xen (до версии 4.4) и kvm
http://wiki.mikrotik.com/wiki/Manual:Virtualization

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

nginx: [emerg] the size 10485760 of shared memory zone "perserver" conflicts with already declared size 0 in ...


[emerg] the size 10485760 of shared memory zone "perserver" conflicts with already declared size 0 in ...

Проблема может быть как с proxy_cache_path, так и многими другими вариантами, даже limit_zone.
Описание этих моментов должно быть до использования, в частности
http://www.yongbok.net/blog/?p=324

proxy_pass http://127.0.0.1:8000;
proxy_cache_path /tmp/cache levels=1:2 keys_zone=tmpcache:10m inactive=30m max_size=2g;
---
неправильно,

proxy_cache_path /tmp/cache levels=1:2 keys_zone=tmpcache:10m inactive=30m max_size=2g;
proxy_pass http://127.0.0.1:8000;
---
правильно.

Вариант еще: определение limit_zone после его использования.

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

nginx: ограничить количество подключений на сервер

Задача ограничить подключения с 1 айпи - тема весьма популярная, но иногда бывает нужно ограничить всем клиентам.

http://nginx.org/ru/docs/http/ngx_http_limit_conn_module.html#limit_conn

воскресенье, 3 марта 2013 г.

apache+nginx, появление внутреннего порта в адресе

Связка apache+nginx, появление внутреннего порта в адресе.
Проблема была замечена исключительно с debian: при обращении к странице вида site.ru/about и внутренним редиректом на site.ru/about/ (добавление слэша в конец) вдруг появляется внутренный порт, и адрес становится например site.ru:8080/about/
Есть предположения о причинах, но если проблема не в основных настройках системы (уже было описано тут: http://dragonflybsd.blogspot.ru/2011/08/apachenginx.html), то наиболее простой фикс: в nginx правим переменную $host
proxy_set_header Host $host:80;
при этом должен стоять mod_rpaf (без выставленного X-Forvarded-for), с правильным RPAFproxy_ips.

Также был замечен вариант с
proxy_set_header X-Server-Address $server_addr;
но мной не проверялось.

помним про proxy_redirect

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

Была обнаружена очередная бага дебиляна, связанная с древностью их софта.
Invalid command 'RPAFheader', perhaps misspelled or defined by a module not included in the server configuration
И это дебилян 6!
Дело в том, что опция появилась в rpaf версии 0.6, а это 2+ года уже прошло.

Если эта опция нужна -- есть несколько костылей вроде хитрого макроса (?)
http://www.rootdamnit.eu/2012/09/24/varnish-and-apache-rpaf-invalid-command-rpafheader/
http://serverfault.com/questions/340500/varnish-forward-client-ip-address-to-backend
или сборки свежего модуля

#apt-get install apache2-prefork-dev
а после этого собирать из исходников mod_rpaf для Apache2

http://blog.dd0s.ru/2012/10/02/debian-6-apache2-mod_rpaf-nginx-invalid-command-rpafheader.htm