drbd+corosync+pacemaker構建高可用MySQL叢集

來源:互聯網
上載者:User

標籤:drbd+corosync+pacemaker構建高可用mysql叢集

一、drbd簡介

    drbd全稱Distributed Replicated Block Device,為分布式複製塊裝置,基於軟體實現的,不共用任何東西的,通過複製的方式構建鏡像模式工作的磁碟,類似於raid1,但不同於raid的是,drbd實現了跨主機鏡像塊資料。drbd工作原理:由工作於核心層次的drbd,將要寫入本地磁碟的資料鏡像一份發往本地網卡,由本地網卡發往另一台drbd主機的本地磁碟儲存。因此,drbd的兩個主機的,磁碟儲存一模一樣,從而實現分布式複製塊裝置的實現。drbd進程對磁碟的讀寫資料操作只在一個主機運行,只有在主drbd主機出現故障時,從drbd主機開始接收使用者的資料讀寫。在叢集系統中,drbd可與HA叢集的分布式鎖管理器一起使用,從而使主從drbd主機都可對資料讀寫,形成雙主drbd。

1、drbd在塊層級完成檔案複製,工作於核心

2、drbd是跨主機的塊裝置鏡像系統

DRBD結構圖(引自DRBD官網):

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/8A/9E/wKioL1g1kSKSavtPAARzd46UGxg515.png" title="1.png" alt="wKioL1g1kSKSavtPAARzd46UGxg515.png" />    

   工作流程圖分析:service服務,File System是任何進程要讀取磁碟,都要向核心發起檔案系統層級的調用來實現,檔案系統能把資料等存入磁碟。Buffer Cache是service將資料緩衝在記憶體中,並由Disk Scheduler取出調度排序,發往Disk Driver支配Disk Storage儲存。而Raw Device則是不經由檔案系統調用,直接塊層級儲存。DRBD則是直接在核心空間的記憶體與硬碟驅動之間加入一層,將從Buffer Cache提取的資料鏡像一份,來源資料繼續經由Disk Driver支配Disk Storage儲存,而鏡像的資料經由TCP/IP網路通過本地網卡發往從drbd主機的drbd層交由Disk Driver支配Disk Storage儲存。

 

   DRBD的使用者空間管理工具,用於管理主從drbd主機。主要使用drbdadm,因其更符合使用者的使用習慣。而drbdsetup和drbdmeta為較接近底層的裝置,所以使用較少。

   DRBD的工作特性:即時,透明,設定資料同步類型

    資料同步類型有三種:

        A:非同步,效能好,可靠性差

        B:半同步 效能可靠性折中

        C:同步 可靠性好,效能差

   

   DRBD的資源類型:

    Resource name:唯一的,只能使用ASCII碼定義,不能包含空白字元

    DRBD device:

        由DRBD管理的塊裝置檔案,

        drbd裝置:/dev/drbd#

            主裝置號:147

            次裝置號:從0開始編號

        磁碟配置:各主機上用於組成此drbd裝置的磁碟或分區

        網路設定:資料同步時的網路通訊屬性

   

 

二、 drbd實現HA的MySQL叢集 

 此前已部署好corosync+pacemaker+crmsh   ---> corosync+pacemaker使用crmsh構建高可用叢集

 

 1、準備安裝drbd(node1,node2)

    drbd的rpm在核心版本2.6.33以上才自動加入核心功能,本文的系統版本為CentOS6.7,核心版本為2.6.32-573.el6.x86_64,所以要想使用drbd,只能編譯源碼,或是使用三方提供的rpm包。

準備epel源[[email protected] corosync]# rpm -Uvh 安裝drbd主程式與核心模組[[email protected] corosync]# yum install drbd83 kmod-drbd83


 2、在兩個node節點準備磁碟(node1,node2)

  在虛擬機器上添加了10G的新硬碟,在centos6.7系統上不關機讀取到新硬碟

[[email protected] corosync]# ls /sys/class/scsi_host/host0  host1  host2[[email protected] corosync]# echo "- - -" > /sys/class/scsi_host/host0/scan[[email protected] corosync]# echo "- - -" > /sys/class/scsi_host/host1/scan[[email protected] corosync]# echo "- - -" > /sys/class/scsi_host/host2/scan[[email protected] corosync]# fdisk -l | grep /dev/sdb Disk /dev/sdb: 10.7 GB, 10737418240 bytes

   

  為新硬碟建立分區,但不格式化。

[[email protected] corosync]# fdisk /dev/sdbDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x35afce5b.Changes will remain in memory only, until you decide to write them.After that, of course, the previous content won‘t be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to         switch off the mode (command ‘c‘) and change display units to         sectors (command ‘u‘).Command (m for help): pDisk /dev/sdb: 10.7 GB, 10737418240 bytes255 heads, 63 sectors/track, 1305 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x35afce5b   Device Boot      Start         End      Blocks   Id  SystemCommand (m for help): nCommand action   e   extended   p   primary partition (1-4)pPartition number (1-4): 1First cylinder (1-1305, default 1): Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +5GCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.


 通知核心更新分區表

[[email protected] ~]# partx -a /dev/sdb[[email protected] ~]# partx -a /dev/sdb

 

 3、設定檔

  其設定檔為/etc/drbd.conf,其中引用了/etc/drbd.d/global_common.conf和/etc/drbd.d/*.res

/etc/drbd.d/global_common.conf:提供了全域配置,及多個drbd裝置相同的配置

/etc/drbd.d/*.res :資源定義

vim /etc/drbd.d/global_common.conf##global:全域屬性,定義drbd自己的工作特性global {##收集使用者資訊        usage-count no;        # minor-count dialog-refresh disable-ip-verification}##common:通用屬性,定義多組drbd裝置通用特性common {        protocol C;##處理器,定義叢集腦裂的處理方法        handlers {                # These are EXAMPLE handlers only.                # They may have severe implications,                # like hard resetting the node under certain circumstances.                # Be careful when chosing your poison.                # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;        }##節點之間等待開啟的時間,逾時時間等        startup {                # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb        }##磁碟相關屬性        disk {                on-io-error detach;     ##節點故障就拆除                # on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes                # no-disk-drain no-md-flushes max-bio-bvecs        }##網路相關屬性        net {                cram-hmac-alg "sha1";            ##定義訊息校正時使用的演算法                shared-secret "OPNEZkj3ziyn/QyFGdVK5w";       ##演算法加密的密鑰                # sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers                # max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret                # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork        }##同步類型        syncer {                rate 100M;    ##同步速率                # rate after al-extents use-rle cpu-mask verify-alg csums-alg        }}

產生隨機數,填入net的shared-secret中

[[email protected] ~]# openssl rand -base64 16OPNEZkj3ziyn/QyFGdVK5w==

配置資源

[[email protected] drbd.d]# vim mystore.resresource mystore {    device   /dev/drbd0;    disk     /dev/sdb1;    on node1 {        address 192.168.0.15:7789;        meta-disk  internal;    }    on node2 {        address 192.168.0.16:7789;        meta-disk  internal;    }}


將設定檔複製給node2一份

[[email protected] ~]# scp  /etc/drbd.d/* node2:/etc/drbd.d/global_common.conf                                  100% 1704     1.7KB/s   00:00    mystore.res                                         100%  226     0.2KB/s   00:00


 4、在兩個節點上初始化已定義的資源並重啟服務

node1

[[email protected] ~]# drbdadm create-md mystoreWriting meta data...initializing activity logNOT initialized bitmapNew drbd meta data block successfully created.

node2

[[email protected] ~]# drbdadm create-md mystoreWriting meta data...initializing activity logNOT initialized bitmapNew drbd meta data block successfully created.


node1和node2同時啟動drbd

[[email protected] ~]# service drbd start[[email protected] ~]# service drbd start


啟動服務後兩節點都處於Secondary狀態,我們要將其中一個節點設定為Primary(僅一個節點執行)

[[email protected] ~]# drbdadm primary --force mystore或者[[email protected] ~]# drbdadm -- --overwrite-data-of-peer primary mystore


查看狀態資訊

[[email protected] ~]# drbd-overview  0:mystore  SyncSource Primary/Secondary UpToDate/Inconsistent C r----- [======>.............] sync‘ed: 39.7% (3096/5128)M

同步完畢,node1為主,node2為從

[[email protected] ~]# drbd-overview  0:mystore  Connected Primary/Secondary UpToDate/UpToDate C r-----   也可使node1為從,node2為主[[email protected] ~]# drbdadm secondary mystore[[email protected] ~]# drbdadm primary --force mystore


 5、建立檔案系統

    所有操作均在node1即Primary節點。

格式化分區

[[email protected] ~]# mke2fs -t ext4 /dev/drbd0mke2fs 1.41.12 (17-May-2010)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks328656 inodes, 1313255 blocks65662 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=134637158441 block groups32768 blocks per group, 32768 fragments per group8016 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736Writing inode tables: done                            Creating journal (32768 blocks): donedoneWriting superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 24 mounts or180 days, whichever comes first.  Use tune2fs -c or -i to override.


掛載並測試drbd

[[email protected] ~]# mount /dev/drbd0 /mnt[[email protected] ~]# cd /mnt[[email protected] mnt]# cp /etc/issue ./[[email protected] mnt]# lsissue  lost+found

卸載

[[email protected] ~]# umount /mnt



未完待續!

水平有限,如有錯誤,歡迎指正。

本文出自 “linux啟航” 部落格,請務必保留此出處http://jiayimeng.blog.51cto.com/10604001/1875979

drbd+corosync+pacemaker構建高可用MySQL叢集

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.