Конструктор для взрослых

Если кто не наигрался в детстве в конструкторы, есть шанс немного восполнить упущенное собрав стойку для телевизора наподобие этой 🙂 .

Стоила дороже самого телевизора, но, наверное, она стоила этих денег.

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


Регулировка задней двери Nissan Micra

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

А наблюдения показали, что дверь стоит наискосок у большинства Микр.

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


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



Последнее, что остается сделать, это отрегулировать демпферы на двери, что бы они слегка придерживали дверь при её закрытии.


Перенос Outlook на другой компьютер

В последнее время несколько моих знакомых сталкивалось с задачей переноса своего Outlook на другой компьютер. В общем то, сами данные, а это один или несколько .pst файлов, перенести элементарно. Но вот настройки учетных записей, RSS, Junk-Email и так далее вызывали у всех проблемы. Самые продвинутые пробовали переносить эти настройки копированием реестра, но всегда возникали определенные проблемы.

Столкнулся с такой задачей и я. Все оказалось на столько просто, что не могу об этом не написать. Кстати, это решение в поисковиках находится не сразу.

В Windows Vista есть приложение Windows Easy Transfer. Достаточно выбрать, что хочется перенести со старого компьютера, способ переноса и загрузить данные на новом.

Все интуитивно понятно. Данные могут копироваться через сетевую папку, жесткий диск, компакт или специальный USB шнур. Можно перенести и настройки и документы.

В данном случае меня интересовали только настройки Microsoft Office, остальной мусор переносить не стоило.


Не вдаваясь в детали, скажу, что перенеслось все кроме сохраненных паролей. Даже настройки связки OneNote-Word-XMLRPC-WorpressAPI. Пришлось немного напрячься, что бы вспомнить почтовые пароли, а в остальном никаких проблем не возникло вообще.

В приложении даже предусмотрена возможность создания инсталляционного пакета для Windows XP. Я не поленился и проверил – с XP на Vista работает точно.

Удивительно, как такую качественную и полезную утилиту раздают вместе с ОС на шару.

Графики Cacti для значений из командной строки

Недавно захотелось попробовать поюзать Cacti. Например, построить график для произвольного значения, взятого из командной строки (custom graphs). На Ubuntu Cacti встал сам и без лишних вопросов, даже описывать нечего. Сам сразу же начал строить графики основных параметров самого сервера, что меня вполне устроило. Попутно нашелся очень хороший шаблон для мониторинга параметров MySQL сервера.

А вот с визуализацией значения из командной строки пришлось повозиться.

Описанное далее не претендует на хорошую хаутушку по Cacti, но может пригодиться для тех, кому надо быстро решить похожую задачу и не хочется вникать во всю архитектуру Cacti. Словом, quick and dirty. В примере строится график суммарной загрузки процессора всеми процессами mongrel_rails, которую выдает ps.

Создаем скрипт, который выдает нам численное значение нужного параметра:

vim /usr/share/cacti/site/scripts/mongrel_cpu.pl

#!/usr/bin/perl

open(PROCESS, “ps aux | grep ‘/usr/bin/ruby1.8 /usr/bin/mongrel_rails’ | awk ‘{print \$3}’ | awk ‘BEGIN {sum=0} {sum=sum + \$1} END {print sum}’ |”);

$output = <PROCESS>;

close(PROCESS);

chomp($output);

print $output;

Проверяем, что скрипт работает:

perl /usr/share/cacti/site/scripts/mongrel_cpu.pl

1.6

Перевода строки не будет и он не нужен, это нормально.

Переходим в консоль Cacti.

Data Input Methods

add

name = Mongrel CPU Usage

input type = script/command

input string = perl <path_cacti>/scripts/mongrel_cpu.pl

create

В разделе output fields:

add

field = percents

friendly name = Total percents used by mongrels

update = checked

create

Переходим в Data templates.

add

data templates name = Mongrel CPU Usage

data source name = |host_description| – Mongrel CPU Usage

data input method = выбираем из списка Mongrel CPU Usage

internal data source name = percents

ds type = GAUGE

create

save

Переходим в Graph Templates.

add

name = Mongrel CPU Usage

title = |host_description| – Mongrel CPU Usage

vertical label = percents

На странице появились Graph Template items.

Нам надо добавить туда сам график и LAST, AVERAGE, MAX подписи к нему.

нажимаем в этом разделе add

data source = Mongrel CPU Usage – (percents) из списка

выбираем цвет

graph item type = AREA

consolidation function = AVERAGE

value = percents

text format = Percents

create

add

graph item type = GPRINT

consolidation function = LAST

text format = Current

add

graph item type = GPRINT

consolidation function = AVERAGE

text format = Average

add

graph item type = GPRINT

consolidation function = MAX

text format = Maximum

Нажимаем save в самом внизу страницы.

Переходим в Host Templates.

add

name = Rails Application Server

create

associated graph templates = выбираем из списка Mongrel CPU Usage

add

save

Переходим в New Graphs.

create new host

description = Web Server Rails

hostname = 127.0.0.1

host template = Rails Application Server

create

На этой же странице надо нажать Create Graphs for this Host.

выделяем все графики

create

Переходим в Devices.

ставим галочку на новом хосте и выбираем действие Place on a Tree (Default Tree)

go

выбираем корень

yes

Ждем 10 минут (по умолчанию сбор данных идет раз в 5 минут), переходим в просмотр графиков и наслаждаемся результатом.


Репликация MySQL на уже работающем сервере

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

При использовании описанного ниже подхода стоит рассчитывать на даунтайм основного сервера на время его перезапуска. В примере использовался сервер под управлением Ubuntu и MySQL 5.0 из основного репозитория с настройками по умолчанию. Я исходил из того, что реплицировать нужно все базы данных, за исключением системных.

На главном сервере.

Надо поправить файл /etc/mysql/my.cnf:

[mysqld]
# Необходимо открыть доступ к серверу по сети,
# что бы slave имел возможность подключиться
# и не забыть закрыть этот доступ, например файрволом, для тех, кому он не нужен
bind-address            = 0.0.0.0
server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
# Исключим ненужные БД
#binlog_do_db           = include_database_name
binlog_ignore_db        = information_schema
binlog_ignore_db        = mysql
binlog_ignore_db        = test
# Это рекомендуется для более стабильной работы репликации баз на InnoDB
innodb_flush_log_at_trx_commit=1
sync_binlog=1

Перезапускаем mysql:

/etc/init.d/mysql restart

Выдаем slave права на репликацию:

mysql -u root
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'10.0.0.2' IDENTIFIED BY 'slave_password';
FLUSH PRIVILEGES;

Посмотреть статус можно командой:

SHOW MASTER STATUS;
+------------------+----------+--------------+-------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB              |
+------------------+----------+--------------+-------------------------------+
| mysql-bin.000015 |       98 |              | information_schema,mysql,test |
+------------------+----------+--------------+-------------------------------+
1 row in set (0.00 sec)

Далее делаем дамп существующих баз данных. Ключи –single-transaction –master-data –flush-logs должны глобально заблокировать на время дампа базу данных на запись и вписать в дамп номер и позицию лога, с которых надо начать репликацию на slave. Это обеспечит точность совпадения данных на главном и slave серверах, даже если с главным сервером в этот момент идет работа и записываются данные.

mysqldump -u root --single-transaction --master-data --flush-logs --databases db1 db2 db3 > ALL_DB.sql

Если посмотреть внутрь ALL_DB.sql, то там должна присутствовать строка:

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000015', MASTER_LOG_POS=98;

Далее копируем дамп на slave:

scp ALL_DB.sql 10.0.0.2:

Продолжаем на втором сервере.

Убеждаемся что там нет остатков настроек репликации, в принципе, если на сервере нет нужных данных, не помешает переустановить mysql с очисткой папок БД.

Так как начиная с версии MySQL 5.2 параметры доступа для репликации убираются из my.cnf сразу перейдем на использование такой схемы.

Правим файл /etc/mysql/my.cnf:

[mysqld]
# ID slave должен отличаться от главного сервера
server-id               = 2
replicate-ignore-db     = information_schema
replicate-ignore-db     = mysql
replicate-ignore-db     = test
relay-log               = /var/log/mysql/mysqld-relay-bin.log

Перезапускаем сервер:

/etc/init.d/mysql restart

Поправим файл ALL_DB.sql:

Дописываем к строке

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000015', MASTER_LOG_POS=98;

параметры доступа:

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000015', MASTER_LOG_POS=98, MASTER_HOST='10.0.0.1', MASTER_USER='replication',
MASTER_PASSWORD='slave_password', MASTER_CONNECT_RETRY=60;

Загружаем данные:

mysql -u root < ALL_DB.sql

Проверяем состояние репликации, она НЕ должна быть запущена (Slave_IO_Running, Slave_SQL_Running: no, no):

mysql -u root
show slave status;

Запускаем репликацию (теперь должно быть Slave_IO_Running, Slave_SQL_Running: yes, yes):

START SLAVE;
show slave status;

Для проверки можно попробовать перезапустить mysql и проверить состояние репликации еще раз:

/etc/init.d/mysql restart
mysql -u root
show slave status;

Остается по желанию проверить репликацию, создав, например, тестовую таблицу или добавив данные в существующую и убедиться, что изменения отразились на slave.

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

DNS-323 – продолжение

После небольшой оплошности с коммандой find -exec chmod 😉 сегодня пришлось перенастраивать заново коробочку.

Прошивка обновилась до версии 1.06. Обновление прошло без сюрпризов и потери данных.

Transmission обновился до 1.51 версии и я открыл для себя клиента под Windows Transmission Remote. Теперь можно удобно выставлять приоритеты файлов, и, главное, выбирать файлы для закачки внутри одного торрента.

Домашнюю папку пользователю root я изменил на /mnt/HD_a2/root – стало гораздо удобнее.

Cleanboot, lighttpd не ставил за ненадобностью.

Еще захотелось присылать себе на почту отчет скрипта резервного копирования, о чем поподробнее.

Включаем syslogd (без логов понимать, что творится с почтой проблематично) и переместим логи на жесткий диск:

mkdir /ffp/var/log
cp -r /var/log/samba /ffp/var/log
cp -r /var/log/cores /ffp/var/log
cp /var/log/lastlog /ffp/var/log
cp /var/log/wtmp /ffp/var/log
cp /var/log/btmp /ffp/var/log
vim /ffp/start/syslogd.sh
syslogd_start()
{
    rm -r /var/log
    ln -s /ffp/var/log /var/log
    proc_start /ffp/sbin/syslogd /ffp/sbin/klogd
}
chmod +x /ffp/start/syslogd.sh
/ffp/start/syslogd.sh start

Устанавливаем postfix:

ipkg install postfix
vim /opt/etc/postfix/main.cf
mail_owner = admin
setgid_group = maildrop
myhostname = nas.domain.com
mynetworks_style = subnet

В интерфейсе управления коробочкой нужно создать группу maildrop.

Далее удаляем все строки, содержащие manpage_directory, sample_directory, readme_directory, html_directory из файла /opt/etc/postfix/postfix-files.

Поправляем привилегии на файлах, запускаемся, отправляем тест и смотрим лог:

postfix set-permissions
/opt/etc/init.d/S69postfix start
tail -f /ffp/var/log/messages
sendmail user@domain.com
TEST