Отказоустойчивость
https://www.zabbix.org/wiki/Docs/howto/high_availability
http://freeldev.blogspot.ru/2010/08/drbdheartbeatmysql-linux.html
DRBD+Heartbeat+MySQL - Краткий экскурс по резервированию данных в Linux.
Данный вариант настройки производился под Ubuntu 9.04.
DRBD
Устанавливаем DRBD
shell> apt-get update shell> apt-get install drbd8-utils drbd8-module-source \
build-essential module-assistant
shell> module-assistant auto-install drbd8
Для настройки DRBD необходимо создать отдельный раздел на диске, размер которого достаточен для размещения базы данных. Далее настраиваем файл /etc/drbd.conf следующим образом: global {
usage-count no;
} common {
protocol C;
} resource r0 {
syncer {
rate 10M;
}
device /dev/drbd0;
disk /dev/sdb2;
meta-disk internal;
on ubuntu1 {
address 192.168.0.1:27789;
}
on ubuntu2 {
address 192.168.0.2:27789;
}
} где: rate - скорость обмена данными между резервной и основной машиной. device - имя виртуального дисковый накопителя. disk - раздел на диске о котором говорил ранее. ubuntu1,ubuntu2 - соответствующие host-имена машин.
Копируем данный файл на резервную машину.
1)Настраиваем DRBD для основной машины: Создаем устройство /dev/drbd0 root-shell> drbdadm create-md all
запускаем DRBD root-shell> /etc/init.d/drbd start
переводим DRBD в режим primary root-shell> drbdadm -- --overwrite-data-of-peer primary all
Форматируем раздел под файловую систему ext3 (Можно под другую, но должна быть журналируемой) root-shell> mkfs.ext3 /dev/drbd0
Монтируем раздел к операционной системе root-shell> mkdir /mnt/drbd root-shell> mount /dev/drbd0 /mnt/drbd
2)Настраиваем DRBD для запасной машины
создаем раздел /dev/drbd0 root-shell> drbdadm create-md all
запускаем DRBD root-shell> /etc/init.d/drbd start
после чего должна запуститься синхронизация, проверить можно следующим образом. root-shell> cat /proc/drbd version: 8.0.4 (api:86/proto:86) SVN Revision: 2947 build by root@drbd-one, 2007-07-30 16:43:05
0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
ns:252284 nr:0 dw:0 dr:257280 al:0 bm:15 lo:0 pe:7 ua:157 ap:0
[==>.................] sync'ed: 12.3% (1845088/2097152)K
finish: 0:06:06 speed: 4,972 (4,580) K/sec
MySQL
Отключаем MySQL
shell> mysqladmin shutdown
создаем папку MySQL root-shell> mkdir /mnt/drbd/mysql
копируем базу данных в созданную папку root-shell> cp -R /var/lib/mysql /mnt/drbd/mysql/data
в файле /etc/mysql/my.cnf на обоих машинах изменяем следующую строку datadir = /mnt/drbd/mysql/data
Далее вносим аналогичные изменения в файл /etc/apparmor.d/usr.sbin.mysqld и перезапускаем службу apparmor root-shell> /etc/init.d/apparmor upgrate
Перезапускаем MySQL root-shell> /etc/init.d/mysql start
Heartbeat
В папке /etc/ha.d/ надо создать три файла со следующм содержанием
a) ha.cf
logfacility local0
keepalive 500ms
deadtime 10
warntime 5
initdead 30
mcast bond0 225.0.0.1 694 2 0
auto_failback off
node ubuntu1
node ubuntu2
b) authkeys - установить права только для чтения auth 1 1 crc
c) haresources ubuntu1 drbddisk Filesystem::/dev/drbd0::/mnt/drbd::ext3::group gdm mysql apache2 chown 192.168.0.100
chown — это скрипт который меняет пользователя для монтируемой папки, может иметь следующие содержание
- !/bin/sh -e
chown -R mysql:mysql /mnt/drbd