1. 程式人生 > >drbd之學習路線

drbd之學習路線

drbd






二、DRBD 是什麽

簡單的說,DRBD (Distributed Replicated Block Device,分布式復制塊設備)是由內核模塊和相關腳本而構成,用以構建高可用性的集群。其實現方式是通過網絡來鏡像整個設備。你可以把它看作是一種網絡RAID1。




技術分享


四、DRBD 工作原理

每個設備(drbd 提供了不止一個設備)都有一個狀態,可能是‘主’狀態或‘從’狀態。在主節點上,應用程序應能運行和訪問drbd設備(/dev/drbd*)。每次寫入都會發往本地磁盤設備和從節點設備中。從節點只能簡單地把數據寫入它的磁盤設備上。 讀取數據通常在本地進行。 如果主節點發生故障,心跳(heartbeat或corosync)將會把從節點轉換到主狀態,並啟動其上的應用程序。(如果您將它和無日誌FS 一起使用,則需要運行fsck)。如果發生故障的節點恢復工作,它就會成為新的從節點,而且必須使自己的內容與主節點的內容保持同步。當然,這些操作不會幹擾到後臺的服務。




DRBD是一個用軟件實現的、無共享的、服務器之間鏡像塊設備內容的存儲復制解決方案。












https://baike.baidu.com/item/DRBD/7342076?fr=aladdin




http://docs.linbit.com/




















DRBD編譯安裝與配置

https://www.centos.bz/2012/02/drbd-compile-install-deploy/





配置DRBD出現錯誤總結

https://www.centos.bz/2012/02/drbd-erros-faq/






Linux 高可用(HA)集群之DRBD詳解

http://freeloda.blog.51cto.com/2033581/1275384


雙機熱備+負載均衡線上方案


(Heartbeat+DRBD+NFS+Keepalived+Lnmp)

https://www.centos.bz/2012/03/heartbeat-drbd-nfs-keepalived-lnmp/


使用heartbeat實現DRBD主從自動切換

https://www.centos.bz/2012/03/achieve-drbd-high-availability-with-heartbeat/








https://www.centos.bz/tag/drbd/



目錄

一、DRBD簡介

二、DRBD的特性

三、DRBD的用戶空間管理工具

四、DRBD的模式

五、DRBD的同步協議

六、DRBD的資源

七、DRBD的配置文件詳解

八、實戰,使用drbd+mysql+Corosync來實現mysql的高可用集群解決方案

一、DRBD簡介

DRBD:叫做分布式復制塊設備,這是一種基於軟件,無共享,復制的解決方案。在服務器之間的塊設備(包括硬盤、分區、邏輯卷)進行鏡像。也就是說當某一個應用程序完成寫操作後,它提交的數據不僅僅會保存在本地塊設備上,DRBD也會將這份數據復制一份,通過網絡傳輸到另一個節點的塊設備上,這樣,兩個節點上的塊設備上的數據將會保存一致,這就是鏡像功能。


二、DRBD的特性

DRBD具有如下特性:

1)實時性:當某個應用程序完成對數據的修改時,復制功能立即發生

2)透明性:應用程序的數據存儲在鏡像塊設備上是獨立透明的,他們的數據在兩個節點上都保存一份,因此,無論哪一臺服務器宕機,都不會影響應用程序讀取數據的操作,所以說是透明的。

3)同步鏡像和異步鏡像:同步鏡像表示當應用程序提交本地的寫操作後,數據後會同步寫到兩個節點上去;異步鏡像表示當應用程序提交寫操作後,只有當本地的節點上完成寫操作後,另一個節點才可以完成寫操作。


三、drbd的用戶空間管理工具

為了能夠配置和管理drbd的資源,drbd提供了一些管理工具與內核模塊進行通信

drbdadm:高級的DRBD程序管理套件工具。它從配置文件/etc/drbd.conf中獲取所有配置參數。drbdadm為drbdsetup和drbdmeta兩個命令充當程序的前端應用,執行drbdadm實際是執行的drbdsetup和drbdeta兩個命令。

drbdsetup:drbdsetup可以讓用戶配置已經加載在內核中運行的DRBD模塊,它是底層的DRBD程序管理套件工具。使用該命令時,所有的配置參數都需要直接在命令行中定義,雖然命令很靈活,但是大大的降低了命令的簡單易用性,因此很多的用戶很少使用drbdsetup。

drbdmeta:drbdmeta允許用戶創建、轉儲、還原和修改drbd的元數據結構。這個命令也是用戶極少用到。


四、DRBD的模式

DRBD有2中模式,一種是DRBD的主從模式,另一種是DRBD的雙主模式

1、DRBD的主從模式

這種模式下,其中一個節點作為主節點,另一個節點作為從節點。其中主節點可以執行讀、寫操作;從節點不可以掛載文件系統,因此,也不可以執行讀寫操作。在這種模式下,資源在任何時間只能存儲在主節點上。這種模式可用在任何的文件系統上(EXT3、EXT4、XFS等等)。默認這種模式下,一旦主節點發生故障,從節點需要手工將資源進行轉移,且主節點變成從節點和從節點變成主節點需要手動進行切換。不能自動進行轉移,因此比較麻煩。

為了解決手動將資源和節點進行轉移,可以將DRBD做成高可用集群的資源代理(RA),這樣一旦其中的一個節點宕機,資源會自動轉移到另一個節點,從而保證服務的連續性。

2、DRBD的雙主模式

這是DRBD8.0之後的新特性

在雙主模式下,任何資源在任何特定的時間都存在兩個主節點。這種模式需要一個共享的集群文件系統,利用分布式的鎖機制進行管理,如GFS和OCFS2。部署雙主模式時,DRBD可以是負載均衡的集群,這就需要從兩個並發的主節點中選取一個首選的訪問數據。這種模式默認是禁用的,如果要是用的話必須在配置文件中進行聲明。


五、DRBD的同步協議

DRBD的復制功能就是將應用程序提交的數據一份保存在本地節點,一份復制傳輸保存在另一個節點上。但是DRBD需要對傳輸的數據進行確認以便保證另一個節點的寫操作完成,就需要用到DRBD的同步協議,DRBD同步協議有三種:

協議A:數據在本地完成寫操作且數據已經發送到TCP/IP協議棧的隊列中,則認為寫操作完成。如果本地節點的寫操作完成,此時本地節點發生故障,而數據還處在TCP/IP隊列中,則數據不會發送到對端節點上。因此,兩個節點的數據將不會保持一致。這種協議雖然高效,但是並不能保證數據的可靠性。

協議B:數據在本地完成寫操作且數據已到達對端節點則認為寫操作完成。如果兩個節點同時發生故障,即使數據到達對端節點,這種方式同樣也會導致在對端節點和本地節點的數據不一致現象,也不具有可靠性。

協議C:只有當本地節點的磁盤和對端節點的磁盤都完成了寫操作,才認為寫操作完成。這是集群流行的一種方式,應用也是最多的,這種方式雖然不高效,但是最可靠。

六、DRBD的資源

在DRBD中,資源是所有可復制移動存儲設備的總稱,它包括:

資源名稱:資源名稱可以是除了空白字符以外的任意ASCII碼字符

DRBD設備:DRBD的虛擬塊設備。在雙方節點上,DRBD設備的設備文件命名方式;一般為/dev/drbdN,其主設備號147,N是次設備號

磁盤配置:DRBD內部應用需要本地數據副本,元數據。在雙方節點上,為各自提供的存儲設備。

網絡配置:雙方數據同步時所使用的網絡屬性;

七、DRBD的配置文件詳解

drbd的主配置文件為/etc/drbd.conf;為了管理的便捷性,目前通常會將些配置文件分成多個部分,且都保存至/etc/drbd.d目錄中,主配置文件中僅使用"include"指令將這些配置文件片斷整合起來。通常,/etc/drbd.d目錄中的配置文件為global_common.conf和所有以.res結尾的文件。其中global_common.conf中主要定義global段和common段,而每一個.res的文件用於定義一個資源。

在配置文件中,global段僅能出現一次,且如果所有的配置信息都保存至同一個配置文件中而不分開為多個文件的話,global段必須位於配置文件的最開始處。目前global段中可以定義的參數僅有minor-count, dialog-refresh, disable-ip-verification和usage-count。

common段則用於定義被每一個資源默認繼承的參數,可以在資源定義中使用的參數都可以在common段中定義。實際應用中,common段並非必須,但建議將多個資源共享的參數定義為common段中的參數以降低配置文件的復雜度。

resource段則用於定義drbd資源,每個資源通常定義在一個單獨的位於/etc/drbd.d目錄中的以.res結尾的文件中。資源在定義時必須為其命名,名字可以由非空白的ASCII字符組成。每一個資源段的定義中至少要包含兩個host子段,以定義此資源關聯至的節點,其它參數均可以從common段或drbd的默認中進行繼承而無須定義。

http://blog.csdn.net/u014421556/article/details/52925442









本文出自 “運維自動化” 博客,請務必保留此出處http://shower.blog.51cto.com/4926872/1977372

drbd之學習路線