一、規劃

系統              CentOS 64bit

DRBD版本          9.0.0

Heartbeat版本     3.0.6

MySQL版本         5.6.27

DRBD磁盤          /dev/sdb1 

主機名(IP)        node1(192.168.10.132)   

                  node2(192.168.10.133)                 

注:已關閉SeLinux和Firewalld。


二、安裝

Heartbeat安裝:http://wangzhijian.blog.51cto.com/6427016/1708694

DRBD安裝:http://wangzhijian.blog.51cto.com/6427016/1710926

MySQL安裝:

1
2
3
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm     ##安裝MySQL源
# yum -y install mysql-server  mysql-devel       ##安裝MySQL


三、配置互信

HA-01:

1
2
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub  [email protected]

HA-02:

1
2
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub  [email protected]


四、配置


①配置DRBD


a.主配置文件drbd.conf

1
2
3
4
# cat /etc/drbd.conf
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example
include "drbd.d/global_common.conf";
include "drbd.d/*.res";


b.配置global_common.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# cat /etc/drbd.d/global_common.conf|grep -v "#" 
global {
usage-count no;       ##是否參加drbd的使用者統計,默認此選項爲YES
}
common {
handlers {
}
startup {
}
options {
}
disk {
}
net {
}
}


c.新建res資源配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# vi /etc/drbd.d/drbd.res                    ##新建一個名爲drbd的res資源
resource r1 {                                ##定義資源組名稱爲r1
         net {
               cram-hmac-alg sha1;             ##使用sha1加密
               shared-secret "123456";            ##生成共享密鑰
         }
         volume 1 {                          ##定義卷組
               device    /dev/drbd1;        ##邏輯設備路徑(建立塊設備)
               disk      /dev/sdb1;        ##物理設備路徑(用於複製的分區)
               meta-disk internal;        ##meta data信息存放的方式,該處爲內部存儲,
                                            即和真實數據放在一起存儲
         } 
         on node1 {                    ##on開頭,後面是主機名稱(需與uname -n相同)
               node-id    0;
               address    192.168.10.132:7000;      ##設置drbd監聽地址和端口
          }
          on node2 {
               node-id    1;
               address    192.168.10.133:7000;
          }
          connection {
               host node1  port 7000;
               host node2  port 7000;
               net {
                       protocol C;##使用drbd的第三種同步協議,表示收到對方主機寫入確認後,則認爲寫入完成
               }
          }
}


d.掛載新磁盤

# fdisk /dev/sdb 

-----> n

-----> 1

-----> 默認

-----> +300M -----> w



f.創建設備元數據並格式化磁盤

1
2
3
4
5
6
# dd if=/dev/zero of=/dev/sdb1 bs=1M count=10       ##用指定大小的塊拷貝一個文件
# drbdadm -c /etc/drbd.conf create-md all           ##創建設備元數據
# mkfs.ext4 /dev/drbd1                              ##格式化虛擬磁盤
# mkdir -pv /data/mysql 
# chown -R mysql.mysql /data/mysql/
# ln -s /etc/ha.d/resource.d/drbddisk /usr/local/heartbeat/etc/ha.d/resource.d/    ##建立drbddisk腳本至heartbeat的/etc/ha.d/resource.d/的軟鏈接


②Heartbeat配置

     Heartbeat的配置主要涉及到ha.cf、haresources、authkeys這三個文件。其中ha.cf是主配置文件,haresource用來配置要讓Heartbeat託管的服務,authkey是用來指定Heartbeat的認證方式。


a.配置ha.cf

1
2
3
4
5
6
7
8
9
10
11
# cat /usr/local/heartbeat/etc/ha.d/ha.cf  |grep ^[^#]                
logfile  /var/log/ha-log                       ##日誌文件記錄
logfacility   local0
keepalive  2                         ##設定心跳(監測)時間時間爲2秒
deadtime  30            ##指定若備用節點在30秒內未收到主節點心跳信號,則接管主服務器資源  warntime  10                   ##指定心跳延遲的時間
initdead  120          ##系統啓動或重啓後預留的忽略時間段,取值至少爲deadtime的兩倍      udpport  694                       ##廣播/單播通訊使用的Udp端口
ucast  eno16777736  192.168.10.133 ##採用網卡eno16777736的udp單播來組織心跳,後面爲對端IP
auto_failback  on                        ##定義當主節點恢復後,是否將服務自動切回
node    node1                             ##節點名稱,與uname -n顯示一致
node    node2
ping  192.168.10.1


b.配置haresources

1
2
3
# cp resource-agents-3.9.6/heartbeat/mysql /usr/local/heartbeat/etc/ha.d/resource.d/   ##複製MySQL腳本至heartbeat的/etc/ha.d/resource.d/下
# cat /usr/local/heartbeat/etc/ha.d/haresources |grep ^[^#]
node1  IPaddr::192.168.10.222/24/eno16777736 drbddisk::r1 Filesystem::/dev/drbd1::/data::ext4  mysql

node1是HA集羣的主節點,IPaddr爲heartbeat自帶的執行腳本,heartbeat首先將執行/etc/ha.d/resource.d/IPaddr 192.168.10.222/24 start的操作,即虛擬一個子網掩碼爲255.255.255.0,IP爲192.168.10.222的地址,此IP爲heartbeat對外提供服務的網絡地址,同時指定此IP使用的網絡接口,接着,指定使用的DRBD的資源,然後,Heartbeat將執行共享磁盤分區的掛載操 作,"Filesystem::/dev/sdb1::/data::ext4"相當於在命令行下執行mount操作,即"mount -t ext4 /dev/sdb1 /data",最後依次啓動MySQL服務。


c.配置authkeys

1
2
3
# grep -v "#" /usr/local/heartbeat/etc/ha.d/authkeys 
auth 2
2 sha1 HI!

auth 後面填寫序號,可任意填寫,但第二行開頭必須爲序號名,然後爲驗證方式,支持三種( crc md5 sha1 )方式驗證,最後面是自定義密鑰


d.複製配置文件至node2

1
# scp /usr/local/heartbeat/etc/ha.d/*  [email protected]:/usr/local/heartbeat/etc/ha.d/

注:需更改ha.cf的ucast中的IP爲node1的IP(該處爲192.168.10.132)。


③配置MySQL 

1
2
# vi /etc/my.cnf
datadir=/data/mysql                 ##修改MySQL的數據存儲目錄


五、測試

1
2
3
4
5
# drbdadm up r1                                    ##啓用該資源
# drbd-overview 
 1:r1/1  Connected(2*) Secondary(2*) UpToDa/UpToDa 
# systemctl start mysql
# systemctl start heartbeat

wKioL1ZAJ1XATr0tAABnJGHoKAU755.png

已實現自動掛載


②故障切換測試

node1:

1
# systemctl stop heartbeat

node2:

wKioL1ZALsCDQab5AABJUoscj8o546.png

wKiom1ZAL8KxJ5P9AAAv2BPV6ho492.png

已實現正常切換


本文出自 「記事本」 博客,請務必保留此出處http://wangzhijian.blog.51cto.com/6427016/1713052