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

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

Я хочу рассказать об установке Elastix на сервер с двумя жесткими дисками для обеспечения простейшей отказоустойчивости путем создания программного raid 1.

Онлайн-курс по устройству компьютерных сетей

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Что такое Elastix и зачем он нужен

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 посте установки

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

# 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 и тестирование отказоустойчивости закончены, можно смело начинать настройку.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar