heartbeat+drbd綜合運用之一

jopen 8年前發布 | 9K 次閱讀

mysql+drbd+heartbeat高可用綜合
在企業的實際生產中, 一主多從的mysql數據庫架構是最常用的DB架構方案,該架構方案部署簡單,維護方便
并且通過配置簡單的代理或者通過程序的方式就可以實現應用服務器對主從庫的讀寫分離,且多個從庫還可以通過lv或者
haproxy等代理實現對多個從庫的負載均衡,分擔讀的壓力,同時排除單點
但是,在以上的mysql數據庫架構中,我們不難發現,雖然從庫是多個,但是主庫僅有一個,也就是說一旦主庫宕機,所有的
寫業務都會終止,而從庫宕機一個就沒有什么大的影響,那么如何解決這個主庫單點的問題呢,其實,最簡單的方案就是做好監控
,然后主庫宕機后,有管理員人為的手工選擇最快的從庫改為主,然后讓其他從庫和新主庫同步,這個方式簡單易行,但是需要人工
處理,對有些要求高的場合高度不夠,那有沒有不需要人工處理的方案呢
mysql高可用生產需求
假設有三臺數據庫服務器data-1-1/data-1-2/data-1-3,其實際ip分別為10.0.0.7(data-1-1)
10.0.0.8(data-1-2),10.0.0.9(data-1-3機器)
data-1-1的數據庫文件目錄為/data,對前端提供訪問的vip為10.0.0.17
配置目標:一旦主數據庫data-1-1宕機,服務器上的mysql數據庫服務和虛擬ip會自動切換到服務器data-1-2
從而達到mysql數據庫高可用無業務影響的目的,
這里會有一個特別的問題,就是以前的多個從庫如何自動和新的主庫同步,經過實踐,通過drbd的方式同步的數據庫,以及做從庫時使用和
主庫對外提供的vip為同步vip,當主庫宕機后,vip飄逸到熱備主庫,默認情況60秒內,從庫就可以連接到新的
vip,從而自動和新的主庫同步,這里需要強調下,通過mysql同步做雙主的方式,是難以做到主庫宕機從庫和新的
主庫自動同步

生產配置場景
刪除兩臺虛擬機的硬盤,從新添加兩塊兩G 的硬盤,從新添加兩塊兩G硬盤
[root@data-1-2 ~]# fdisk -l
   2031616   82  Linux swap / Solaris
   [root@data-1-1 ~]# tail -2 /etc/hosts
192.168.1.107    data-1-1
192.168.1.108    data-1-2
[root@data-1-2 ~]# tail -2 /etc/hosts
192.168.1.107    data-1-1
192.168.1.108    data-1-2
[root@data-1-2 ~]# fdisk -l
/dev/sda3            2358        2611     2031616   82  Linux swap / Solaris
配置好heartbeat
[root@data-1-1 ~]# ip addr|grep 192.168
    inet 192.168.1.107/24 brd 192.168.1.255 scope global eth1
    inet 192.168.0.107/24 brd 192.168.0.255 scope global eth0
    inet 192.168.0.7/24 brd 192.168.0.255 scope global secondary
[root@data-1-2 ~]#  ip addr|grep 192.168
    inet 192.168.1.108/24 brd 192.168.1.255 scope global eth1
    inet 192.168.0.108/24 brd 192.168.0.255 scope global eth0
    inet 192.168.0.8/24 brd 192.168.0.255 scope globa

[root@data-1-1 ~]# parted /dev/sdb mklabel gpt#大于2T的進行分區
Information: You may need to update /etc/fstab.
[root@data-1-1 ~]# parted /dev/sdb mkpart primary 0 1024
Warning: The resulting partition is not properly
aligned for best performance.
Ignore/Cancel? Ignore##
Information: You may need to update /etc/fstab.
[root@data-1-1 ~]#  parted /dev/sdb mkpart primary 1025 2146
Warning: The resulting partition is not properly
aligned for best performance.
Ignore/Cancel? Ignore###
Information: You may need to update /etc/fstab.
[root@data-1-1 ~]#   parted /dev/sdb  p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  1024MB  1024MB               primary
 2      1025MB  2146MB  1121MB               primary
 
[root@data-1-2 ~]# parted /dev/sdb mklabel gpt
Information: You may need to update /etc/fstab.
[root@data-1-2 ~]# parted /dev/sdb mkpart primary 0 1024
Warning: The resulting partition is not properly
aligned for best performance.
Ignore/Cancel? Ignore
Information: You may need to update /etc/fstab.
[root@data-1-2 ~]# parted /dev/sdb mkpart primary 1025 2146
Warning: The resulting partition is not properly
aligned for best performance.
Ignore/Cancel? Ignore
Information: You may need to update /etc/fstab.
[root@data-1-2 ~]#  parted /dev/sdb  p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number  Start   End     Size    File system  Name     Flags
 1      17.4kB  1024MB  1024MB               primary
 2      1025MB  2146MB  1121MB               primary
2下載epel包
3#安裝heartbeat
4##安裝drbd
heartbeat不要自啟動
5.##安裝drbd加載到內核自啟動
echo "modprobe drbd >/dev/null 2>&1" >/etc/sysconfig/modules/drbd.modules
6配置drbd.conf

[root@data-1-1 ~]# ll /etc/dr安裝完成后會有drbd.conf,drbd.d/  
dracut.conf    drbd.conf      drirc
dracut.conf.d/ drbd.d/  
7#初始化drbd
[root@data-1-1 ~]# drbdadm create-md data
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.

[root@data-1-2 ~]# drbdadm create-md data
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.

[root@data-1-1 ~]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@data-1-1, 2016-01-08 22:44:43
 0: cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown C r----s
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:999984
[root@data-1-2 ~]# drbdadm up data

[root@data-1-1 ~]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)[版本]
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@data-1-1, 2016-01-08 22:44:43【編譯信息】
 0【設備/dev/drbd0,若一,表示設備/dev/data-1-1】:
 cs[]:Connected[可通過drbdadm cstate all查詢]
 
 ro:Secondary/Secondary
 ds:Inconsistent/Inconsistent diskstatus
  ns:0 (network send)
   nr:0 (network recive)
   dw:0(disk write )
   dr:0 (disk read)
   al:0 (active log)
   bm:0 (bit map)
   lo:0 (local count)
   pe:0 (pending)請求到對方還沒有應答
   ua:0 (unacknowledged)對端通過網絡接收到請求還沒有應答
   ap:0 (application pending)block i/o request 已經轉發到drbd,但是還沒有收到應答
   ep:1 (epochs)
   wo:f
   oos:999984
8設置主,同步數據到對端
drbdadm -- --overwrite-data-of-peer primary data
[root@data-1-1 ~]# mkdir /data -p
[root@data-1-2 ~]# mkdir /data -p
[root@data-1-1 ~]# mkfs -t ext4 -b 4096 /dev/drbd0
[root@data-1-1 ~]# mount /dev/drbd0 /data
[root@data-1-1 soft]# ls
drbd-8.4.4  drbd-8.4.4.tar.gz
[root@data-1-1 soft]# cd /data
[root@data-1-1 data]# cp ~/soft/drbd-8.4.4.tar.gz /data
[root@data-1-1 data]# cat /proc/drbd
[root@data-1-2 ~]# drbdadm down data
[root@data-1-2 ~]# mount /dev/sdb1 /mnt
[root@data-1-2 ~]# ll /mnt
total 712
-rw-r--r--. 1 root root 708879 Jan  9 18:39 drbd-8.4.4.tar.gz
drwx------. 2 root root  16384 Jan  9 18:34 lost+fo
[root@data-1-2 ~]# umount /mnt
[root@data-1-2 ~]# drbdadm up data
[root@data-1-1 etc]# cd /etc/ha.d/
drbddisk::data Filesystem::/dev/drbd0::/data::ext4 rsdata
[root@data-1-1 ha.d]# vi haresources
data-1-1 IPaddr::192.168.0.7/24/eth0 drbddisk::data Filesystem::/dev/drbd0::/data::ext4
data-1-2 IPaddr::192.168.0.8/24/eth0

[root@data-1-2 ~]# cd /etc/ha.d/
[root@data-1-2 ha.d]# ls
authkeys      ha.cf.bak    haresources.bak  resource.d
authkeys.bak  harc         rc.d             shellfuncs
ha.cf         haresources  README.config
[root@data-1-2 ha.d]# vi haresources


data-1-1 IPaddr::192.168.0.7/24/eth0 drbddisk::data Filesystem::/dev/drbd0::/data::ext4
data-1-2 IPaddr::192.168.0.8/24/eth0

[root@data-1-1 ha.d]# /etc/init.d/heartbeat stop
Stopping High-Availability services: Done.

[root@data-1-1 ha.d]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO:  Resource is stopped
INFO:  Resource is stopped
Done.

[root@data-1-1 ha.d]# ip addr|grep 192.168

[root@data-1-2 ha.d]# /etc/init.d/heartbeat stop
Stopping High-Availability services: Done.

[root@data-1-2 ha.d]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO:  Resource is stopped
INFO:  Resource is stopped
Done.

[root@data-1-2 ha.d]# ip addr|grep 192.168
[root@data-1-1 ha.d]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@data-1-1, 2016-01-08 22:44:43
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:1033245 nr:8 dw:33270 dr:1003086 al:11 bm:62 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

    [root@data-1-2 ha.d]# cat /proc/drbd
version: 8.4.4 (api:1/proto:86-101)
GIT-hash: 74402fecf24da8e5438171ee8c19e28627e1c98a build by root@data-1-2, 2016-01-08 22:45:30
 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
    ns:8 nr:24 dw:32 dr:1039 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
[root@data-1-1 ha.d]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        18G  2.7G   14G  16% /
tmpfs           495M  224K  495M   1% /dev/shm
/dev/sda1       291M   34M  242M  13% /boot
/dev/drbd0      962M   18M  895M   2% /data
12
[root@data-1-1 ha.d]# tail -f /var/log/ha-log
[root@data-1-1 ha.d]# /etc/init.d/heartbeat stop
oot@data-1-2 ha.d]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        18G  2.7G   14G  16% /
tmpfs           495M  224K  495M   1% /dev/shm
/dev/sda1       291M   34M  242M  13% /boot
/dev/drbd0      962M   18M  895M   2% /data接管了
[root@data-1-1 ha.d]# /etc/init.d/heartbeat start
[root@data-1-2 ha.d]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        18G  2.7G   14G  16% /
tmpfs           495M  224K  495M   1% /dev/shm
/dev/sda1       291M   34M  242M  13% /boot












   

來自: http://my.oschina.net/goudingcheng/blog/600312

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!