企業版html
社區版git
咱們這裏說一下成本比較低的主備模式,它主要依賴的是DRBD方式進行數據同步,須要2臺ALL IN ONE的GitLab服務器,也就是經過上面安裝方式把全部組件都安裝在一塊兒的2臺機器。segmentfault
它是分佈式複製塊設備,軟件實現的無需共享能夠在服務器之間鏡像塊設備的存儲複製解決方案。緩存
左側爲A節點,右側爲B節點服務器
DRBD運行在內核裏,它是一個內核模塊。Linux2.6.33開始已經整合進內核。上圖A爲活動節點,B爲被動節點。A收到數據發往內核的數據通路,DRBD在數據通路中註冊鉤子檢查數據,當發現接收到的數據是發往本身管理的存儲位置時,就複製一份,一份存儲到本地的DRBD存儲設備上,一份就發給TCP/IP協議棧,經過網卡傳輸到B節點的TCP/IP協議棧,B節點運行的DRBD模塊一樣在數據通路上堅持,發現有數據過來就存儲到DRBD對應的位置上。若是A節點宕機,B節點上線,B節點接收到數據存儲到本地,當A節點恢復之後在把變更數據同步到A節點上。網絡
流程以下:app
工做模式:異步
DRBD創建在底層設備之上,對於用戶來講一個DRBD設備就像一塊物理磁盤。它支持磁盤、軟RAID、LVM等其餘塊設備。分佈式
# 添加源 # CentOS 6 rpm -ivh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm # CentOS 7 rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm # 安裝 yum -y install drbd84-utils kmod-drbd84 # 安裝後重啓 reboot
下面是主配置文件ide
/etc/drbd.conf是主配置文件,可是它裏面引用了2個,因此真正須要配置的是在它包含的配置文件中進行配置。
/etc/drbd.d/global_common.conf包含global和common這兩部分DRBD配置信息。而*.res文件而資源文件。
/etc/drbd.d/global_common.conf配置文件說明
/usr/share/doc/drbd84-utils-9.3.1/drbd.conf.example這是一個模板文件。
默認這個配置文件裏面沒有配置什麼具體內容
我這裏就配置了幾項,主要就是協議。其餘其實都不用配置都是默認值。
*.res資源文件說明
默認沒有這個文件,手動創建一個,以.res結尾
資源是一個複製的數據集,它包括Resource name也就是資源名稱、
Volumes也就是卷在一個資源集合裏面能夠有多個卷複製的使用共用一個複製流;另外還會包含DRBD device,這是一個虛擬塊設備,在系統上表現是的/dev/XXX,這裏可不是真實的設備,真是的設備都是/dev/sda|b之類的。若是是多個資源再會用到Volumes
個人資源文件
注意:網絡鏈接方面建議使用背靠背的直連方式這條鏈路主要用於複製數據,我這裏實驗環境就共用一條鏈路。
若是你使用LVM如何找到塊設備?
若是你使用普通分區那就是/dev/sda|b[NUMBER]這種形式。
保障你使用的塊設備是空的不然會初始化失敗。兩個節點都要這樣作初始化。
啓用資源,反之就是 drbdadm down 資源名稱
它這裏知道本身是Secondary可是不知道對方,是由於防火牆致使,把兩邊防火牆關閉就行了,固然你也能夠添加測錄。
兩臺都是這個狀態表示正常
啓動服務
這時候咱們以前沒有的那個/dev/drbd0就出現了
這一步只能在你肯定是主節點的節點上執行,不須要兩個節點都執行。設置完成後再次查看狀態。
文件系統只能掛載到主節點上,也只能在設置了主節點後才能對這個/dev/drbd0這個設備格式化和掛載。
再次查看同步已經完成
你們確定以爲我以前安裝gitlab的時候設置倉庫路徑就是/data,沒錯,我作HA以前把gitlab服務中止掉,而後經過cp –rp命令吧git-data目錄都拷貝到其餘地方,而後才作的其餘操做,當HA完成後使用相同的命令拷貝回來就行。
drbd-overview 檢查角色以及同步狀態
drbdadm status RESOURCE_NAME
drbdsetup status gitdatadrbd --verbose –statistics 詳細信息
這是由於配置文件裏定義的和主機實際的名稱不符。修改/etc/hostname文件。
這裏是由於個人那個LVM卷掛載了,須要先卸載
說明該設備數據不爲0
參考文檔
https://docs.gitlab.com/omnibus/roles/README.html https://docs.gitlab.com/ce/administration/high_availability/README.htmlhttps://docs.linbit.com/docs/users-guide-8.4/#s-distro-packages https://www.cnblogs.com/wsl222000/p/5777382.htmlhttps://segmentfault.com/q/1010000010290689https://blog.csdn.net/tjiyu/article/details/52723125 https://blog.csdn.net/yanggd1987/article/details/50504599 http://blog.51cto.com/freeloda/1275384