Drbd+Pacemaker實現高可用

What is Pacemaker?

Pacemaker是一個集群資源管理器。它利用集群基礎構件(OpenAIS 、heartbeat或corosync)提供的消息和成員管理能力來探測并從節點或資源級別的故障中恢復,以實現群集服務(亦稱資源)的最大可用性。


前提:

1)本配置共有兩個測試節點,分別node1.a.org和node2.a.org,相的IP地址分別為192.168.0.5和192.168.0.6;

2)node1和node2兩個節點已經配置好了基于openais/corosync的集群;且node1和node2也已經配置好了Primary/Secondary模型的drbd設備/dev/drbd0,且對應的資源名稱為web;如果您此處的配置有所不同,請確保后面的命令中使用到時與您的配置修改此些信息與您所需要的配置保持一致;

3)系統為rhel5.4,x86平臺;


1、查看當前集群的配置信息,確保已經配置全局屬性參數為兩節點集群所適用:

1
#?crm?configure?show
1
2
3
4
5
6
7
8
9
node?node1.a.org
node?node2.a.org
property?$id="cib-bootstrap-options"?\
?dc-version="1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87"?\
?cluster-infrastructure="openais"?\
?expected-quorum-votes="2"?\
?stonith-enabled="false"?\
?last-lrm-refresh="1308059765"?\
?no-quorum-policy="ignore"

在如上輸出的信息中,請確保有stonith-enabled和no-quorum-policy出現且其值與如上輸出信息中相同。否則,可以分別使用如下命令進行配置:

1
2
#?crm?configure?property?stonith-enabled=false
#?crm?configure?property?no-quorum-policy=ignore

2、將已經配置好的drbd設備/dev/drbd0定義為集群服務;

1)按照集群服務的要求,首先確保兩個節點上的drbd服務已經停止,且不會隨系統啟動而自動啟動:

1
#?drbd-overview
1
?0:web?Unconfigured?.?.?.?.
1
#?chkconfig?drbd?off

2)配置drbd為集群資源:

提供drbd的RA目前由OCF歸類為linbit,其路徑為/usr/lib/ocf/resource.d/linbit/drbd。我們可以使用如下命令來查看此RA及RA的meta信息:

1
#?crm?ra?classes
1
2
3
4
heartbeat
lsb
ocf?/?heartbeat?linbit?pacemaker
stonith
1
#?crm?ra?list?ocf?linbit
1
drbd
1
#?crm?ra?info?ocf:linbit:drbd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
This?resource?agent?manages?a?DRBD?resource
as?a?master/slave?resource.?DRBD?is?a?shared-nothing?replicated?storage
device.?(ocf:linbit:drbd)
Master/Slave?OCF?Resource?Agent?for?DRBD
Parameters?(*?denotes?required,?[]?the?default):
drbd_resource*?(string):?drbd?resource?name
?The?name?of?the?drbd?resource?from?the?drbd.conf?file.
drbdconf?(string,?[/etc/drbd.conf]):?Path?to?drbd.conf
?Full?path?to?the?drbd.conf?file.
Operations'?defaults?(advisory?minimum):
?start?timeout=240
?promote?timeout=90
?demote?timeout=90
?notify?timeout=90
?stop?timeout=100
?monitor_Slave?interval=20?timeout=20?start-delay=1m
?monitor_Master?interval=10?timeout=20?start-delay=1m

drbd需要同時運行在兩個節點上,但只能有一個節點(primary/secondary模型)是Master,而另一個節點為Slave;因此,它是一種比較特殊的集群資源,其資源類型為多態(Multi-state)clone類型,即主機節點有Master和Slave之分,且要求服務剛啟動時兩個節點都處于slave狀態。

1
[root@node1?~]#?crm
1
2
3
crm(live)#?configure
crm(live)configure#?primitive?webdrbd?ocf:linbit:drbd?params?drbd_resource=web?op?monitor?role=Master?interval=50s?timeout=30s?op?monitor?role=Slave?interval=60s?timeout=30s
crm(live)configure#?master?MS_Webdrbd?webdrbd?meta?master-max="1"?master-node-max="1"?clone-max="2"?clone-node-max="1"?notify="true"
1
2
3
4
crm(live)configure#?show?webdrbd
primitive?webdrbd?ocf:linbit:drbd?\
?params?drbd_resource="web"?\
?op?monitor?interval="15s"
1
2
3
4
5
crm(live)configure#?show?MS_Webdrbd
ms?MS_Webdrbd?webdrbd?\
?meta?master-max="1"?master-node-max="1"?clone-max="2"?clone-node-max="1"?notify="true"
crm(live)configure#?verify
crm(live)configure#?commit

查看當前集群運行狀態:

1
#?crm?status
1
2
3
4
5
6
7
8
============
Last?updated:?Fri?Jun?17?06:24:03?2011
Stack:?openais
Current?DC:?node2.a.org?-?partition?with?quorum
Version:?1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2?Nodes?configured,?2?expected?votes
1?Resources?configured.
============
1
2
3
4
5
Online:?[?node2.a.org?node1.a.org?]
?Master/Slave?Set:?MS_Webdrbd
?Masters:?[?node2.a.org?]
?Slaves:?[?node1.a.org?]

由上面的信息可以看出此時的drbd服務的Primary節點為node2.a.org,Secondary節點為node1.a.org。當然,也可以在node2上使用如下命令驗正當前主機是否已經成為web資源的Primary節點:

1
#?drbdadm?role?web
1
Primary/Secondary

3)為Primary節點上的web資源創建自動掛載的集群服務

MS_Webdrbd的Master節點即為drbd服務web資源的Primary節點,此節點的設備/dev/drbd0可以掛載使用,且在某集群服務的應用當中也需要能夠實現自動掛載。假設我們這里的web資源是為Web服務器集群提供網頁文件的共享文件系統,其需要掛載至/www(此目錄需要在兩個節點都已經建立完成)目錄。

此外,此自動掛載的集群資源需要運行于drbd服務的Master節點上,并且只能在drbd服務將某節點設置為Primary以后方可啟動。因此,還需要為這兩個資源建立排列約束和順序約束。

1
#?crm
1
2
3
4
5
6
crm(live)#?configure
crm(live)configure#?primitive?WebFS?ocf:heartbeat:Filesystem?params?device="/dev/drbd0"?directory="/www"?fstype="ext3"
crm(live)configure#?colocation?WebFS_on_MS_webdrbd?inf:?WebFS?MS_Webdrbd:Master
crm(live)configure#?order?WebFS_after_MS_Webdrbd?inf:?MS_Webdrbd:promote?WebFS:start
crm(live)configure#?verify
crm(live)configure#?commit

查看集群中資源的運行狀態:

1
?crm?status
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
============
Last?updated:?Fri?Jun?17?06:26:03?2011
Stack:?openais
Current?DC:?node2.a.org?-?partition?with?quorum
Version:?1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2?Nodes?configured,?2?expected?votes
2?Resources?configured.
============
Online:?[?node2.a.org?node1.a.org?]
?Master/Slave?Set:?MS_Webdrbd
?Masters:?[?node2.a.org?]
?Slaves:?[?node1.a.org?]
?WebFS?(ocf::heartbeat:Filesystem):?Started?node2.a.org

由上面的信息可以發現,此時WebFS運行的節點和drbd服務的Primary節點均為node2.a.org;我們在node2上復制一些文件至/www目錄(掛載點),而后在故障故障轉移后查看node1的/www目錄下是否存在這些文件。

1
#?cp?/etc/rc./rc.sysinit?/www

下面我們模擬node2節點故障,看此些資源可否正確轉移至node1。

以下命令在Node2上執行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#?crm?node?standby
#?crm?status
============
Last?updated:?Fri?Jun?17?06:27:03?2011
Stack:?openais
Current?DC:?node2.a.org?-?partition?with?quorum
Version:?1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2?Nodes?configured,?2?expected?votes
2?Resources?configured.
============
Node?node2.a.org:?standby
Online:?[?node1.a.org?]
?Master/Slave?Set:?MS_Webdrbd
?Masters:?[?node1.a.org?]
?Stopped:?[?webdrbd:0?]
?WebFS?(ocf::heartbeat:Filesystem):?Started?node1.a.org

由上面的信息可以推斷出,node2已經轉入standby模式,其drbd服務已經停止,但故障轉移已經完成,所有資源已經正常轉移至node1。

在node1可以看到在node2作為primary節點時產生的保存至/www目錄中的數據,在node1上均存在一份拷貝。

讓node2重新上線:

1
#?crm?node?online
1
[root@node2?~]#?crm?status
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
============
Last?updated:?Fri?Jun?17?06:30:05?2011
Stack:?openais
Current?DC:?node2.a.org?-?partition?with?quorum
Version:?1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87
2?Nodes?configured,?2?expected?votes
2?Resources?configured.
============
Online:?[?node2.a.org?node1.a.org?]
?Master/Slave?Set:?MS_Webdrbd
?Masters:?[?node1.a.org?]
?Slaves:?[?node2.a.org?]
?WebFS?(ocf::heartbeat:Filesystem):?Started?node1.a.org










本文轉自 SoulMio 51CTO博客,原文鏈接:http://blog.51cto.com/bovin/1861153,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256656.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256656.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256656.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab常用函數——矩陣函數

五、數組和矩陣函數 1)數組基本函數 display:顯示字符或者數組 isempty :判斷數組是否為空,空返回1,不空返回0 isequal :判斷數組是否相同 (認為NaN不同) isequalwithequalnans:判斷數組是否相同,把NaN看成相同的數 isfinite :判斷數組元素是否為有限數 isfloat…

記錄下面試中的回答的不好的問題

1 伙伴系統在linux中的作用,具體咋回事 2 tcp擁塞控制 滑動窗口 3 linux sed,awk的具體使用 4 ftp哪幾種模式 5 中斷與輪詢 6 C stl的vector是怎么是實現的 7 I/O多路復用是怎么回事,select(),epoll()具體怎么回事。 一個文件中每行一個單詞&…

Python 字符串操作(string替換、刪除、截取、復制、連接、比較、查找、包含、大小寫轉換、...

去空格及特殊符號 s.strip().lstrip().rstrip(,) 復制字符串 #strcpy(sStr1,sStr2)sStr1 strcpysStr2 sStr1 sStr1 strcpy2print sStr2 連接字符串 #strcat(sStr1,sStr2)sStr1 strcatsStr2 appendsStr1 sStr2print sStr1 查找字符 #strchr(sStr1,sStr2)# < 0 為未找到…

周賽題解

A - An easy problemTime Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Practice HDU 2601Description When Teddy was a child , he was always thinking about some simple math problems ,such as “What it’s 1 cup of wa…

matlab常用函數——數學函數

六、基本數學函數 1)基本運算符 +:加法運算符 -:減法運算符 *:矩陣乘法 .*:數組乘法 /:斜杠或者矩陣右除 B/A等于公式B*inv(A) ./:數組右除 A./B等于A(i,j)/B(i,j) \:反斜杠或者矩陣左除 A\B等于inv(A)*B .\:數組左除 A.\B等于B(i,j)/A(i,j) ^…

內存容量出現異常的解決辦法

【鄙視360人工服務工程師 笨死你!】 如果哪天的內存容量突然出現了異常 而且發現只有一半可以使用的時候 不是內存出現了問題 而是設置的問題。 【win 7 win 8 win 10通用的解決辦法】 問題描述&#xff1a; 我是win 10 64位系統 內存容量突然只有一半了 打開我的電腦的設置看了…

Oracle 變量綁定與變量窺視合集系列一

《Oracle 變量綁定與變量窺視合集》 數據庫環境 LEO1LEO1> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production PL/SQL R…

(原創)對某國的一次滲透

文章均由自己原創&#xff0c;只是一直沒有在自己博客發表。本地附件也沒有了&#xff0c;我是從網上找來我的以前的投稿。 寫在之前的廢話&#xff1a;小菜技術能力不行&#xff0c;如果你覺得此文實在看不下去&#xff0c;還請PASS掉。如果你對我的文章有興趣&#xff0c;可以…

matlab常用函數——方程函數

八、插值函數、線性方程解函數和多項式函數 1)插值函數 interp1q :1維快速線性插值法 yi=interp1q(x,Y,xi) interp1q正常執行條件: (1)x單調遞增列向量 (2)Y為列向量or行數為length(x)(3)xi為列向量,如果xi值在x的坐標范圍外,返回NaN 實例: x=(-5:0.5:5); y=sin…

C/C++ | 字節對齊

目的&#xff1a;優化CPU訪問數據效率 類型轉換&#xff1a;未對齊時&#xff0c;嚴格一些的系統會報段錯誤&#xff0c;未報錯的話效率也會有所下降。 各種結構的對齊&#xff1a; 編譯器的區別&#xff1a; 其實字節對齊的細節和具體編譯器實現相關&#xff0c;但一般而言&am…

關于python測試webservice接口的視頻分享

現在大公司非常流行用python做產品的測試框架&#xff0c;還有對于一些快速原型產品的開發也好&#xff0c;很好地支持OO編程&#xff0c;代碼易讀。 Python的更新挺快的&#xff0c;尤其是第三方庫。 對于測試人員&#xff0c;代碼基礎薄弱&#xff0c;用python語言容易上手。…

matlab常用函數——文件操作函數

十一、基本文件操作函數 1)文件創建函數 filemaker :把文件名與文件中函數名分開 。 filesep :文件目錄分隔。 fileparts :把目標文件名拆分成字符串形式輸出 。 tempdir :返回系統暫存地址名 。 tempname :返回系統暫存文件名 。 fullfile :創建文件名 2)文件打…

Struts2中文件上傳下載實例

1.單文件上傳 1 jsp頁面&#xff1a;2 3 <!-- 單文件上傳 -->4 <form action"Fileupload.action" method"post"5 enctype"multipart/form-data">6 username:7 <input type"tex…

最優化課堂筆記06-無約束多維非線性規劃方法(續)

6.5共軛方向法 6.5.1 共軛方向 6.5.1 共軛梯度法 6.6單純形法(不考) 6.7最小二乘法 6.7.2 改進的高斯-牛頓最小二乘法

opengl微發展理解

1.什么是OpenGL? 一種程序&#xff0c;可以與界面和圖形硬件交互作用、一個開放的標準 2.軟件管道 請看上圖 - Apllication層 表示你的程序&#xff08;調用渲染命令。如opengl API&#xff09; -Abstraction層 表示畫圖接口&#xff08;如OpenGL API或者DirectX API&a…

MacosX 下GCC編譯指定版本的代碼

export MACOSX_DEPLOYMENT_TARGET10.6轉載于:https://www.cnblogs.com/lovelylife/p/5754226.html

最優化作業第六章——共軛梯度法和鮑爾法

共軛梯度法&#xff1a; 代碼&#xff1a; #導入模塊 from sympy import * import sympy as sp #將導入的模塊重新定義一個名字以便后續的程序進行使用 from numpy import * import numpy as npdef main():#本例是利用共軛梯度法進行最優化x1,x2,alpha symbols("x1,x2,…

酒鬼隨機漫步(一個矢量類)

摘要: 閱讀全文這是一個定義的一個矢量類&#xff0c; 然后用矢量類模擬一個酒鬼的隨機漫步 問題很簡單&#xff0c; 實現也不麻煩&#xff0c; 但是這個小程序卻可以呈現出許多語法知識。而且代碼風格也不錯&#xff0c;因此保存在了這篇博客中。 建議&#xff1a; 1. 類的聲…

對高并發流量控制的一點思考

前言 在實際項目中&#xff0c;曾經遭遇過線上5WQPS的峰值&#xff0c;也在壓測狀態下經歷過10WQPS的大流量請求&#xff0c;本篇博客的話題主要就是自己對高并發流量控制的一點思考。 應對大流量的一些思路 首先&#xff0c;我們來說一下什么是大流量&#xff1f; 大流量&…