среда, 17 ноября 2010 г.

redmine варианты запуска

Редмайн написан на руби, что делает его запуск несколько проблемным.
Пока нашел варианты запуска:
1) через встроенный веб сервер webrick (на 3000 порту). Увы, весьма нестабилен и за 2 недели падал 3 раза.
2) mongrel и mongrel-cluster
3) Thin
4) nginx + passenger
5) apache + mod_ruby

Гугль говорит, что webrick и thin не рекомендуются, cо встроенным я убедился, что не стоит...

Даже если проект локальный, желательно отдавать статику через nginx, так что вариант с прокси будет оптимальным.
Осталось определиться, mongrel или passenger.

http://www.modrails.com/documentation.html
Похоже, производительность примерно равна.

В оф.доке
http://www.redmine.org/wiki/redmine/HowTo_configure_Nginx_to_run_Redmine
используется вообще Thin.

mongrel
rubygem-mongrel.x86_64 : A small fast HTTP library and server for Ruby apps
rubygem-mongrel_cluster.noarch : GemPlugin wrapper for the mongrel HTTP server

Mongrel-cluster ставится так:
yum install rubygem-mongrel_cluster

Дальше можно делать по доке
http://seriyps.ru/blog/2010/01/14/ustanovka-redmine-na-ubuntu-9-10-pod-nginx-chast-2/

passenger ставится так:
gem install passenger
Потом модуль для nginx
passenger-install-nginx-module

Тут: http://www.modrails.com/documentation/Users%20guide%20Nginx.html
основная дока.

И не забываем настроить почту, это делается в config/email.yml
Чтобы просто отправлять от обычного пользователя (с существующего ящика), вписываем туда в production: настройки почтового сервера и наслаждаемся.
Если же надо еще и обрабатывать ответы по почте, смотрим доку ниже.

Еще полезная дока:
http://ru.gentoo-wiki.com/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Redmine
В частности, там есть немного по подключению баз и настройке exim.

Увы, sqlite3 у меня так и не заработал... Пришлось делать на mysql.

Изменение ядра по умолчанию

Когда ставим хен-ядро, после обновления ядра вполне может загрузиться опять простое.
Спасибо заметке http://phpsuxx.blogspot.com/2010/11/centos-x86-4.html
Оказалось, надо в моем случае открыть /etc/sysconfig/kernel и заменить там
DEFAULTKERNEL=kernel
на
DEFAULTKERNEL=kernel-xen

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

rsync

Надо синхронизировать 2 сервера, /var/www
Сначала я думал использовать rsyncd, но у него шифрование md4 и пароли в открытом виде... Лучше просто rsync через ssh, создать спец юзера и в authorized_keys вписать ему ключ и команду.

Если что, чего читал:
http://www.opennet.ru/man.shtml?topic=rsyncd.conf&category=5&russian=0
http://www.lissyara.su/articles/freebsd/programms/rsync/
http://wiki.izhnet.org/pages/viewpage.action?pageId=6225921

суббота, 13 ноября 2010 г.

Адаптеки 5ххх+seagate = проблемы

http://forum.ixbt.com/topic.cgi?id=66:7025:1

"Это известный баг винтов Сигейт 7200.11 и Адаптеков 5ххх
см. например
http://3nity.ru/viewtopic.php?f=63&t=12037"

Большие самодельные СХД

http://louwrentius.blogspot.com/2009/07/20-disk-18-tb-raid-6-storage-based-on.html
18Тб

http://www.fishki.net/comment.php?id=77671
90 терабайт, в состав которого вошло: два блока питания по 1600 Вт, 5 контроллеров, 64 жестких диска и 40 карлсонов

http://hardforum.com/showpost.php?p=1033720469&postcount=2
Top 10+ Tb систем

http://hardforum.com/showthread.php?t=1512972
С ссылки выше, 100тб в картинках.

Немного про ZFS

http://habrahabr.ru/blogs/i_am_clever/54806/

SGPIO

Вкратце: дополнительный кабель (10-пин) для передачи вспомогательной информации от контроллера к бэкплейну, например, активность дисков и их статус.

Подробнее:
http://en.wikipedia.org/wiki/SGPIO

И пара слов тут есть:
http://ru.wikipedia.org/wiki/Serial_Attached_SCSI

Разные подходы к дискам..

Как во фре удобно сделано: диск привязан к порту, поэтому появление нового диска в более младшем порту не мешает системе никак. И может быть 1 диск в системе, /dev/ad20, и это нормально...
В центоси с этим проблема. Был sda, вставили еще диск.. теперь новый получает sda, старый должен стать sdb, но не хочет, и начинается война. Стали делать привязку к UUID (зачем?? Есть же WWN, который используется во всех норм системах.. Но мы выпендримся!). А если хотим грузиться с рейда? В общем, хотели как лучше, получили как всегда. Лучше бы по номеру порта обзывали чтоли..

Уточнение: похоже, линь не дружит с хотплагом ИДЕ. Контроллер был в режиме "SATA", переключил в AHCI, сейчас хотя бы не падает все.
И снова кивок в сторону фри, где atacontrol detach ataX, atacontrol attach ataX и диск в системе. Отключать - после детача. Да, рескан реально не работает.

Продолжение бед

Про первую часть - после перезагрузки диски поменяли названия, видимо поэтому и лезли эти странные баги. Центось не умеет хотсвап?

Вставил диск в корзину (743 супермикра).
ata1: exception Emask 0x10 SAct 0x0 SErr 0x4080000 action 0xe frozen
ata1: irq_stat 0x00000040, connection status changed
ata1: SError: { 10B8B DevExch }
ata1: hard resetting link
ata1: SATA link down (SStatus 0 SControl 300)
ata1: EH complete
каждые 3 сек, пока диск не вынул.

Видимо, есть проблемы.

пятница, 12 ноября 2010 г.

беды с xen-серверком

Отпала ссш консолька от виртуалки.. В xm console вошел, получил строку
Message from syslogd@ at Thu Nov 11 20:31:38 2010 ...
centos-x64-xen kernel: journal commit I/O error

В дом0 в дмесге

...
end_request: I/O error, dev sda, sector 8726615
sd 3:0:0:0: SCSI error: return code = 0x00040000
end_request: I/O error, dev sda, sector 8726615
sd 3:0:0:0: SCSI error: return code = 0x00040000
...

end_request: I/O error, dev sda, sector 7601039
type=1701 audit(1289516342.948:3540): auid=500 uid=0 gid=0 ses=514 subj=user_u:system_r:unconfined_t:s0 pid=15252 comm="smartctl" sig=7

(попробовал запустить smartctl, получил Bus error)
И это при том, что сейчас файл с виртуалкой лежит на другой машине и получается через NFS.

root@file:/backup/nfs# gmirror status
Name Status Components
mirror/gm0 COMPLETE ad7
ad5

Там все в порядке.


[root@centos-x64-xen named]# /etc/init.d/avahi-daemon stop
Shutting down Avahi daemon: Failed to open PID file: Read-only file system
Failed to kill daemon: Read-only file system
rm: cannot remove `/var/lock/subsys/avahi-daemon': Read-only file system

Интересная хрень!

В хвосте /var/log/messages строки:

Nov 11 20:29:41 centos-x64-xen kernel: ata4.00: exception Emask 0x50 SAct 0x1 SE
rr 0x680901 action 0x6 frozen
Nov 11 20:29:41 centos-x64-xen kernel: ata4.00: irq_stat 0x0c000000, interface f
atal error
Nov 11 20:29:41 centos-x64-xen kernel: ata4: SError: { RecovData UnrecovData Hos
tInt 10B8B BadCRC Handshk }
Nov 11 20:29:41 centos-x64-xen kernel: ata4.00: cmd 61/08:00:27:c1:00/00:00:00:0
0:00/40 tag 0 ncq 4096 out
Nov 11 20:29:41 centos-x64-xen kernel: res 40/00:04:27:c1:00/00:00:00:0
0:00/40 Emask 0x50 (ATA bus error)
Nov 11 20:29:41 centos-x64-xen kernel: ata4.00: status: { DRDY }
Nov 11 20:29:41 centos-x64-xen kernel: ata4: hard resetting link
Nov 11 20:29:42 centos-x64-xen kernel: ata4: softreset failed (device not ready)
Nov 11 20:29:42 centos-x64-xen kernel: ata4: failed due to HW bug, retry pmp=0
Nov 11 20:29:42 centos-x64-xen kernel: ata4: SATA link up 3.0 Gbps (SStatus 123
SControl 300)
Nov 11 20:29:42 centos-x64-xen kernel: ata4.00: configured for UDMA/133
Nov 11 20:29:42 centos-x64-xen kernel: ata4: EH complete
Nov 11 20:29:42 centos-x64-xen kernel: SCSI device sda: 625140335 512-byte hdwr
sectors (320072 MB)
Nov 11 20:29:42 centos-x64-xen kernel: sda: Write Protect is off

Все, лог кончился.. где-то 6 часов назад.

При этом

[root@centos-x64-xen named]# touch /var/xen/nfs/test
успешен. Хотя это как раз нфс-шара...

Следом идущие баги:

[root@centos-x64-xen named]# xm list
Traceback (most recent call last):
File "/usr/sbin/xm", line 5, in ?
from xen.xm import main
File "/usr/lib64/python2.4/site-packages/xen/xm/main.py", line 55, in ?

File "/usr/lib64/python2.4/site-packages/xen/util/xsm/xsm.py", line 7, in ?
....

IOError: [Errno 2] No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/etc/named']

В общем, хана. Надо ребутиться. Проблема в том, что это уже второй раз. Но сначала попробуем хоть чуть-чуть оживить...

[root@centos-x64-xen named]# mount -t tmpfs none /tmp
[root@centos-x64-xen named]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1473 4 r----- 139784.4
...

Ура.

И напоследок еще забавный момент.

[root@centos-x64-xen named]# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1473 4 r----- 139802.9
SVN 16 256 1 ---s-- 3203.7
aqua3.wm 22 512 2 ---s-- 140.1
jabber-server 20 256 2 ---s-- 110.2
mail 17 256 1 ---s-- 2244.8
test2-nfs 7 512 1 -b---- 11836.6
zabbix-server 13 256 2 ---s-- 53772.9

В документации что-то было на тему, что -s- юзер никогда не должен увидеть. Ага.

четверг, 11 ноября 2010 г.

Создаем новый LVM

создание раздела
fdisk /dev/hda
u
p
n


w
<перечитать диски>

~]# pvcreate /dev/hda4
Physical volume "/dev/hda4" successfully created

~]# pvdisplay
"/dev/hda4" is a new physical volume of "45.00 GB"
--- NEW Physical volume ---
PV Name /dev/hda4
VG Name
PV Size 45.00 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID sY9uM2-qwt0-mR2w-0rMw-pRuh-bp4s-1fG1Ro

~]# vgcreate vg0 /dev/hda4
Volume group "vg0" successfully created

~]# lvcreate -v -L +20G vg0
Setting logging type to disk
Finding volume group "vg0"
Archiving volume group "vg0" metadata (seqno 1).
Creating logical volume lvol0
Creating volume group backup "/etc/lvm/backup/vg0" (seqno 2).
Found volume group "vg0"
visited lvol0
visited lvol0
Creating vg0-lvol0
Loading vg0-lvol0 table
Resuming vg0-lvol0 (253:0)
Clearing start of logical volume "lvol0"
Creating volume group backup "/etc/lvm/backup/vg0" (seqno 2).
Logical volume "lvol0" created

или mkfs
[root@centos ~]# mkfs.ext3 /dev/mapper/vg0-lvol0
mke2fs 1.39 (29-May-2006)

]# mount /dev/mapper/vg0-lvol0 /var1

LVM

Пришлось переходить полностью на линукс, надо виртуализировать все хозяйство, а на файлосервер денег зажали и будет 1 нода с пачкой дисков.
Изучаю lvm.
Недостатки: это решение явно не дотягивает до ZFS, да и рейдом не назвать как таковым. Потому что если во фре мы сделаем gmirror create gm0 ad4 ad6, то на итоговое зеркало можно спокойно ставить систему, не заморачиваясь с грубом (на lvm надо потом каждому диску ткнуть, что он загрузочный). Плюс нет такого удобного управления, как в ZFS (zpool status и видно, кто выпал, кто жив).. Да и создание зеркала там тоже элементарное.. А сжатие, а дедупликация, ээххх..

Переводим CentOS на статику

Понадобилось перевести некоторые машины на статику.

/etc/sysconfig/networking/devices/ifcfg-eth0
Тут настройки для первой сетевухи.

DEVICE=eth0
#BOOTPROTO=dhcp
BOOTPROTO=static
IPADDR=192.168.2.15
NETMASK=255.255.255.0
GATEWAY=192.168.2.2
IPV6INIT=no
HWADDR=00:26:18:B8:C2:4A
ONBOOT=yes

В данном случае закомментирован #BOOTPROTO=dhcp и следом вписаны адрес, маска, шлюз.
И не забыть поправить /etc/resolv.conf, вписав строки nameserver 8.8.8.8 или свои днс-ы, строка на 1 адрес.

При этом у меня в логе оказалась строчка

Nov 11 18:43:53 server restorecond: Will not restore a file with more than one hard link (/etc/resolv.conf) Invalid argument
Похоже, при этом ломается какая-то система файлов...

# locate resolv.conf
/etc/resolv.conf
/etc/resolv.conf.predhclient
/etc/sysconfig/networking/profiles/default/resolv.conf
/usr/share/man/man5/resolv.conf.5.gz

Правильнее править 2 или 3?...

Неприятный баг в апаче

Есть такой момент, что следование записей о хостах в конфиге имеет значение, при этом apachectl -S покажет все как ожидается, но реально работать будет не так. Например, первая запись описывает domain.com, а все последующие - его поддомены. Но в первой записи есть

ServerAlias www.domain.com *.domain.com

Показывать apachectl -S будет то, что мы и ожидаем увидеть, а вот работать некорректно. Если же переставим нужные поддомены выше -- заработает, как и ожидалось.

И влечет это еще багу:
Include etc/apache2/Includes/*.conf
У меня каждый сайт в отдельном файле. И теперь если сначала считает основной домен, а потом поддомен - можно задолбаться.

Решение -- использование префиксов для поддоменов, например _sub.domain.com, __sub.sub.domain.com или всем дать номера. Один раз тоже вылезла бага - на всех серверах отрабатывало как надо, а на одном читало непойми как, там пришлось прописать руками все домены в конфиг. Или фикс - в конфиг:
Include etc/apache2/Includes/__*.conf
Include etc/apache2/Includes/_*.conf
Include etc/apache2/Includes/*.conf
(проверить, но должно работать)

Многие скажут, что это не бага, а фича, но на самом деле это бага в полном смысле. Лечится составлением списка всех доменов и выбором с наиболее точным совпадением, как у того же DHCP с масками мак-адресов сделано, от большего совпадения к меньшему.

avahi

Что вообще есть этот авахи?

Avahi — система, производящая анализ локальной сети на предмет выявления различных сервисов. К примеру, вы можете подключить ноутбук к локальной сети и сразу получить информацию об имеющихся принтерах, разделяемых ресурсах, сервисах обмена сообщениями и прочих услугах. Подобная технология существует в Mac OS X (Rendezvous, Bonjour) и показала себя с лучшей стороны.

http://ru.wikipedia.org/wiki/Avahi
http://ru.wikipedia.org/wiki/Zeroconf

Именно отсюда растут ноги у сети 169.254 и UPnP. Но я не могу представить, когда в сети больше 10 компов эти штуки имеют смысл. Разве что для дома в сети из 2-3 машин.

В винде всякие bonjour, mDNSResponser итд - виндовая версия авахи.