/

05 May 2010

Добро пожаловать на блог о *Nix cистемах.

Amazon Route53 DNS доставит клиента прямо к вашему серверу

27 Mar 2012

Мы рады представить вам Latency Based Routing (LBR) для Amazon Route 53, высоконадежный и рентабельный сервис. LBR одна из самых запрашиваемых функций, которая поможет вам улучшить производительность ваших приложений в глобальном масштабе. LBR направляет ваших пользователей прямо в конечную точку AWS, будь то EC2 инстанс, Elastic IP или ELB балансер.
Так говорится в официальном анонсе новой функции от Amazon для Route53 DNS.

AWS сообщают, что постоянно собирают анонимную информацию о задержках до конечных пользователей, сохраняют в RDS, и с помощью этих данных проводят сравнительные анализы этих самых задержек.
Схема работает таким образом, что Route 53 автоматически определит ближайший к клиенту датацентр и отдаст IP вашего приложения в нем.

Эта функция работает для записей “A”, “AAAA”, “CNAME”, “TXT”, а также для Route 53 специфических “ALIAS to A” и “ALIAS to AAAA” типов записей.

Цены:
$0,750 за миллион запросов – Первый млрд. запросов / месяц
$0,375 за миллион запросов – После 1 млрд. Запросов / месяц

Запросы к альясам, которые закреплены к Elastic Load Balancers бесплатны. Эти запросы включены в отчет(usage report) как “Intra-AWS-DNS-Queries”.

InnoDB: The error means mysqld does not have the access rights to the directory

10 Feb 2012

Промучался я с этим добрый час или полтора. Понадобилось мне перести БД с системного диска, для облегчения жизни оного. Сделал по стандартной схеме: стоп mysql, cp /newHDD/mysql/, ln -s …, старт mysql. И не заводится mysql. Что я только не делал, с правами, симлинками, в конфиге напрямую прописывал новый путь к базам, в логах было все одни и те же месседжи:

1
2
3
4
5
6
7
8
9
[Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.

Проблема лежала совсем в другом месте. Как оказалось, во всем был виноват apparmor.

Решаем добавлением этих строк в:

/etc/apparmor.d/usr.sbin.mysqld

1
2
     /new-mysql-dir/ r,
     /new-mysql-dir/** rwk,
1
/etc/init.d/apparmor restart

Agent admitted failure to sign using the key.Permission denied (publickey).

18 Aug 2011

Когда я добрался до настройки git для моего небольшого проектика у меня появилась небольшая проблема. После того как я сгенерировал ключ и добавил его  на GitHub(http://help.github.com/linux-set-up-git/),  при проверке появилась следующая ошибка:

1
#Agent admitted failure to sign using the key.Permission denied (publickey).

Решение:

1
ssh-add ~/.ssh/id_rsa

Проверяем:

1
2
ssh -T git@github.com
Hi unixway! You've successfully authenticated, but GitHub does not provide shell access.

sh: mysql_config: not found

03 Aug 2011

Устанавливаем MySQL-python через pip. Вылетает с такой ошибкой:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Downloading/unpacking MySQL-python==1.2.3 (from -r requirements.txt (line 5))
  Downloading MySQL-python-1.2.3.tar.gz (70Kb): 70Kb downloaded
  Running setup.py egg_info for package MySQL-python
    sh: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
      File "/home/django/build/MySQL-python/setup.py", line 15, in </module><module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 24, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
    Complete output from command python setup.py egg_info:
    sh: mysql_config: not found

Traceback (most recent call last):

  File "<string>", line 14, in <module>

  File "/home/django/build/MySQL-python/setup.py", line 15, in </module><module>

    metadata, options = get_config()

  File "setup_posix.py", line 43, in get_config

    libs = mysql_config("libs_r")

  File "setup_posix.py", line 24, in mysql_config

    raise EnvironmentError("%s not found" % (mysql_config.path,))

EnvironmentError: mysql_config not found

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /home/django/.pip/pip.log
</module></string></module></string>

Решение:

1
apt-get install libmysqlclient-dev

FastCGI sent in stderr: “PHP Parse error: syntax error, unexpected $end in

03 Aug 2011

Вот такая ошибка появлялась при переносе пхпшной части сайта с Apache2 на FastCGI.

1
FastCGI sent in stderr: "PHP Parse error:  syntax error, unexpected $end in

Избавляемся от нее включением в php.ini следующей опции:

short_open_tag = On

Что позволяет нашему интерпритатору одинаково понимать в нашем коде

< ? и < ?php

Оптимизация SSD в Linux

15 Jul 2011

Сделаем небольшой чеклист при использовании SSD.

Если у вас есть возможность перенести/переставить все на новую файловую систему, то лучше это сделать.
По моему мнению для FreeBSD это конечно ZFS, для Linux btrfs, и возможно любая не журналируемая.
Но можно просто отключить в работающей FS журнал:

1
tune2fs -o journal_data_writeback  /dev/sda1

Далее стоит вынести временные файлы в память. Некоторые еще советуют вынести в память /var/log/. Правим /etc/fstab следующим образом:

1
2
3
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /var/lock tmpfs defaults 0 0

Добавляем следующие опции к монтированию, /etc/fstab:

1
2
3
4
###Для ext4
noatime,discard,data=writeback,errors=remount-ro
###Для btrfs
defaults,noatime,compress,nobarrier,nodatacow,ssd

Меняем I/O планировщик в ядре на noop. Так как он лучше работает с SSD:

1
2
3
aptitude install sysfsutils
#Добавляем следующее в /etc/sysfs.conf
block/sda/queue/scheduler = noop

У SSD есть два режима active и suspend. Увеличим время нахождения в диска в suspend, что бы уменьшить энергопотребление.
И еще одна опция, которая увеличит время между записям на диск.
Добавляем в /etc/sysctl.conf

1
2
vm.laptop_mode=5
vm.dirty_writeback_centisecs = 15000

Выше мы перенесли tmp в память, но броузеры тоже весьма агрессивно работают с файловой системой. Что бы избежать лишних операций записи, перенесем кеш броузера в память:

Добавляем в /etc/fstab:

1
2
3
none        /ramfs       ramfs   defaults,size=250M              0 0
#создаем папку, даем права
mkdir /ramfs ; chown user:user /ramfs

Добавляем к ярлыку(для Ubuntu 11.04 “~/.local/share/applications/{$BROWSER_NAME}.desktop”) chrome опцию

–disk-cache-dir=”/ramfs”

Ну и последним для тех кто не хочет использовать кеш вообще:

Firefox->about:config->browser.cache.disk.enable: false
В запуск chrome добавим такую опцию(для Ubuntu 11.04 “~/.local/share/applications/{$BROWSER_NAME}.desktop”) –disk-cache-size=0

Все было написано весьма быстро, поэтому если кому интересны подробности, пишите в комментах-добавлю.

Thanks Arsen.

Автоматизируем просмотр логов Linux.

31 May 2011

Итак мы хотим получать отчеты о состоянии серверов на мейл.
Расскажу на примере Ubuntu, которая оказалась под рукой.

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

aptitude install logwatch

копируем конфиг в /etc/, что бы при обновлении не затерлись наши правки

cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf

Делаем основные изменения

vim /etc/logwatch/conf/logwatch.conf

MailTo = nw@gmail.com

Output = mail

Format = html

Detail = High

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

/usr/sbin/logwatch –mailto nw@gmail.com

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

vim /etc/cron.daily/00logwatch

Вот так, быстро и полезно.

Автоматическая проверка новых серий на rutracker.org

26 May 2011

Статья не моя, но очень полезная и интересная. Автор http://vkontakte.ru/id5067693.

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

Материальная база уже имелась.
1) Домашний компьютер с debian 6.0 консольный.
2) Установленный на нем Transmission.
3)Желание.

После некоторого поиска был выбран нужный скрипт и работа пошла.

Читать полностью »

Добавление sun-java6 в ubuntu 10.04(Lucid)

10 Apr 2011

Для Ubuntu 10.04 LTS пакет sun-java6 был убран. Рекомендуют использовать openjdk-6

Если вы не можете сделать такой переход с проприетарных Sun JDK/JRE на OpenJDK, вы можете установить sun-java6 из так называемых Canonical Partner Repository.
Достаточно выполнить следующую команду в консоли:

1
add-apt-repository "deb http://archive.canonical.com/ lucid partner"

Не забываем о:

1
aptitude update

MySQL Error 1206 “The total number of locks exceeds the lock table size”

09 Apr 2011

Сегодня я покажу как бороться с такой ошибкой при master-slave репликации.

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

“in Innodb row level locks are implemented by having special lock table, located in the buffer pool where small record allocated for each hash and for each row locked on that page bit can be set.”

Что примерно означает, что Innodb блокирует строки при помощи специальной таблицы, которая расположена в boofer pool…

По умолчанию значение innodb_buffer_pool_size равно 8M. В документации MySQL говорится, что вы можете выставить это значение равным до 80% размеру оперативной памяти в системе, но так же и говорится, что нужно быть осторожнее, и не стоит отдавать максимум,если вам того не нужно.

Итак решение заключается в добавлении/изменении опции в my.cnf:

1
2
    [mysqld]
    set-variable=innodb_buffer_pool_size=512M

Рестарт сервиса. Далее я удалил табличку на мастере и заново создал. На слейве она появилась без всяких ошибок.