eth0.pro

Linux is working. The future is open.



С кластером Proxmox VE 2 мы получаем центральное управление несколькими физическими серверами, входящими в его состав, которых может быть 16 штук (возможно и более), встроенную безопасную VNC консоль, поддержку нескольких механизмов аутентификации (локальный, Active Firectory, LDAP и т. д.), управление правами на различные объекты (виртуальные машины, хранилища данных, ноды) на основе ролей, избавляемся от единственного и незаменимого master'а (multi-master cluster), онлайн-миграцию виртуальных машин между нодами и т. д.

Так же есть HA (High Availability) Cluster, но для правильного кворума мы должны иметь не менее трех работающих нод. Есть способ использовать HA и на двух нодах, но даже в этом случае желательно использование третьего сервера для общего хранилища, в противном случае нужно использовать более дешевое решение в виде DRDB. Используя HA у Вас должны быть только лучшие сервера, не имеющие единую точку отказа. Это подразумевает избыточность накопителей (Hardware RAID), резервирование блоков питания, UPS'ы, Network Bonding, Fencing-устройства (например iLO от компании HP). Сейчас этого всего у меня под рукой нет, поэтому будем строить простой, не HA кластер.

Читать далее

15 фев 2013 г. | Теги: Proxmox


На официальном сайте Proxmox нам предлагают скачать ISO-образ дистрибутива и с него производить установку. Но сей способ мне не очень понравился, т. к. я теряю рычаги управления тонкостями операционной системы и разметкой дисков, что для меня немаловажно. Если залезть в ихнюю базу данных, то можно найти руководство по развертыванию окружения уже на установленной системе Debian. От него то и будем отталкиваться.

Запускаем установку Debian и доходим до разметки дисков. У меня стоит аппаратный RAID-контроллер, поэтому необходимости в программном рейде у меня нет, хотя на другом сервере я поднимал mdadm. И так, я поступаю следующим образом. Делаю разделы первичный 512 Mb под /boot в ext3, первичный 2 Gb под swap и логический 30 Gb в ext3 под корень. И то на корень столько — слишком много, но учитывая сегодняшние объемы жестких дисков мы можем себе такое позволить. Всё оставшееся место оставляю неразмеченным, потом оно будет использовано под LVM. Заканчиваем установку ОС, с этим все достаточно тривиально.

Читать далее

15 фев 2013 г. | Теги: Debian Proxmox


Иногда бывают ситуации, что нужно избавиться от программного RAID массива, например для того, чтобы переразметить диски заново. К примеру имеем такую конфигурацию:

md2 : active raid1 sda5[0] sdb5[1]
      29294520 blocks super 1.2 [2/2] [UU]

Для начала нужно остановить массив:

# mdadm -S /dev/md2

А после затираем суперблоки на разделах, которые входили в него:

# mdadm --zero-superblock /dev/sda5
# mdadm --zero-superblock /dev/sdb5

14 фев 2013 г. | Теги: Linux RAID


При использовании MySQL как бекенда для FreeRADIUS иногда случается неприятна вещь - нескольким разным клиентам выдается одинаковый IP-адрес. В следствии чего ни у кого из них не работает Интернет.

Чтобы найти одинаковые IP-адреса на ppp-интерфейсах одного NAS'а можно воспользоваться такой командой:

ip a | grep /32 | awk '{print $4}' | uniq -d

Но стоит помнить, что этот IP может быть и на другом насе, нужно доработать.

8 фев 2013 г. | Теги: Linux


В этой статье Вы не получите глубокое рассмотрение всего модуля к Django, со всеми фичами. Для этого можно обратиться к примеру сюда: http://djbook.ru/ch11s05.html, а здесь как бы Quick Start, чтобы быстро, просто и работоспособно.

И так! Для начала правим urls.py, чтобы назначить адрес, по кторому открывается RSS-трансляция.

urls.py:

from blog.views import LatestPosts
...
url(r'^rss/$', LatestPosts()),

Далее идем во вьюшку.

Читать далее

5 фев 2013 г. | Теги: Django


Нужно было быстренько поднять FTP сервер. Я как человек мыслящий на будущее, с масштабированием, а не только конкретной задачей, выбрал для этих целей сервер ProFTPd с хранением пользователей в PostgreSQL.

И так, ставим пакетики proftpd-basic и proftpd-mod-pgsql. Подразумевается, что СУБД уже установлена и настроена.

Приступаем к настройке.

Читать далее

5 фев 2013 г. | Теги: Debian PostgreSQL FTP


Есть очень простой и полезный скрипт, который показывает какой процесс и в каком объеме использует раздел подкачки.

#!/bin/bash 
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
# Modified by Mikko Rantalainen 2012-08-09
# Pipe the output to "sort -nk3" to get sorted output
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d -regex "^/proc/[0-9]+"`
do
    PID=`echo $DIR | cut -d / -f 3`
    PROGNAME=`ps -p $PID -o comm --no-headers`
    for SWAP in `grep Swap $DIR/smaps 2>/dev/null | awk '{ print $2 }'`
    do
        let SUM=$SUM+$SWAP
    done
    if (( $SUM > 0 )); then
        echo "PID=$PID swapped $SUM KB ($PROGNAME)"
    fi
    let OVERALL=$OVERALL+$SUM
    SUM=0
done
echo "Overall swap used: $OVERALL KB"

31 янв 2013 г. | Теги: Linux


Не знаю почему, но ну никак не запоминается... Будет здесь, чтобы знать где искать.

# Очередь сообщений:
exim4 -bp

# Количество сообщений в очереди:
exim4 -bpc

# Очередь с подробностями, но в более красивом виде:
exim4 -bp | exiqsumm

# "Толкнуть" очередь:
exim4 -qqff

# Секунду на раздумья и Вы увидите что в данный момент делает Exim:
exiwhat

# Имитирует входящую SMTP-сессию с IP-адреса xx.xx.xx.xx, выводит подробную информацию о своих действиях,
# используется для настройки списков доступа ACL:
exim4 -bh xx.xx.xx.xx

# Выведет "трассировку" отправки сообщения:
exim4 -bt root@microsoft.com

# Инструмент для проверки выражений:
exim4 -be

# Показать загруженную конфигурацию:
exim4 -bP

# Консоль для отладки:
exim4 -bd -d+all

31 янв 2013 г. | Теги: Exim


При создании какого-либо проекта Вам может потребоваться генерация пары RSA-ключей для подписи документов, файлов и т. д. У меня появилась такая же необходимость и сейчас расскажу как я делал сие на Python (а конкретнее - в Django, но какая разница).

Для начала нам понадобится библиотека Python-RSA. Ставим ее (должны быть права root'а):

pip install rsa

Далее листинг самого процесса:

# Импортим библиотеку:
import rsa

# Генерируем ключи. В скобках 1024 — "битность" ключа,
# key_pub и key_class — экземпляры классов из библиотеки Python-RSA, которые хранят получившиеся ключи:
(key_pub, key_private) = rsa.newkeys(1024)

# Выводим ключи в текстовом виде:
print key_pub.save_pkcs1()
print key_private.save_pkcs1()

# Если нужно их получить без комментариев одной строкой, я сделал так:
key_pub = key_pub.save_pkcs1().replace("-----BEGIN RSA PUBLIC KEY-----", "").replace("-----END RSA PUBLIC KEY-----", "").replace("\n","")
key_private = key_private.save_pkcs1().replace("-----BEGIN RSA PRIVATE KEY-----", "").replace("-----END RSA PRIVATE KEY-----", "").replace("\n","")

Вот так все просто. Далее с полученными key_pub и key_private Вы можете делать что хотите, сохранить в базе данных, вывести в файл или просто print'ануть на стандартный вывод.

31 янв 2013 г. | Теги: Python


Работает у меня проект, сделанный на Django+Nginx+uWSGI. Там есть форма для загрузки картинок. Выявилась проблема, что не загружаются картинки (да и другие файлы, думаю) с кириллическими именами. Сервер возвращал ошибку 500 Internal Server Error.

Чтобы всё заработало, надо в uWSGI включить поддержки UTF8. Делается это очень просто. В конфиг вашего приложения добавьте строчку LANG = ru_RU.UTF-8

/etc/uwsgi/apps-enabled/my_project.ini

[uwsgi]
    ...
    LANG = ru_RU.UTF-8

Может потребоваться сгенерировать локаль. Для этого:

# dpkg-reconfigure locales

отмечаем LANG = ru_RU.UTF-8, и для уверенности:

# locale-gen

Всё.

# /etc/init.d/uwsgi restart

30 янв 2013 г. | Теги: uWSGI Django