Я хочу рассказать об установке 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:
- На экране загрузчика выбираем первый пункт меню, нажав на Enter.
- Выбираем язык меню установки: English. Мне так проще и понятнее.
- Тип клавиатуры: us.
- Дальше установщик предлагает инициализировать жесткие диски, предупреждая при этом, что все данные на них будут удалены. Соглашаемся.
- Теперь необходимо выбрать жесткие диски для установки. Выбираем оба жестких диска и последний пункт: Create custom layout.
- Удаляем все созданные автоматически разделы и приводим структуру разделов к следующему виду:
- Теперь выбираем первый жесткий диск /dev/sda и жмем кнопку New. Создаем раздел под будущий swap размером в 2 раза больше, чем оперативная память сервера. У меня памяти 1024мб, так что я создаю раздел 2048мб, в пункте File system type выбираем software RAID, в дисках ставим звездочку напротив sda, указываем размер диска и жмем ОК:
- Теперь создаем корневой раздел, который занимает все остальное пространство диска. Делаем все тоже самое, что и в предыдущем пункте, только в размере диска выбираем пункт Fill all avilable space:
- Должна получиться вот такая картинка:
- Делаем все то же самое для второго диска, создаем 2 таких же раздела, указываем, что диск sdb. В итоге должны получить вот такую картинку:
- Дальше создаем непосредственно RAID. Нажимаем на кнопку RAID и заполняем необходимые поля. File system type - SWAP, RAID Level - RAID1, RAID Members - sda1 и sdb1
- Создаем корневой раздел / Делаем все то же самое, что в предыдущем пункте, только указываем точку монтирования / и тип файловой системы ext3, разделы соответственно выбираем sda2 и sdb2:
- В итоге должно получиться так:
- Нажимаем ОК и продолжаем установку. Отвечаем на вопросы по конфигурированию сети. Либо вручную настройки укажите, либо по DHCP получите.
- Указываем часовой пояс.
- Задаем пароль root - минимум 6 символов.
- Дожидаемся окончания установки, задаем пароль для 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, TABlists 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 и тестирование отказоустойчивости закончены, можно смело начинать настройку.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.