Translate

неділя, 19 січня 2014 р.

Speedtest from shell console

Існують різні способи для перевірки швидкості інтернет з'єднання і мабуть найбільш популярний - це speedtest.net. Проте для цього необхідний браузер із підтримкою adobe flash і середовище в котрому він власне зможе запускатись. Тому у якості альтернативи раджу спробувати speedtest-cli, консольну програму, що виконує абсолютно ті ж функції.

Установку speedtest-cli можна виконати декількома способами: наприклад через pip чи easy_install. Тому спершу встановимо python-pip:

# apt-get install python-pip

Та після скачаємо і установимо speedtest-cli:

# pip install speedtest-cli

Все готово для нашої початкової цілі, тому запускаємо:

$ speedtest
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Domashnya Merezha LLC (79.28.193.171)...
Selecting best server based on ping...
Hosted by LLC"Astelit" (Kiev) [2.52 km]: 10.649 ms
Testing download speed........................................
Download: 73.08 Mbit/s
Testing upload speed..................................................
Upload: 90.80 Mbit/s

неділя, 12 січня 2014 р.

Monitoring SNMP device with Cacti (setup and configuration)

Cacti - опенсорс моніторингова система, написана як фронтенд до утиліт RRDtool (RRD, Round-robin Database, кільцева база даних). RRDtool включають в себе можливість графічного відображення інформації, що зберігається; це може бути зміна в часі завантаження процесора, завантаження мережевого інтерфейсу і тд. 

Cacti є зручним інструментом для задання параметрів побудови графіків за допомогою RRDtool, а також має багато готових темплейтів для відображення звичних даних на кшталт використання ресурсів системи.

У статті я спробую описати його установку та конфігурацію.

Встановлюється все досить просто:

# apt-get update
# apt-get install snmpd cacti cacti-spine

Демон snmpd необхідно установити на всіх машинах, що будуть моніторитись.

Установщик запропонує обрати вебсервер з котрим буде працювати Cacti (Apache чи Lighttpd) та деякі інші питання, з якими необхідно погодитись. У якості веб-сервера я використав Apache.

субота, 14 грудня 2013 р.

Використання Innobackupex (Xtrabuckup) для бекапу MySQL

Mysqldump буде влаштовувати вас лише до того моменту, доки він зможе знімати дамп на протязі прийнятного часу. База збільшується і це саме час задуматись про альтернативи. І такою альтернативою може бути Xtrabackup.

Xtrabackup - розробка компанії Percona, програма, що дозволяє робити бекап MySQL-серверів і не блокує базу данних на протязі бекапу. Xtrabackup може працювати з InnoDB, XtraDB і MyISAM (проте з певними обмеження на кшталт інкрементальних бакапів) таблицями. Мабуть, головною особливістю Xtrabackup є його висока швидкість роботи, на відміну від Mysqldump-а, що пояснюється тим, що він працює на бінарному рівні (умовно кажучи, копіює бінарні файли /var/lib/mysql, а не генерує запити як mysqldump).

Для початку я б хотів би розповісти логіку роботи програми Xtrabackup (точніше як я її розумію) і почну саме з особливостей роботи InnoDB. Запити, що генерують користувачі, приходять на mysql-server, записуються у лог транзакцій (mysql bin log) а потім виконуються. Результати запитів одразу не пишуться на жорсткий диск і лишаються в кешах.


У випадку падіння демону Mysql (причин насправді може бути купа), то при наступному старті почнеться відновлення останніх операцій із бін-логу і таким чином база лишиться неушкодженою.

середа, 11 грудня 2013 р.

MySQL/InnoDB one file per table

Після видалення бази данних чи таблиці MySQL розмір файлу ibdata1 не змінюється, що в результаті може призвести до повного заповнення диску. Для вирішення цієї проблеми існує опція innodb_file_per_table, що дозволяє зберігати кожну таблицю в окремому файлі на відміну від стандартної поведінки зберігання таблиць. Як наслідок, при видаленні таблиці, видалиться файл, що відповідає за її вміст та звільниться простір на диску. Опція innodb_file_per_table увімкнена по замовчуванню в Mysql версії 5.6.6 і старше.

Щоб перейти до нового варіанту зберігання таблиць необхідно виконати декілька пунктів. Розглянемо варіант міграції всіх баз на новий метод їхнього зберігання. Перш за все, про всяк випадок, забекапимо всю директорію /var/lib/mysql:

# cd ~
# mkdir backup
# cd backup
# service mysql stop
# cp -ra /var/lib/mysql mysqldata_backup
# service mysql start

Зробимо дамп всіх існуючих баз:

# mysqldump --routines --events --flush-privileges --all-databases > all-db.sql

понеділок, 9 грудня 2013 р.

MySQL/Galera replication with Haproxy balancing

MySQL/Galera - синхронний мульти-майстер кластер для MySQL/InnoDB бази данних, що володіє такими перевагами:
- синхронна реплікація.
- аctive-active мульти-майстер топологія
- читання чи запис на будь-яку ноду кластеру.
- автоматичний контроль членів кластеру: проблемні члени будуть автоматично виключені з діючого кластеру.
- автоматичне (просте) додавання додаткових серверів до кластеру. Зручне масштабування.
- справжня паралельна реплікація, на рівні рядків.

Додам, що звичайна реплікація типу master-master не є синхронною. На активному майстрі всі запити спочатку будуть записані в binlog і лише потім будуть передані на інший пасивний MySQL-майстер (слейв), запити на пасивному сервері можуть виконуватись із значною затримкою. У випадку із Galera запити на кожній ноді виконуються одночасно, або майже одночасно.

MySQL/Galera кластер використовує бібліотеку Galera для реалізації реплікації, що працює через MySQL wsrep API (патчена версія MySQL)



Як я вже згадував Galera допускає запис на будь-яку ноду кластеру, навіть одночасні записи із різних нод в одну таблицю. Все це завдяки алгоритму сертифікації транзакцій:
Логіка алгоритму сертифікації приблизно така: SQL-запити приходить на різні сервери кластеру і якщо вони конфліктують між собою (наприклад, запис в той самий рядок таблиці) відбувається роллбек і послідовне виконання запитів (виправте, якщо я помиляюсь).

вівторок, 12 листопада 2013 р.

Shc: compile bash-script to binary view

Скоріш за все вам навіть це не спадало на думку, проте так, насправді, є можливість скомпілювати bash-скрипт у бінарний вигляд. Щоправда це не зовсім так, адже програма, мова про яку піде далі, спочатку транслює bash-скрипт в Cі-скрипт, а вже потім його компілює. Як наслідок, ніхто і ніколи не побачить того, що було "накостилячено" в скрипті. Проте таким чином також можна заборонити редагування коду чи приховати паролі, котрі вживаються в скрипті і мають бути недоступні всім іншим. 

Ім'я цієї програми Shc і, на щастя, вона відсутня в репозиторіях. Тому зкомпілюємо її :

# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
--2013-11-12 01:40:16--  http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
Resolving www.datsi.fi.upm.es (www.datsi.fi.upm.es)... 138.100.9.22
Connecting to www.datsi.fi.upm.es (www.datsi.fi.upm.es)|138.100.9.22|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 20536 (20K) [application/x-gzip]
Saving to: ‘shc-3.8.9.tgz’

100%[====================================================>] 20 536      --.-K/s   in 0,1s    

2013-11-12 01:40:16 (150 KB/s) - ‘shc-3.8.9.tgz’ saved [20536/20536]

# tar xvfz shc-3.8.9.tgz
shc-3.8.9/CHANGES
shc-3.8.9/Copying
shc-3.8.9/match
shc-3.8.9/pru.sh
shc-3.8.9/shc-3.8.9.c
shc-3.8.9/shc.1
shc-3.8.9/shc.README
shc-3.8.9/shc.html
shc-3.8.9/test.bash
shc-3.8.9/test.csh
shc-3.8.9/test.ksh
shc-3.8.9/makefile

# cd shc-3.8.9

понеділок, 28 жовтня 2013 р.

ZFS filesystem on Linux (configuration and performance)

ZFS (Zettabyte File System) - 128-бітна файлова система, створена в Sun Microsystems в 2004 році. Вона об'єднує концепції файлової системи, менеджера логічних дисків і фізичних носіїв, новаторську структуру даних на дисках, а також просте управління томами зберігання даних. ZFS не без підстав називають найбільш функціональною у світі файловою системою.

Подейкують, що ZFS - це розробка інженерів, котрих перекупив Sun (тепер Oracle) в NetApp, через що це ніби як копія WAFL.
Підтримка файлової системи ZFS у Лінуксі реалізована у якості модуля, адже включити його прямісінько в ядро не дозволяє конфлікт ліцензій GPL v2 та CDDL, під якою і було випущено ZFS.

Часом ZFS докоряють тим, що це не unix-way включати купу можливостей (LVM, Raid та ін) в саму файлову систему, краще щоб кожну роль виконувала окрема програма. Проте з іншої сторони таким чином досягається кращий рівень інтегрованості між собою цих можливостей в одній системі.

Починаючи з травня 2013 (версія 0.6.1) файлову систему вважають готовою для використання в  production ситемах.

Наведу приклад установки і налаштування ZFS-розділу в Ubuntu 12.04.3.  Підтримка ZFS в Debian-подібних системах реалізована через модулі dkms, пакети яких розповсюджуються через ppa-репозиторій. Тож спершу додамо репозиторій і встановимо модулі:

# add-apt-repository ppa:zfs-native/stable
# apt-get update
# apt-get upgrade
# apt-get install ubuntu-zfs