Отказоустойчивость — различия между версиями
imported>Artem (Новая страница: «https://www.zabbix.org/wiki/Docs/howto/high_availability») |
imported>Artem |
||
| Строка 1: | Строка 1: | ||
https://www.zabbix.org/wiki/Docs/howto/high_availability | 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 | ||
Текущая версия на 18:56, 1 февраля 2013
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