菜鳥學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