Метки: Визуальный редактор apiedit |
|||
(не показано 6 промежуточных версий 2 участников) | |||
Строка 65: | Строка 65: | ||
При работе с массивом дальнейшие действия будут производится с устройством /dev/drbd0. Все, что будет записано на него, автоматически будет скопировано на оба жестких диска /dev/sdb обоих серверов. |
При работе с массивом дальнейшие действия будут производится с устройством /dev/drbd0. Все, что будет записано на него, автоматически будет скопировано на оба жестких диска /dev/sdb обоих серверов. |
||
+ | =ISCSI Target - проверка возможности редактирования не зареганому пользователю ))= |
||
− | =ISCSI Target= |
||
Настройка выполняется полностью идентично на обоих серверах. |
Настройка выполняется полностью идентично на обоих серверах. |
||
==Установка и настройка ISCSI Target== |
==Установка и настройка ISCSI Target== |
||
Строка 75: | Строка 75: | ||
* Для Debian и для Ubuntu 12.04LTS |
* Для Debian и для Ubuntu 12.04LTS |
||
ietconf=/etc/iet/ietd.conf |
ietconf=/etc/iet/ietd.conf |
||
− | *Для ubuntu |
+ | *Для ubuntu 10.04 и старее... |
ietconf=/etc/ietd.conf |
ietconf=/etc/ietd.conf |
||
Настроим DRBD диск в качестве единственного источника |
Настроим DRBD диск в качестве единственного источника |
||
echo "Target drbd0" > $ietconf |
echo "Target drbd0" > $ietconf |
||
echo "Lun 1 Path=/dev/drbd0,Type=blockio" >> $ietconf |
echo "Lun 1 Path=/dev/drbd0,Type=blockio" >> $ietconf |
||
+ | Запускать iSCSI сервер мы будем только после старта drbd, иначе может сложиться ситуация, когда он запустится а диск еще не инициализирован. |
||
− | ''* В ubuntu server существует проблема параллельного запуска служб. Из-за того, что iscsi иногда стартует при перезагрузке сервера раньше чем drbd, диск корректно не подключается. В качестве решения и временной меры можно применить перезапуск сервиса iscsi target после полной загрузки системы.'' |
||
+ | |||
− | дописываем в файл /etc/rc.local перед строкой exit 0: |
||
+ | Редактируем стартовый скрипт drbd |
||
⚫ | |||
+ | nano /etc/init.d/drbd |
||
− | Для перезапуска служб после настройки без перезагрузки сервера можно использовать следующую последовательность комманд: |
||
+ | Ищем поиском [CTRL+W] строку '''stop)''' и дописываем перед ней: |
||
− | /etc/init.d/iscsitarget stop && /etc/init.d/drbd stop |
||
− | + | /etc/init.d/iscsitarget start |
|
+ | ;; |
||
+ | stop) |
||
+ | Затем запрещаем iscsitarget автоматически запускаться при старте системы |
||
⚫ | |||
=Heartbeat= |
=Heartbeat= |
Текущая версия от 07:27, 17 июля 2017
Задача[]
Получить отказоустойчивый сетевой массив (NAS) с сервисом iSCSI Target для использования совместно с кластером виртуализации, например PROXMOX. Массив должен удовлетворять следущим требованиям:
- NAS должен физически располагаться на отдельных серверах
- iSCSI Target должен быть доступен при физическом выходе из строя любого из серверов
- Восстановление работы при физическом выходе одного из серверов должно выполняться автоматически и занимать не более 2-х секунд.
Подготовка оборудования[]
Отказоустойчивый сетевой массив будет состоять физически из двух серверов. Необходимо:
- Два сервера с идентичными настройками и желательно идентичной конфигурацией оборудования
- На каждом сервере должны быть дополнительно идентичные по размеру тома, например отдельные жесткие диски одной моделью (/dev/sdb). Именно они будут объединены в зеркальный сетевой RAID1 массив.
- В каждом сервере должна быть дополнительная сетевая карта pci-express, а гнезда их соединены крос-пачкордом. Через него будет выполнятся синхронизация массива, чтобы не перегружать локальную сеть.
- Встроенные сетевые карты каждого сервера подключаются в общую локальную сеть.
DRBD[]
Сервер alice 10.0.32.201[]
- Устанавливаем DRBD:
apt-get update apt-get install drbd8-utils -y modprobe drbd
После установки отредактируем файл конфигурации на сервере alice, закомментировав или удалив все имеющиеся в файле строки и внеся свои
сохраняем копию оригинального конфигурационного файла
cp /etc/drbd.conf /etc/drbd.conf.orig
очищаем конфигурационный файл от содержимого
echo ""> /etc/drbd.conf
nano /etc/drbd.conf
global { usage-count yes; } common { syncer { rate 1G; } } resource r0 { protocol C; startup { become-primary-on both; } net { allow-two-primaries; } on alice { device /dev/drbd0; disk /dev/sdb; address 10.0.32.201:7789; meta-disk internal; } on bob { device /dev/drbd0; disk /dev/sdb; address 10.0.32.202:7789; meta-disk internal; } }
Создаем массив
drbdadm create-md r0
Запускаем службу
/etc/init.d/drbd start
Сервер bob 10.0.32.202[]
- Устанавливаем DRBD:
apt-get update apt-get install drbd8-utils -y modprobe drbd
Копируем файл конфигурации с сервера alice
cd /etc sftp root@10.0.32.201:/etc/drbd.conf
Создаем массив
drbdadm create-md r0
Запускаем службу
/etc/init.d/drbd start
Зупускаем процесс создания сетевого зеркала
drbdadm -- --overwrite-data-of-peer primary all
Процесс можно наблюдать выполнив:
watch -n 0,1 cat /proc/drbd
При работе с массивом дальнейшие действия будут производится с устройством /dev/drbd0. Все, что будет записано на него, автоматически будет скопировано на оба жестких диска /dev/sdb обоих серверов.
ISCSI Target - проверка возможности редактирования не зареганому пользователю ))[]
Настройка выполняется полностью идентично на обоих серверах.
Установка и настройка ISCSI Target[]
Устанавливаем сервер iSCSI и разрешаем ему запускаться
apt-get install iscsitarget iscsitarget-dkms
Разрешим запуск службы
echo "ISCSITARGET_ENABLE=true" > /etc/default/iscsitarget
Установим путь до файла конфигурации
- Для Debian и для Ubuntu 12.04LTS
ietconf=/etc/iet/ietd.conf
- Для ubuntu 10.04 и старее...
ietconf=/etc/ietd.conf
Настроим DRBD диск в качестве единственного источника
echo "Target drbd0" > $ietconf echo "Lun 1 Path=/dev/drbd0,Type=blockio" >> $ietconf
Запускать iSCSI сервер мы будем только после старта drbd, иначе может сложиться ситуация, когда он запустится а диск еще не инициализирован.
Редактируем стартовый скрипт drbd
nano /etc/init.d/drbd
Ищем поиском [CTRL+W] строку stop) и дописываем перед ней:
/etc/init.d/iscsitarget start ;; stop)
Затем запрещаем iscsitarget автоматически запускаться при старте системы
update-rc.d -f iscsitarget remove
Heartbeat[]
В нашем случае этот сервис будет отслеживать состояние доступности каждого из серверов и назначает дополнительный сетевой адрес, через который и будет осуществятся подключение к iSCSI. В случае выхода одного сервера из строя, этот адрес гарантированно должен будет принадлежать оставшемуся в работе серверу. Время на переключение не должно превышать 2-х секунд.
Настройка сервера alice[]
Настройка разрешения имен[]
Так-как система требует работу через сетевые имена, наиболее надежным способом является метод прямого указания соответствия имен и адресов. Это задается в файле
Добавляем:
echo "10.0.32.201 alice" >> /etc/hosts echo "10.0.32.202 bob" >> /etc/hosts
Проверяем разрешение имен. Сервер alice должен пинговать сервер bob и наоборот.
ping bob ping alice
Установка и настройка Heartbeat[]
Установим пакет из репозитория
apt-get install heartbeat
Далее необходимо создать 3 конфигурационных файла (они будут идентичны для всех серверов)
- ha.cf содержит базовые настройки кластера
- authkeys обеспечивает настройку сетевой авторизации
- haresources содержит описания ресурсных групп
Все три файла должны быть одинаковыми и присутствовать на обеих системах кластера. Мы сначала создаем их на одном сервере, а после просто копируем их с помощью scp.
ha.cf[]
Основной конфигурационный файл, содержащий массу различных параметров того, как будет осуществляться heartbeat-механизм.
nano /etc/ha.d/ha.cf
bcast eth0 node alice node bob realtime true
authkeys[]
Для корректной работы пакета heartbeat так же необходимо создать файл /etc/ha.d/authkeys с ключами для взаимной аутентификации серверов. В этом файле указывается тип ключа и сам ключ. Можно использовать sha, md5, но чтобы не расходовать ресурсы достаточно использовать crc.
nano /etc/ha.d/authkeys
auth 1 1 sha1 PASSWORD
Необходимо установить права доступа к нему только для root, с набором других прав на файл, сервер откажется стартовать
chmod 600 /etc/ha.d/authkeys
haresources[]
Основным сервер будет alice и в условиях штатной работы адрес 10.0.32.200 будет принадлежать ему. Настроим это:
nano /etc/ha.d/haresources
alice IPaddr::10.0.32.200/24/eth0
Перезагрузим службу:
/etc/init.d/heartbeat restart
После перезапуска служб, адрес 10.0.32.200 должен начать пинговаться в сети.
Настройка сервера bob[]
echo "10.0.32.201 alice" >> /etc/hosts echo "10.0.32.202 bob" >> /etc/hosts apt-get install heartbeat
Скопируем файлы настроек с сервера alice
cd /etc/ha.d/ sftp root@alice:/etc/ha.d/ha.cf sftp root@alice:/etc/ha.d/authkeys sftp root@alice:/etc/ha.d/haresources
Перезагрузим службу:
/etc/init.d/heartbeat restart
Действия при авариях[]
Лечение split-brain[]
Если случилось так, что каждая нода перешла в автономный режим то делаем следущее:
- 1. Решаем, какая нода содержит более важные данные (главная), а какую принести в жертву (второстепенная) путем зеркалирования с главной.
- 2. Заходим на второстепенную и сперва останавливаем iscsi сервер.
/etc/init.d/iscsitarget stop
Затем переключаем том в режим только для чтения
drbdadm secondary r0
И говорим серверу, что согласны с тем, что данные на на нём будут принесены в жертву
drbdadm -- --discard-my-data connect r0
- 3. Заходим на основной сервер и выполняем подключение к тому
drbdadm connect r0
- 4. Выполним контроль состояния
cat /proc/drbd
Мы должны увидеть процесс синхронизации, а по его окончанию, убедится, что данные обновлены и снова уникальны:
ds:UpToDate/UpToDate
- 5. Затем переходим снова на второстепенную ноду и переводим её из режима только для чтения в режим записи (Primary)
drbdadm primary r0
- 6. Запускаем iscsi сервер на этой ноде
/etc/init.d/iscsitarget start
Замена жесткого диска[]
- 1. Отключаем ноду диск/ки в которой нужно заменить.
- 2. Проверяем, что массив продолжает работать на оставшейся. Её перезагружать и выключать НЕЛЬЗЯ на период работ.
- 3. Заменяем диск. Размер должен быть больше или равен размеру на оставшейся ноде.
- 4. Если буква диска изменилась (например создан массив из дисков) необходимо исправить это в файле
nano /etc/drbd.conf
- 5. Создаем том drbd на новом диске и запускаем drbd
drbdadm create-md r0 /etc/init.d/drbd start
Если все прошло удачно, начнется процесс синхронизации (копирования данных с рабочей ноды на нашу)
cat /proc/drbd
В процессе синхронизации, drbd может быть сильно перегружено и работающие с ним ресурсы могут начать тормозить.
- Временно снизить скорость синхронизации
drbdsetup /dev/drbd0 syncer -r 10M
- Вернуть параметры скорости из конфигурационного файла
drbdadm adjust r0
Тестирование[]
Тестирование производительности[]
Установим утилиты тестирования
apt-get install sysstat atop
Ищем узкие места. Запустим на клиенте, использующем наш сетевой массив процесс записи данных с максимально возможной скоростью. Как пример, запуск теста непрерывной записи в на диск в everest в windows, где диском является iSCSI устройство с нашего массива.
Смотрим, используется ли drbd на 100%
Выполняем на первой ноде: iostat -xm 5
Смотрим
Device %util drbd0 100,00
Значит клиентская сторона использует DRBD диск по максимуму. Выясняем, во что упирается сам drbd. Смотрим параметр %util для дисков входящих в DRBD массив на каждой ноде
Device wMB/s %util sdb 62,40 100,00
Это значит, что скорость ограничена скоростью записи на диск sdb