heartheartbeat+drbd+mysql主庫熱備

一 環境準備

1 環境

主機名 網卡 磁盤
master eth0 橋接模式 eth0(192.168.1.10) 自定義模式(VMnet2)(192.168.2.10)VIP 192.168.1.200/210 系統盤+20G外接磁盤
slave eth0 橋接模式(192.168.1.20) eth1 自定義模式(VMnet2)(192.168.2.20)VIP 192.168.1.200/210 系統盤+20G外接磁盤
server3 eth0 橋接模式 (192.168.1.30) 系統盤

master
heartheartbeat+drbd+mysql主庫熱備
slave
heartheartbeat+drbd+mysql主庫熱備
server3
heartheartbeat+drbd+mysql主庫熱備

2 域名DNS

heartheartbeat+drbd+mysql主庫熱備

3 時間同步

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

4 網卡配置

heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備

5 磁盤情況

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

6 軟件包位置

鏈接:https://pan.baidu.com/s/1W2-jeaK_tc-abvSZzmRaiw
提取碼:4evz

二 軟件安裝

1 drbd 簡介

1 drbd 原理

drbd 是工作在文件系統之下,是基於塊的遷移
drbd的遷移
文件系統------buffer-cache--------網卡傳遞到另一端------裸設備-----drbd寫入磁盤
drbd 數據分爲兩部分,數據存儲部分和元數據部分。

2 drbd 複製模式

協議A:本地寫成功後就返回給客戶端。
協議B:半同步的協議,本地寫成功,發送到對端後立即返回,
協議C:發送到對端,併成功寫入並進行緩存。

3 DRBD 的應用模式

1 單主模式,及主備模式,爲典型的高可用性幾圈方案
2 復主模式,需要採用共享cluster文件系統,如GFS和OCFS2

4 缺點

當一端在運行時另一端是不可見的

2 drbd 安裝

兩端配置基本相同

1 磁盤分區

/dev/sdb1 爲數據區域
/dev/sdb2 爲元數據區域
heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

2 格式化

元數據區域不能格式化
heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

3 下載並解壓安裝drbd

A 解決依賴
heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

yum -y install gcc kernel-devel kernel-headers flex

B 編譯並安裝
heartheartbeat+drbd+mysql主庫熱備

./configure --prefix=/usr/local/drbd.8.4.4 --with-km --with-heartbeat --sysconfdir=/etc/

heartheartbeat+drbd+mysql主庫熱備

make KDIR=/usr/src/kernels/2.6.32-431.el6.x86_64/
此處必須是自己uname -r 得到的內核,不一定是上面的內核

heartheartbeat+drbd+mysql主庫熱備

make install

檢驗
heartheartbeat+drbd+mysql主庫熱備

4 加載模塊到內核

heartheartbeat+drbd+mysql主庫熱備
slave 端加載
heartheartbeat+drbd+mysql主庫熱備

5 配置

heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
slave 端相同
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
相關解釋

global {
usage-count no;

}

common{
syncer {
rate 100M; #同步佔用的帶寬
verify-alg crc32c; # 驗證使用的算法

        }
  }

#Primary for drbd1

resource data{
protocol C; # drbd使用的協議
disk {
on-io-error detach; #出現IO錯誤的處理方式
}
on master {
device /dev/drbd0; #drbd的設備
disk /dev/sdb1; #對應的數據分區
address 192.168.1.10:7788; #地址是監聽自己心跳的IP地址
meta-disk /dev/sdb2[0]; #元數據位置
}
on slave {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.20:7788;
meta-disk /dev/sdb2[0];
}

}

6 初始化數據

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備
其中data是上述資源的名稱。

7 創建文件夾

heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備

8 啓動服務

heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備

查看啓動參數
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備

相關參數解釋:
注意:只有主備兩邊的DRBD都啓動起來纔會生效
cs:鏈接狀態
ro:角色信息,此時的狀態爲Secondary/Secondary,表示兩臺主機的狀態都是備機狀態
ds:磁盤狀態,Inconsistent/Inconsistent顯示的狀態內容“不一致”,這是因爲DRBD無法判斷哪一方爲主機,應以哪一方的磁盤數據作爲標準
dw:磁盤寫操作
dr: 磁盤讀操作
ns: 網絡發送
nr: 網絡接受
如果主動端的NS和slave端的NR相同表示發送與接受同步 。

9 主動端宣告自己是primary

heartheartbeat+drbd+mysql主庫熱備

查看同步情況
heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

10 創建掛載文件並測試

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備
掛載同步測試
heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備
從端測試
heartheartbeat+drbd+mysql主庫熱備
恢復
heartheartbeat+drbd+mysql主庫熱備

3 heartbeat 簡介

1 作用

通過heartbeat 可以進行故障轉移並提供相關的服務
在故障轉移期間也需要切換時間,常見的時間是5-20秒左右。但是能夠確保業務一致性
heartbeat的高可用是服務器級別的,不是服務級別的。,服務的down機不會導致服務的切換。

2 Heartbeat 切換的常見條件

1 服務器down機
2 heartbeat 服務本身down機
3 心跳鏈接線down機

3 Heartbeat 消息類型

Heartbeat 高可用軟件在工作過程中,一般來說,有三種消息類型,具體爲:
1 心跳消息
越150字節,可能爲單播,廣播或組播,控制心跳頻率及出現故障要等待多久進行故障轉換

2 集羣轉換消息
Ip-request 和 ip-request-resp
當主服務器恢復在線狀態後,通過ip-request消息請求備機釋放主服務器失敗時被服務器取得的資源,然後備份服務器關閉釋放主服務器失敗時取得的資源及服務。

被服務器釋放主服務器失敗時取得的資源服務後,就會通過ip-request-resp消息通知主服務器他不再擁有該服務器的資源及服務,主服務器收到來自被節點的ip-request-resp消息通知後,啓動失敗時釋放的資源及服務,並開始提供正常的訪問服務。
3 重傳請求
rexmit-request 控制重傳心跳請求。
以上心跳控制消息都使用功能的是UDP協議發送到/etc/ha.d/ha.cf 文件制定的任意接口,或指定的多播地址。

4 Ip地址接管和故障轉移

Heartbeat 是通過IP地址接管和ARP廣播進行故障轉移
ARP 廣播在主服務器故障時,備用節點接管資後,會立即強制更新所有客戶端本地的ARP(及清除客戶端本地緩存的失敗服務器的VIP和MAC地址的解析記錄),確保客戶端和新的主服務器之間的對話

4 heartbeat 安裝

1 安裝heartbeat

heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備

2 複製配置文件

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

3 配置

配置密鑰並配置其權限爲600,必須爲600
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備

配置文件解析
Debugfile 調試日誌存放位置

Logfile 日誌存放位置

Logfacility local 在syslog 服務中配置通過locally 設備接受日誌

Keepalive2 指定心跳間隔時間爲2秒

Deadtime 30 指定若備用節點在30秒內沒有接受達到主節點的心跳信號,則立即接管主節點的服務資源

Warntime 10 指定心跳延遲爲10秒。當10秒內備份節點不能接受到主節點的心跳信號時,會向日志中寫入一個警告日誌,但此時不會切換服務

Initdead 120 指定在heartbeat 首次運行後,需要等待120秒才啓動主服務器的資源,該選項用於解決這種情況產生的時間間隔,取值至少爲deadtime的兩倍,單機啓動時會遇到VIP綁定很慢,爲正常現象

Bcast eth1 指明心跳使用以太網廣播方式在eth1接口上進行廣播,如使用兩個實際網絡來傳遞心跳則 bcast eth0 eth1

Mcast eht2 225.0.0.1 694 1 0 設置廣播通信使用的端口,694爲默認使用的端口,一個是 TTL

Auto_failback on 用來定義當主節點恢復後,是否將服務自動切回

Node master 主節點主機名,

Node slave 備用節點主機名

Crm no 是否開啓cluster resource manager (集羣資源管理器)

heartheartbeat+drbd+mysql主庫熱備
複製到被動端
heartheartbeat+drbd+mysql主庫熱備

4 啓動並查看

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備

5 結合DRBD

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

5 mysql安裝

1 配置yum源

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

2 安裝mysql

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

3 配置/data 權限

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

4 配置mysql配置文件

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

5 啓動mysql

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備

6 刪除slave端mysql

heartheartbeat+drbd+mysql主庫熱備

7 配置切換

heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備

三 配置mysql熱備和從庫

1 配置mysql熱備

1 複製相關配置

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

2 關閉mysql並重啓服務heartbeat

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

3 關閉mater

heartheartbeat+drbd+mysql主庫熱備

heartheartbeat+drbd+mysql主庫熱備

4 恢復

heartheartbeat+drbd+mysql主庫熱備

2 配置主從同步

1 配置server-id和二進制日誌開啓

heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
重啓服務器
heartheartbeat+drbd+mysql主庫熱備

2 配置數據庫的導出和導入,保證同步之間的主從相同

heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備

3 配置主從同步

heartheartbeat+drbd+mysql主庫熱備

grant replication slave on . to admin@'%' identified by 'root123';

heartheartbeat+drbd+mysql主庫熱備

change master to master_host='192.168.1.200',master_user='root',master_password='root123',master_log_file='mysql-bin.000001',master_log_pos=319;
此 192.168.1.200爲heartbeat 的VIP,專用於數據鏈接

測試
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備
heartheartbeat+drbd+mysql主庫熱備

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章