Решение проблемы

Установка Elastix с созданием raid 1


Elastix представляет из себя готовую платформу на основе операционной системы CentOS. Эта платформа включает в себя панель веб администрирования всего функционала, который в ней присутствует: ip телефония, mail сервер, im сервер и прочие сопутствующие основным функции. Его удобно использовать, когда нужно быстро развернуть сервер IP телефонии. Остальные функции используются реже. Подробнее почитать о Elastix можно на Википедии.

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

Установка Elastix

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

По-умолчанию, инсталлятор Elastix создает из всех хардов lvm тома и объединяет их в один корневой. Никакой защиты данных тут нет и при выходе из строя хотя бы одного диска вы получаете неработающую систему. Как из такой системы потом вынимать данные — не знаю, думаю, что возможно, но сложно. Я же создам программный raid 1 средствами mdadm.

Итак, теперь по пунктам все этапы установки Elastix:

  1. На экране загрузчика выбираем первый пункт меню, нажав на Enter.
  2. Выбираем язык меню установки: English. Мне так проще и понятнее.
  3. Тип клавиатуры: us.
  4. Дальше установщик предлагает инициализировать жесткие диски, предупреждая при этом, что все данные на них будут удалены. Соглашаемся.
  5. Теперь необходимо выбрать жесткие диски для установки. Выбираем оба жестких диска и последний пункт: Create custom layout.

    Установка Elastix
  6. Удаляем все созданные автоматически разделы и приводим структуру разделов к следующему виду:

    Установка Elastix
  7. Теперь выбираем первый жесткий диск /dev/sda и жмем кнопку New. Создаем раздел под будущий swap размером в 2 раза больше, чем оперативная память сервера. У меня памяти 1024мб, так что я создаю раздел 2048мб, в пункте File system type выбираем software RAID, в дисках ставим звездочку напротив sda, указываем размер диска и жмем ОК:

    Установка Elastix
  8. Теперь создаем корневой раздел, который занимает все остальное пространство диска. Делаем все тоже самое, что и в предыдущем пункте, только в размере диска выбираем пункт Fill all avilable space:

    Установка Elastix
  9. Должна получиться вот такая картинка: Установка Elastix
  10. Делаем все то же самое для второго диска, создаем 2 таких же раздела, указываем, что диск sdb. В итоге должны получить вот такую картинку: Установка Elastix
  11. Дальше создаем непосредственно RAID. Нажимаем на кнопку RAID и заполняем необходимые поля. File system type — SWAP, RAID Level — RAID1, RAID Members — sda1 и sdb1 Установка Elastix
  12. Создаем корневой раздел / Делаем все то же самое, что в предыдущем пункте, только указываем точку монтирования / и тип файловой системы ext3, разделы соответственно выбираем sda2 и sdb2: Установка Elastix
  13. В итоге должно получиться так: Установка Elastix
  14. Нажимаем ОК и продолжаем установку. Отвечаем на вопросы по конфигурированию сети. Либо вручную настройки укажите, либо по DHCP получите.
  15. Указываем часовой пояс.
  16. Задаем пароль root — минимум 6 символов.
  17. Дожидаемся окончания установки, задаем пароль для MySQL, для FreePBX панели.

Все, установка окончена.

Проверяем отказоустойчивость RAID1 на Elastix посте установки

Установка Elastix с созданием raid 1

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

# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/md1 18G 1.9G 15G 12% /

tmpfs 500M 0 500M 0% /dev/shm

Видим, что Elastix установлен на raid массив md1. Посмотрим информацию о массиве:

# cat /proc/mdstat

Personalities : [raid1]
md0 : active raid1 sdb2[1] sda2[0]
2096384 blocks [2/2] [UU]

md1 : active raid1 sdb1[1] sda1[0]
18868224 blocks [2/2] [UU]

Тут мы видим, что с рейдом все в порядке.

Теперь нужно проверить, какой диск прописан в качестве загрузочного в GRUB и где установлен сам загрузчик. Это очень важно, так как в случае выхода из строя диска с загрузчиком, мы не сможем загрузить систему.

# cat /boot/grub/grub.conf | grep -v '#'

default=0

timeout=5

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

hiddenmenu

title Elastix (2.6.18-371.1.2.el5)

root (hd0,0)

kernel /boot/vmlinuz-2.6.18-371.1.2.el5 ro root=/dev/md1

initrd /boot/initrd-2.6.18-371.1.2.el5.img

Здесь мы видим, что в качестве источника загрузки указан наш массив /dev/md1, это нам полностью подходит. Но при этом загрузчик, будет сначала пытаться загрузиться с первого диска. В случае его выхода из строя, загрузиться система не сможет. Это нужно обязательно исправить. Открываем и редактируем файл /boot/grub/grub.conf Приводим его к следующему виду:

default=0

timeout=5

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

hiddenmenu

fallback=1

title Elastix (2.6.18-371.1.2.el5) hd0

root (hd0,0)

kernel /boot/vmlinuz-2.6.18-371.1.2.el5 ro root=/dev/md1

initrd /boot/initrd-2.6.18-371.1.2.el5.img

title Elastix (2.6.18-371.1.2.el5) hd1

root (hd1,0)

kernel /boot/vmlinuz-2.6.18-371.1.2.el5 ro root=/dev/md1

initrd /boot/initrd-2.6.18-371.1.2.el5.img

Мы добавили в загрузчик информацию о втором диске и добавили опцию fallback=1, которая означает, что в случае выхода из строя первого диска загрузчик будет пытаться загрузить систему со второго.

Теперь наш загрузчик знает, что в случае выхода из строя одного диска, нужно загружаться со второго. Но сам загрузчик у нас установлен только на первый диск: splashimage=(hd0,0)/boot/grub/splash.xpm.gz Нужно это исправить и установить GRUB на оба жестких диска:

# grub

Probing devices to guess BIOS drives. This may take a long time.

GNU GRUB version 0.97 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB

lists possible command completions. Anywhere else TAB lists the possible

completions of a device/filename.]
grub> root (hd0,0)

root (hd0,0)

Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd0)

setup (hd0)

Checking if «/boot/grub/stage1» exists… yes

Checking if «/boot/grub/stage2» exists… yes

Checking if «/boot/grub/e2fs_stage1_5» exists… yes

Running «embed /boot/grub/e2fs_stage1_5 (hd0)»… 15 sectors are embedded.

succeeded

Running «install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf»… succeeded

Done.

grub> root (hd1,0)

root (hd1,0)

Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd1)

setup (hd1)

Checking if «/boot/grub/stage1» exists… yes

Checking if «/boot/grub/stage2» exists… yes

Checking if «/boot/grub/e2fs_stage1_5» exists… yes

Running «embed /boot/grub/e2fs_stage1_5 (hd1)»… 15 sectors are embedded.

succeeded

Running «install /boot/grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/boot/grub/stage2 /boot/grub/grub.conf»… succeeded

Done.

grub> quit

quit

Жирным выделены мои команды, все остальное вывод.

Эмулируем выход из строя жесткого диска

Для начала проверим, все ли в порядке после изменений загрузчика. Просто перезагружаем Elastix. Если все в порядке, то выключаем сервер и отключаем один из жестких дисков. Я буду выключать второй hd1, на котором раздел sdb.

Система благополучно загрузилась. Проверяем состояние рейда:

# cat /proc/mdstat

Personalities : [raid1]
md0 : active raid1 sda2[1]
2096384 blocks [2/1] [_U]

md1 : active raid1 sda1[1]
18868224 blocks [2/1] [_U]
Видим, что одного диска нет в массиве, но при этом система нормально функционирует и не замечает отсутствие диска:

# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/md1 18G 1.9G 15G 12% /

tmpfs 500M 0 500M 0% /dev/shm

Выключим сервер и вернем отключенный диск. Снова включаемся, проверяем состояние RAID:

# cat /proc/mdstat

Personalities : [raid1]
md0 : active raid1 sdb2[1] sda2[0]
2096384 blocks [2/2] [UU]

md1 : active raid1 sdb1[1]
18868224 blocks [2/1] [_U]

Отключенный диск почему то автоматически обратно не подключился всеми разделами. Исправим это и вернем sda1 обратно в массив руками:

# mdadm --manage /dev/md1 --re-add /dev/sda1

Снова проверяем:

# cat /proc/mdstat

Personalities : [raid1]
md0 : active raid1 sdb2[1] sda2[0]
2096384 blocks [2/2] [UU]

md1 : active raid1 sda1[2] sdb1[1]
18868224 blocks [2/1] [_U]
[>………………..] recovery = 0.8% (158272/18868224) finish=47.2min speed=6594K/sec

Раздел встал в рейд и началась синхронизация. После окончания синхронизации, массив вернется в обычное рабочее состояние.

На этом установка Elastix и тестирование отказоустойчивости закончены, можно смело начинать настройку.


СМОТРИ ТАКЖЕ