天天看點

DRBD+Heartbeat+Mysql環境搭建

環境:Centos 6.6 64位

伺服器:

Master節點: GuoletaoTest01  IP位址:192.168.2.25 

Slave節點:GuoletaoTest02 Ip位址: 192.168.2.26

VIP位址:192.168.2.30

一 DRBD 環境搭建:

1) 添加附加庫:

以下測試針對Centos 6.6 版本:

1)import public key:

2)安裝庫:

2) 安裝 DRBD:

 yum install drbd kmod-drbd

3)兩台伺服器上的分區/dev/sdb1作為drbd的網絡mirror分區;

 格式化分區    fdisk /dev/sdb

mkfs.ext4 /dev/sdb1

4)開始配置drbd

編輯drbd檔案:

#設定資源名稱為: mysql_data

 resource mysql_data {

            protocol C;

            net {

                 cram-hmac-alg sha1;

                 shared-secret "abc";

            }

            on GuoletaoTest01 {

                 device    /dev/drbd1;

                 disk      /dev/sdb1;  #挂載drbd對應的系統分區;

                 address   192.168.2.25:7898;

                 meta-disk internal;

            on GuoletaoTest02 {

                 disk      /dev/sdb1;

                 address   192.168.2.26:7898;

}

兩邊啟動drbd服務:

/etc/init.d/drbd start

檢視drbd的狀态:

/etc/init.d/drbd status

drbd driver loaded OK; device status:

version: 8.3.16 (api:88/proto:86-97)

m:res         cs         ro                 ds                 p  mounted  fstype

1:mysql_data  Connected  Primary/Secondary  UpToDate/UpToDate  C  /data    ext4

如果heartbeat沒有安裝或者啟動,測試時可以手動指定主drbd,指令如下:

指定 drbd的本地為master節點:drbdadm primary mysql_data

挂載drbd分區到本地:mount /dev/drbd1 /data

二 Heartbeat安裝:

yum -y install heartbeat* 

配置要點:

HA有三個配置檔案:

密鑰檔案:authkeys

配置主檔案:ha.cf

HA主管的資源配置檔案:haresources 

PS:

自寫的資源啟動腳本存放目錄:/etc/ha.d/resource.d

HA配置主目錄:/etc/ha.d/

1)認證檔案配置:

cat authkeys

auth 1

1 crc

2)ha.cf配置:

master上的配置檔案:

 cat ha.cf 

logfile /var/log/ha-log

keepalive 2

deadtime 30

warntime 10

initdead 60

udpport 694

#bcast em1

#設定單點傳播位址,對方ip

ucast eth0 192.168.2.26

auto_failback off

node GuoletaoTest01

node GuoletaoTest02

ping 192.168.2.1  #填寫網絡中網關的位址

hopfudge 1

deadping 5

respawn hacluster /usr/lib64/heartbeat/ipfail

#apiauth ipfail gid=haclient uid=hacluster2

slave節點上的配置檔案:

ucast eth0 192.168.2.25

ping 192.168.2.1

3)資源配置檔案:

cat haresources  

GuoletaoTest01 IPaddr::192.168.2.30/32/eth0 drbd_primary

說明:

GuoletaoTest01          為主節點的主機名

IPaddr::192.168.2.30/32/eth0        network用于設定叢集的IP位址、子網路遮罩和網絡裝置辨別 等。需要注意的是,這裡指定的IP位址就是叢集對外服務的IP位址 

drbd_primary     resource-group用來指定需要Heartbeat托管的服務,也就是這些 服務可以由Heartbeat來啟動和關閉。如果要托管這些服務,就必須将服務寫成可以通過start/stop來啟動和關閉的腳步,然後放到/etc /init.d/或者/etc/ha.d/resource.d/目錄下,Heartbeat會根據腳本的名稱自動去/etc/init.d或者/etc /ha.d/resource.d/目錄下找到相應腳步進行啟動或關閉操作。

4)資源切換腳本:

本腳本複制drbd的切換,已經mysql,redis服務的啟動和關閉:

#!/bin/bash

case "$1" in

start)

    drbdadm primary mysql_data

    mount /dev/drbd1 /data

    service mysql55 start

    service redis start

;;

stop)

    service mysql55 stop

    service redis stop

    umount /dev/drbd1

    drbdadm secondary mysql_data

esac

exit 0

三 mysql和redis資料庫data存放目錄的修改與調整:

1)mysql資料庫data存放目 錄修改到/data/mysql55/var/

具體做法如下(在drbd主節點啟動後,并且mount成功後執行即可,從節點不需要操作,因為會通過drbd的機制同步過去!):

mkdir -p /data/mysql55/var/

chown -R mysql:mysql /data/mysql55

2)修改mysql配置檔案:

[client]

port=33066

socket="/var/lib/mysql/mysql.sock"

[mysql]

default-character-set=utf8

[mysqld]

basedir="/webser/mysql55"

#datadir="/webser/mysql55/var"

datadir="/data/mysql55/var"

然後執行以下指令:

  /webser/mysql55/scripts/mysql_install_db --user=mysql --datadir=/data/mysql55/var/ --basedir=/webser/mysql55/

最後在drbd的主節點上啟動mysql即可。

然後建立相關目錄:

mkdir -p data/redis/

然後在drbd節點上啟動redis服務即可!

以上測試都沒有問題了。就可以關閉mysql,drbd服務;

啟動整個叢集順序:

依次主從,然後啟動drbd,再heartbeat服務;

/etc/init.d/heartbeat start

注意設定成開機自啟動;

關閉叢集的順序:

先從後主:

先關閉heartbeat,然後關閉drbd服務!

/etc/init.d/heartbeat stop

/etc/init.d/drbd stop

本文轉自 shine_forever 51CTO部落格,原文連結:http://blog.51cto.com/shineforever/1633519