Отказоустойчивость

Материал из Cisco CCNP
Перейти к навигации Перейти к поиску

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 — это скрипт который меняет пользователя для монтируемой папки, может иметь следующие содержание 
  1. !/bin/sh -e

chown -R mysql:mysql /mnt/drbd