мы планируем использовать drbd для синхронизации двух серверов (разное оборудование), чтобы получить своего рода HA в случае, если главный сервер выйдет из строя. Серверы физически размещены в одном центре обработки данных (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"
Единственный способ использовать DRBD с MySQL - это если ВСЕ ВАШИ ДАННЫЕ - INNODB !!! Зачем ?
InnoDB предназначен для обработки аварийного восстановления и кэширования всех изменений блоков размером 16 КБ в двойном буфере записи системного табличного пространства, если вы настроили innodb_flush_method так как O_DIRECT
. Если он был смонтирован на DRBD, при автоматическом переключении на резерв не будут потеряны данные, записанные в буфер двойной записи. При переключении на вторичный DRBD и продвижении его как нового первичного DRBD потребуется время восстановления после сбоя для mysql.
С другой стороны, таблицы MyISAM не могут обрабатывать автоматические отработки отказа из-за сбоев. Зачем? Таблицы MyISAM помечаются как поврежденные просто из-за количества дескрипторов файла в его заголовке. Он должен быть равен нулю, чтобы таблица MyISAM была в порядке. Сбой сервера или mysql может привести к тому, что любая открытая таблица MyISAM потребует операции восстановления таблицы. Хотя автоматическое восстановление таблицы можно настроить в my.cnf, существует вероятность потери данных (и возможной несогласованности данных) после такого восстановления. Такова природа нетранзакционного механизма хранения.
Я поддерживаю установки MySQL / DRBD для своего работодателя и всегда рекомендую использовать базу данных, полностью состоящую из InnoDB, для установок DRBD.
Что касается связи между парой DRBD, вы не должны позволять трафику DRBD проходить через коммутаторы или межсетевые экраны. Используйте выделенную сетевую карту на каждом сервере (используя сетевой блок 192.168.1.x) и перекрестный кабель, чтобы сократить связь DRBD. ПРЕДУПРЕЖДЕНИЕ: Потеря пакетов возможна из-за изношенных кабелей.
Если у вас есть сочетание таблиц InnoDB и любых таблиц MyISAM, доступных только для чтения, это может быть приемлемо в настройке DRBD. В этом случае ремонт таблиц MyISAM не будет большой проблемой, если вам нравится увеличенное время запуска mysql.
Синхронизация / var / www с DRBD должна быть в порядке. Эти файлы, вероятно, не слишком сильно меняются.
Однако я бы не рекомендовал использовать DRBD для синхронизации файлов базы данных. Вместо этого я бы использовал встроенные функции репликации MySQL.