天天看點

菜鳥學Linux 第090篇筆記 corosync+drbd+mysql

菜鳥學Linux 第090篇筆記 corosync+drbd+mysql

内容總覽

上節回顧

DRBD (Distributed Replicated Block Device) 分布式複制塊裝置

配置drbd

配置drbd+corosync的高可用mysql

heartbeat-ldirectord該rpm包 是用來做lvs高可用而且不用再手動寫腳本來進行背景的

realserver是否工作正常,此包自己包含

corosync + ldirectord 與上述相同

再次強調 (自行配置安裝)

(rsync|sersync) + inotify 

PAE 核心顯示PAE

Physical Address Extention

DRBD是一個類似raid的一個硬碟複制功能,而raid隻支援本地的兩塊硬碟進行存儲相同的資料,

而drbd可以将兩個基于tcp/ip協定将電腦硬碟進行資料同步擴大到可以在兩台網際網路的電腦進行

硬碟資料同步。

drbd 工作在核心中 是核心的一個子產品

主從架構(防止檔案系統崩潰)

primary 可執行讀,寫操作

secondary 檔案系統不能挂載

主從互相切換

DRBD也有雙主模型

把drbd做成ha

DLM (Distributed Lock Manager)

叢集檔案系統

GFS2 OCFS2

隻允許兩個節點

硬碟高度器 disk schedule   (未必适用于固态硬碟)

合并讀請求,合并寫請求

nic network interface card

資料協定 protocol

A Async 異步

B  semi sync 半同步

C  sync 同步

drbd source DRBD資源

Resource name  (不可包含空白字元任意ASCII)

DRBD device /dev/drbd0 /dev/drbd1...  主裝置号為147

Disk Configuration  雙方節點上,各自提供的裝置

Network configuration  雙方資料同步時所使用的網絡屬性

User space administration

drbdadm

drbdsetup

drbdmeta

1. 首先配置兩個電腦

主機名hosts

時間同步

ssh互信通信

2. 安裝drbd 軟體包

drbd

先将rpm包下載下傳到本地 以下這種方式是第三台電腦 此電腦已經和兩個節點建立互信關系

# for I in {1..2}; do ssh node$I 'rpm -ivh /root/drbd/*.rpm'; done

# rpm -ql drbd

3. drbd的配置

在兩個節點上都建立要進行做成drbd的分區 分區大小相同  但不要格式化

我這裡兩個節點都是/dev/sdb1

定義drbd的資源資訊

resource name: mydrbd

drbd device: /dev/drbd0

disk configuration: /dev/sdb1

Network configuration: 

drbd的配置檔案

/etc/drbd.conf

/etc/drbd.d/global_common.conf

/etc/drbd.d/resource.d

# cp /usr/share/doc/drbd83-8.3.15/drbd.conf /etc/

# vim /etc/drbd.com

登出此項 #       usage-count yes;

将以下幾項啟用handlers

pri-on-incon-degr

pri-lost-after-sb 

local-io-error 

disk下添加如下内容

on-io-error detach;

net下添加

cram-hmac-alg "sha1";

syncer下添加

rate 200M

儲存退出

4. 定義資源

建立在/etc/drbd.d/下.res結尾的資源檔案

vim /etc/drbd.d/mydrbd.res

添加内容如下

resource mydrbd {

device /dev/drbd0;

disk /dev/sdb1;

meta-disk internal;

on node1 {

address 192.168.11.111:7789;

}

on node2 {

address 192.168.11.112:7789;

最後将此檔案和global_common.conf複制到另一個節點

# scp -r /etc/drbd.* node2:/etc/

5. 初始化資源

# for I in {1..2}; do ssh node$I 'drbdadm create-md mydrbd'; done

注意此種方式适合是複制過去的配置檔案這樣操作,,如果不是的話 兩邊出錯可能不同

6. 啟動drbd

# service drbd start (兩個節點都得執行)

7. 檢視drbd啟動狀态

# service drbd status

# cat /proc/drbd

# drbd-overview

由此可看出兩個節點都是secondary

8. 切換其中一台為主節點

# drbdadm -- --overwrite-data-of-peer primary mydrbd

# drbdadm primary mydrbd

(以上為兩種方式)

檢視其同步過程

# watch 1 'drbd-overview'

同步完成後就會顯示目前節點為主節點

primary/secondary

9. 挂載并建立檔案系統

# mkdir /mydata

# mke2fs -j /dev/drbd0

# mount /dev/drbd0 /mydata

# cp /etc/inittab /mydata

10. 再次切換主從drbd

(注意要切換主從時,先将主設定為從節點,再将原先為從的設定為主,即可完成主從切換)

主節點先切換為從

# umount /mydata

# drbdadm secondary mydrbd

從節點切換為主

(到此,drbd基本已經建立完成)

1. 準備工作

首先将drbd的主節點挂載移除mount

将主節點也切換為從節點 drbdadm

然後兩個節點drbd服務停止 service

確定其開機後drbd服務不會自己啟動 chkconfig

2. 安裝corosync + pacemaker 此處前邊已經講過  這裡不再細說

# crm configure

verify

property stonish-enabled=false

commit

property no-quorum-policy=ignore

rsc_defaults resource-stickiness=100

show

3. 配置drbd資源

primitive mysqldrbd ocf:heartbeat:drbd params drbd_resource=mydrbd op 

start timeout=240 op stop timeout=100 op monitor role=Master interval=10s

timeout=20s op monitor role=Slave interval=20s timeout=20 (一行指令)

help ms

ms ms_mysqldrdb mysqldrdb meta master-max=1 master-node-max=1 clone-max=2 

clone-node-max=1 notify=true (一行指令)

挂載drbd filesyste

primitive mystore ocf:heartbeat:Filesystem params device=/dev/drbd0 

directory=/mydata fstype=ext3 op start timeout=60 op stop timeout=60 

限制其要跟mysqldrbd:master 在同一台主機上運作,并且定義其啟動順序

colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master

order mystore_after_ms_mysqldrbd mandatory: ms_mysqldrbd:promote mystore:startr

4. 測試主從drbd切換

# crm node standby 

# crm status

# crm node online

5. 安裝和配置mysql服務并将其安裝目錄設定在drbd所挂載的目錄裡(注意要在主節點完成)

測試其可正常運作  主節點測試完成後,

将drbd節點切換到另一台的主節點 此時不需要進行初始化,隻需要配置my.cnf裡的

innodb-file-per-table 

datadir = /mydata/data

測試沒有問題後在crm裡配置其mysql資源

6. 配置mysql資源

primitive mysqld lsb:mysqld

colocation mysqld_with_mystore inf: mysqld mystore

show xml

order mysql_after_mystore mandatory: mystore mysqld

primitive myip ocf:heartbeat:IPaddr params ip=192.168.11.120 nic=eth0 

cidr_netmask=255.255.255.0

colocation myip_with_ms_mysqldrbd inf: ms_mysqldrbd:Master myip

(至此 mysqld + drbd + corosync 配置完成)

本文轉自Winthcloud部落格51CTO部落格,原文連結http://blog.51cto.com/winthcloud/1894995如需轉載請自行聯系原作者

Winthcloud

繼續閱讀