Использование DRBD с восходящей линией связи 100 Мбит
Мы планируем использовать drbd для синхронизации двух серверов (различного оборудования), чтобы получить вид высокой доступности в случае смерти главного сервера. Серверы размещаются физически в одном центре обработки данных (Hetzner в Германии) и работают с openSUSE.
Основное назначение серверов - размещение материалов для печати по требованию и рендеринг или создание PDF.
Мы хотим синхронизировать папку "/ var / www", а также базу данных, которая в данный момент хранится в папке по умолчанию.
Мой план состоит в том, чтобы переместить эти папки в синхронизированный раздел drbd и связать их через "ln" туда, где они были раньше. Или лучше наоборот? Или синхронизировать базу данных через репликацию?
Основная проблема заключается в том, что у нас просто есть 100-мегабитный восходящий канал на каждом сервере, и я не знаю, достаточно ли этого для синхронизации серверов в режиме drbd C.
Возможно, у некоторых из вас есть какой-либо совет или опыт, которым вы хотите поделиться со мной.
PS: у меня еще нет серверов, я просто планирую, если все будет работать.
редактирование: я запустил процесс синхронизации drbd, синхронизируя / dev / drbd0, смонтированный в / srv / drbd на основном узле. Я связал (ln) папку / srv / drbd / vhosts, содержащую мои веб-сайты, с / srv / www /, но всегда получаю ошибку 404 в моем браузере. Это просто проблема?
В данный момент я пытаюсь настроить corosync/pacemaker через crm, но не могу запустить все примитивы. Вот мой конфиг, может кто-то из вас может понять, почему он не запускается.
============
Last updated: Mon Aug 5 16:37:54 2013
Last change: Mon Aug 5 16:37:32 2013 by root via cibadmin on alice
Stack: openais
Current DC: alice - partition with quorum
Version: 1.1.7-61a079313275f3e9d0e85671f62c721d32ce3563
2 Nodes configured, 2 expected votes
5 Resources configured.
============
Online: [ bob alice ]
Master/Slave Set: DRBD_MS [DRBD]
Masters: [ alice ]
Slaves: [ bob ]
Resource Group: APACHE_IP
APACHE (ocf::heartbeat:apache): Started bob
failover-ip (ocf::heartbeat:IPaddr2): Stopped
Failed actions:
failover-ip_start_0 (node=alice, call=57, rc=1, status=complete): unknown error
DRBD_FS_monitor_0 (node=alice, call=60, rc=5, status=complete): not installed
APACHE_monitor_15000 (node=bob, call=49, rc=7, status=complete): not running
failover-ip_start_0 (node=bob, call=57, rc=1, status=complete): unknown error
DRBD_FS_monitor_0 (node=bob, call=59, rc=5, status=complete): not installed
мой cib.xml выглядит так:
node alice
node bob
primitive APACHE ocf:heartbeat:apache \
params configfile="/etc/apache2/httpd.conf" \
op monitor interval="15s"
primitive DRBD ocf:linbit:drbd \
params drbd_resource="r0" \
op monitor interval="120s"
primitive DRBD_FS ocf:heartbeat:Filesystem \
params device="/dev/drbd0" directory="/srv/drbd" fstype="ext4" \
meta target-role="Started"
primitive failover-ip ocf:heartbeat:IPaddr2 \
params ip="123.456.789.101" nic="net0:0" \
op monitor interval="10s" \
meta is-managed="true" target-role="Started"
group APACHE_IP APACHE failover-ip \
meta target-role="Started"
ms DRBD_MS DRBD \
meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" target-role="Started"
colocation FS_ON_DRBD inf: DRBD_FS DRBD_MS:Master
order FS_AFTER_DRBD inf: DRBD_MS:promote DRBD_FS:start
property $id="cib-bootstrap-options" \
dc-version="1.1.7-61a079313275f3e9d0e85671f62c721d32ce3563" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false" \
no-quorum-policy="ignore" \
last-lrm-refresh="1375713403"
rsc_defaults $id="rsc-options" \
resource-stickiness="100"
2 ответа
Единственный способ использовать DRBD с MySQL - это если ВСЕ ВАШИ ДАННЫЕ INNODB!!! Зачем?
InnoDB Архитектура
InnoDB предназначен для обработки аварийного восстановления и кэширования всех изменений блока 16 КБ в буфере двойной записи системного табличного пространства, при условии, что вы настроили innodb_flush_method как O_DIRECT
, Если это было установлено на DRBD, любые автоматические аварийные переключения не потеряют данные, которые записаны в буфере двойной записи. Это потребует времени восстановления после сбоя для mysql, когда вы переключаетесь на вторичный сервер DRBD и продвигаете его как новый первичный DRBD.
С другой стороны, таблицы MyISAM не могут обрабатывать автоматические отработки отказа из-за сбоев. Зачем? Таблицы MyISAM помечаются как сбойные просто из-за количества дескрипторов файлов в его заголовке. Для таблицы MyISAM должно быть ноль. Сбой сервера или mysql может оставить любую открытую таблицу MyISAM нуждающейся в операции восстановления таблицы. Хотя в my.cnf можно настроить автоматическое восстановление таблицы, существует вероятность того, что после такого восстановления будет потеря данных (и возможное несоответствие данных). Это природа нетранзакционного механизма хранения.
Я поддерживаю настройки MySQL/DRBD для своего работодателя и всегда рекомендую использовать базу данных all-InnoDB для установок DRBD.
Что касается возможности соединения между парой DRBD, вы не должны пропускать трафик DRBD через коммутаторы или межсетевые экраны. Используйте выделенную сетевую карту на каждом сервере (используя сетевой блок 192.168.1.x) и перекрестный кабель для сокращения связи DRBD. ВНИМАНИЕ: Потеря пакета возможна для изношенных кабелей.
ПРЕДОСТЕРЕЖЕНИЕ
Если у вас есть смесь таблиц InnoDB и таблиц MyISAM только для чтения, это может быть приемлемо в настройке DRBD. В этом случае исправление таблиц в таблицах MyISAM не будет такой большой проблемой, если вы любите увеличенное время запуска mysql.
Синхронизация /var/www с DRBD должна быть в порядке. Эти файлы, вероятно, не сильно меняются.
Однако я бы не рекомендовал использовать DRBD для синхронизации файлов базы данных. Вместо этого я бы использовал встроенные функции репликации MySQL.