日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > centos >内容正文

centos

Centos6.3下DRBD+HeartBeat+NFS配置笔记

發布時間:2023/12/9 centos 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Centos6.3下DRBD+HeartBeat+NFS配置笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

--------------閑???扯------------------???

??????這里首先感謝酒哥的構建高可用的Linux服務器的這本書,看了這本書上并參考里面的配置讓自己對DRBD+HeartBeat+NFS思路清晰了許多。

?????drbd簡單來說就是一個網絡raid-1,一般有2到多個node節點,各個節點創建的磁盤塊會映射到本地drbd塊,而后通過網絡對各個節點drbd磁盤塊進行互相同步更新。

?????heartbeat的作用就可以增加drbd的可用性,它能在某節點故障后,自動切換drbd塊到備份節點,并自動進行虛IP從新綁定,DRBD塊提權,磁盤掛載以及啟動NFS等腳本操作,這一系列操作因為只在他后端節點間完成,前端用戶訪問的是heartbeat的虛IP,所以對用戶來說無任何感知。

?????最后吐槽下,yum安裝真心坑爹,以后如果非必須,盡量源碼包安裝。

---------------開???搞----------------


系統版本:?centos6.3?x64(內核2.6.32)

DRBD:?????DRBD-8.4.3

HeartBeat:epel更新源(真坑)

NFS:???????系統自帶


HeartBeat?VIP:????192.168.7.90

node1?DRBD+HeartBeat:?????192.168.7.88(drbd1.example.com)

node2?DRBD+HeartBeat:???192.168.7.89?(drbd2.example.com)


(node1)為僅主節點端配置

(node2)為僅從節點端配置

(node1,node2)為主從節點都需配置


一.DRBD配置,傳送門:http://showerlee.blog.51cto.com/2047005/1211963


二.Hearbeat配置;


這里接著DRBD系統環境及安裝配置:


1.安裝heartbeat(CentOS6.3中默認不帶有Heartbeat包,因此需要從第三方下載)(node1,node2)

#?wget?ftp://mirror.switch.ch/pool/1/mirror/scientificlinux/6rolling/i386/os/Packages/epel-release-6-5.noarch.rpm

#?rpm?-ivUh?epel-release-6-5.noarch.rpm

#?yum?--enablerepo=epel?install?heartbeat?-y


2.配置heartbeat

(node1)

#?vi?/etc/ha.d/ha.cf

---------------

#?日志

logfile?????????/var/log/ha-log

logfacility?????local0

#?心跳監測時間

keepalive???????2

#?死亡時間

deadtime????????5

#?指定對方IP:

ucast???????????eth0?192.168.7.89

#?服務器正常后由主服務器接管資源,另一臺服務器放棄該資源

auto_failback???off

#定義節點

node????????????drbd1.example.com?drbd2.example.com

---------------

(node2)

#?vi?/etc/ha.d/ha.cf

---------------

#?日志

logfile?????????/var/log/ha-log

logfacility?????local0

#?心跳監測時間

keepalive???????2

#?死亡時間

deadtime????????5

#?指定對方IP:

ucast???????????eth0?192.168.7.88

#?服務器正常后由主服務器接管資源,另一臺服務器放棄該資源

auto_failback???off

#定義節點

node????????????drbd1.example.com?drbd2.example.com

---------------


編輯雙機互聯驗證文件:(node1,node2)

#?vi?/etc/ha.d/authkeys

--------------

auth?1

1?crc

--------------

#?chmod?600?/etc/ha.d/authkeys


編輯集群資源文件:(node1,node2)

#?vi?/etc/ha.d/haresources

--------------

drbd1.example.com?IPaddr::192.168.7.90/24/eth0?drbddisk::r0?Filesystem::/dev/drbd0::/data::ext4?killnfsd

--------------

注:該文件內IPaddr,Filesystem等腳本存放路徑在/etc/ha.d/resource.d/下,也可在該目錄下存放服務啟動腳本(例如:mysql,www),將相同腳本名稱添加到/etc/ha.d/haresources內容中,從而跟隨heartbeat啟動而啟動該腳本。


IPaddr::192.168.7.90/24/eth0:用IPaddr腳本配置浮動VIP

drbddisk::r0:用drbddisk腳本實現DRBD主從節點資源組的掛載和卸載

Filesystem::/dev/drbd0::/data::ext4:用Filesystem腳本實現磁盤掛載和卸載



編輯腳本文件killnfsd,用來重啟NFS服務:

注:因為NFS服務切換后,必須重新mount?NFS共享出來的目錄,否則會報錯(待驗證)

#?vi?/etc/ha.d/resource.d/killnfsd

-----------------

killall?-9?nfsd;?/etc/init.d/nfs?restart;exit?0

-----------------

賦予執行權限:

#?chmod?755?/etc/ha.d/resource.d/killnfsd



創建DRBD腳本文件drbddisk:(node1,node2)

注:

此處又是一個大坑,如果不明白Heartbeat目錄結構的朋友估計要在這里被卡到死,因為默認yum安裝Heartbeat,不會在/etc/ha.d/resource.d/創建drbddisk腳本,而且也無法在安裝后從本地其他路徑找到該文件。

此處本人也是因為啟動Heartbeat后無法PING通虛IP,最后通過查看/var/log/ha-log日志,找到一行

ERROR:?Cannot?locate?resource?script?drbddisk

然后進而到/etc/ha.d/resource.d/路徑下發現竟然沒有drbddisk腳本,最后在google上找到該代碼,創建該腳本,終于測試通過:


#?vi?/etc/ha.d/resource.d/drbddisk

-----------------------

#!/bin/bash

#

#?This?script?is?inteded?to?be?used?as?resource?script?by?heartbeat

#

#?Copright?2003-2008?LINBIT?Information?Technologies

#?Philipp?Reisner,?Lars?Ellenberg

#

###


DEFAULTFILE="/etc/default/drbd"

DRBDADM="/sbin/drbdadm"


if?[?-f?$DEFAULTFILE?];?then

??.?$DEFAULTFILE

fi


if?[?"$#"?-eq?2?];?then

??RES="$1"

??CMD="$2"

else

??RES="all"

??CMD="$1"

fi


##?EXIT?CODES

#?since?this?is?a?"legacy?heartbeat?R1?resource?agent"?script,

#?exit?codes?actually?do?not?matter?that?much?as?long?as?we?conform?to

#??http://wiki.linux-ha.org/HeartbeatResourceAgent

#?but?it?does?not?hurt?to?conform?to?lsb?init-script?exit?codes,

#?where?we?can.

#??http://refspecs.linux-foundation.org/LSB_3.1.0/

#LSB-Core-generic/LSB-Core-generic/iniscrptact.html

####


drbd_set_role_from_proc_drbd()

{

local?out

if?!?test?-e?/proc/drbd;?then

ROLE="Unconfigured"

return

fi


dev=$(?$DRBDADM?sh-dev?$RES?)

minor=${dev#/dev/drbd}

if?[[?$minor?=?*[!0-9]*?]]?;?then

#?sh-minor?is?only?supported?since?drbd?8.3.1

minor=$(?$DRBDADM?sh-minor?$RES?)

fi

if?[[?-z?$minor?]]?||?[[?$minor?=?*[!0-9]*?]]?;?then

ROLE=Unknown

return

fi


if?out=$(sed?-ne?"/^?*$minor:?cs:/?{?s/:/?/g;?p;?q;?}"?/proc/drbd);?then

set?--?$out

ROLE=${5%/**}

:?${ROLE:=Unconfigured}?#?if?it?does?not?show?up

else

ROLE=Unknown

fi

}


case?"$CMD"?in

????start)

#?try?several?times,?in?case?heartbeat?deadtime

#?was?smaller?than?drbd?ping?time

try=6

while?true;?do

$DRBDADM?primary?$RES?&&?break

let?"--try"?||?exit?1?#?LSB?generic?error

sleep?1

done

;;

????stop)

#?heartbeat?(haresources?mode)?will?retry?failed?stop

#?for?a?number?of?times?in?addition?to?this?internal?retry.

try=3

while?true;?do

$DRBDADM?secondary?$RES?&&?break

#?We?used?to?lie?here,?and?pretend?success?for?anything?!=?11,

#?to?avoid?the?reboot?on?failed?stop?recovery?for?"simple

#?config?errors"?and?such.?But?that?is?incorrect.

#?Don't?lie?to?your?cluster?manager.

#?And?don't?do?config?errors...

let?--try?||?exit?1?#?LSB?generic?error

sleep?1

done

;;

????status)

if?[?"$RES"?=?"all"?];?then

????echo?"A?resource?name?is?required?for?status?inquiries."

????exit?10

fi

ST=$(?$DRBDADM?role?$RES?)

ROLE=${ST%/**}

case?$ROLE?in

Primary|Secondary|Unconfigured)

#?expected

;;

*)

#?unexpected.?whatever...

#?If?we?are?unsure?about?the?state?of?a?resource,?we?need?to

#?report?it?as?possibly?running,?so?heartbeat?can,?after?failed

#?stop,?do?a?recovery?by?reboot.

#?drbdsetup?may?fail?for?obscure?reasons,?e.g.?if?/var/lock/?is

#?suddenly?readonly.??So?we?retry?by?parsing?/proc/drbd.

drbd_set_role_from_proc_drbd

esac

case?$ROLE?in

Primary)

echo?"running?(Primary)"

exit?0?#?LSB?status?"service?is?OK"

;;

Secondary|Unconfigured)

echo?"stopped?($ROLE)"

exit?3?#?LSB?status?"service?is?not?running"

;;

*)

#?NOTE?the?"running"?in?below?message.

#?this?is?a?"heartbeat"?resource?script,

#?the?exit?code?is?_ignored_.

echo?"cannot?determine?status,?may?be?running?($ROLE)"

exit?4?#??LSB?status?"service?status?is?unknown"

;;

esac

;;

????*)

echo?"Usage:?drbddisk?[resource]?{start|stop|status}"

exit?1

;;

esac


exit?0

-----------------------

賦予執行權限:

#?chmod?755?/etc/ha.d/resource.d/drbddisk


在兩個節點上啟動HeartBeat服務,先啟動node1:(node1,node2)

#?service?heartbeat?start

#?chkconfig?heartbeat?on


這里能夠PING通虛IP?192.168.7.90,表示配置成功


三.配置NFS:(node1,node2)

#?vi?/etc/exports

-----------------

/data????????*(rw,no_root_squash)

-----------------

重啟NFS服務:

#?service?rpcbind?restart

#?service?nfs?restart

#?chkconfig?rpcbind?on

#?chkconfig?nfs?off

這里設置NFS開機不要自動運行,因為/etc/ha.d/resource.d/killnfsd?該腳本內容控制NFS的啟動。


四.最終測試

在另外一臺LINUX的客戶端掛載虛IP:192.168.7.90,掛載成功表明NFS+DRBD+HeartBeat大功告成.

#?mount?-t?nfs?192.168.7.90:/data?/tmp

#?df?-h

---------------

......

192.168.7.90:/data???1020M???34M??934M???4%?/tmp

---------------

測試DRBD+HeartBeat+NFS可用性:

1.向掛載的/tmp目錄傳送文件,忽然重新啟動主端DRBD服務,查看變化

經本人測試能夠實現斷點續傳


2.正常狀態重啟Primary主機后,觀察主DRBD狀態是否恢復Primary并能正常被客戶端掛載并且之前寫入的文件存在,可以正常再寫入文件。

經本人測試可以正常恢復,且客戶端無需重新掛載NFS共享目錄,之前數據存在,且可直接寫入文件。


3.當Primary主機因為硬件損壞或其他原因需要關機維修,需要將Secondary提升為Primary主機,如何手動操作?

如果設備能夠正常啟動則按照如下操作,無法啟動則強行提升Secondary為Primary,待宕機設備能夠正常啟動,若“腦裂”,再做后續修復工作。

首先先卸載客戶端掛載的NFS主機目錄

#?umount?/tmp

(node1)

卸載DRBD設備:

#?service?nfs?stop

#?umount?/data

降權:

#?drbdadm?secondary?r0

查看狀態,已降權

#?service?drbd?status

-----------------

drbd?driver?loaded?OK;?device?status:

version:?8.4.3?(api:1/proto:86-101)

GIT-hash:?89a294209144b68adb3ee85a73221f964d3ee515?build?by?root@drbd1.example.com,?2013-05-27?20:45:19

m:res??cs?????????ro???????????????????ds?????????????????p??mounted??fstype

0:r0???Connected??Secondary/Secondary??UpToDate/UpToDate??C

-----------------

(node2)

提權:

#?drbdadm?primary?r0

查看狀態,已提權:

#?service?drbd?status

----------------

drbd?driver?loaded?OK;?device?status:

version:?8.4.3?(api:1/proto:86-101)

GIT-hash:?89a294209144b68adb3ee85a73221f964d3ee515?build?by?root@drbd2.example.com,?2013-05-27?20:49:06

m:res??cs?????????ro?????????????????ds?????????????????p??mounted??fstype

0:r0???Connected??Primary/Secondary??UpToDate/UpToDate??C

----------------

這里還未掛載DRBD目錄,讓Heartbeat幫忙掛載:

注:若重啟過程中發現Heartbeat日志報錯:

ERROR:?glib:?ucast:?error?binding?socket.?Retrying:?Permission?denied

請檢查selinux是否關閉

#?service?heartbeat?restart

#?service?drbd?status

-----------------------

drbd?driver?loaded?OK;?device?status:

version:?8.4.3?(api:1/proto:86-101)

GIT-hash:?89a294209144b68adb3ee85a73221f964d3ee515?build?by?root@drbd2.example.com,?2013-05-27?20:49:06

m:res??cs?????????ro?????????????????ds?????????????????p??mounted??fstype

0:r0???Connected??Primary/Secondary??UpToDate/UpToDate??C??/data????ext4

------------------------

成功讓HeartBeat掛載DRBD目錄


重新在客戶端做NFS掛載測試:

#?mount?-t?nfs?192.168.7.90:/data?/tmp

#?ll?/tmp

------------------

1??10??2??2222??3??4??5??6??7??8??9??lost+found??orbit-root

------------------

重啟剛剛被提權的主機,待重啟查看狀態:

#?service?drbd?status

------------------------

drbd?driver?loaded?OK;?device?status:

version:?8.4.3?(api:1/proto:86-101)

GIT-hash:?89a294209144b68adb3ee85a73221f964d3ee515?build?by?root@drbd2.example.com,?2013-05-27?20:49:06

m:res??cs????????????ro???????????????ds?????????????????p??mounted??fstype

0:r0???WFConnection??Primary/Unknown??UpToDate/DUnknown??C??/data????ext4

------------------------

HeartBeat成功掛載DRBD目錄,drbd無縫連接到備份節點,客戶端使用NFS掛載點對故障無任何感知。


4.測試最后剛才那臺宕機重新恢復正常后,他是否會從新奪取Primary資源?

重啟后不會重新獲取資源,需手動切換主從權限方可。

注:vi?/etc/ha.d/ha.cf配置文件內該參數:

--------------------

auto_failback???off

--------------------

表示服務器正常后由新的主服務器接管資源,另一臺舊服務器放棄該資源


5.以上都未利用heartbeat實現故障自動轉移,當線上DRBD主節點宕機,備份節點是否立即無縫接管,heartbeat+drbd高可用性是否能夠實現?

首先先在客戶端掛載NFS共享目錄

#?mount?-t?nfs?192.168.7.90:/data?/tmp

a.模擬將主節點node1?的heartbeat服務停止,則備節點node2是否接管服務?

(node1)

#?service?drbd?status

----------------------------

drbd?driver?loaded?OK;?device?status:

version:?8.4.3?(api:1/proto:86-101)

GIT-hash:?89a294209144b68adb3ee85a73221f964d3ee515?build?by?root@drbd1.example.com,?2013-05-27?20:45:19

m:res??cs?????????ro?????????????????ds?????????????????p??mounted??fstype

0:r0???Connected??Primary/Secondary??UpToDate/UpToDate??C??/data????ext4

----------------------------

#?service?heartbeat?stop

(node2)

#?service?drbd?status

----------------------------------------

drbd?driver?loaded?OK;?device?status:

version:?8.4.3?(api:1/proto:86-101)

GIT-hash:?89a294209144b68adb3ee85a73221f964d3ee515?build?by?root@drbd2.example.com,?2013-05-27?20:49:06

m:res??cs?????????ro?????????????????ds?????????????????p??mounted??fstype

0:r0???Connected??Primary/Secondary??UpToDate/UpToDate??C??/data????ext4

-----------------------------------------

從機無縫接管,測試客戶端是否能夠使用NFS共享目錄

#?cd?/tmp

#?touch?test01?

#?ls?test01

------------------

test01

------------------

測試通過。。。

b.模擬將主節點宕機(直接強行關機),則備節點node2是否接管服務?

(node1)

強制關機,直接關閉node1虛擬機電源

(node2)

#?service?drbd?status

-------------------------------

drbd?driver?loaded?OK;?device?status:

version:?8.4.3?(api:1/proto:86-101)

GIT-hash:?89a294209144b68adb3ee85a73221f964d3ee515?build?by?root@drbd2.example.com,?2013-05-27?20:49:06

m:res??cs????????????ro???????????????ds?????????????????p??mounted??fstype

0:r0???WFConnection??Primary/Unknown??UpToDate/DUnknown??C??/data????ext4

-------------------------------

從機無縫接管,測試客戶端是否能夠使用NFS共享目錄

#?cd?/tmp

#?touch?test02?

#?ls?test02

------------------

test02

------------------

待node1恢復啟動,查看drbd狀態信息:

#?service?drbd?status

------------------------------

drbd?driver?loaded?OK;?device?status:

version:?8.4.3?(api:1/proto:86-101)

GIT-hash:?89a294209144b68adb3ee85a73221f964d3ee515?build?by?root@drbd2.example.com,?2013-05-27?20:49:06

m:res??cs?????????ro?????????????????ds?????????????????p??mounted??fstype

0:r0???Connected??Primary/Secondary??UpToDate/UpToDate??C??/data????ext4

-------------------------------

node1已連接上線,處于UpToDate狀態,測試通過。。。


注:這里node1的heartbeat有幾率在關閉服務時,node2無法接管,所以有一定維護成本,因為本人線上未跑該服務,建議實際使用在上線前多做模擬故障演練,再實際上線。


-------大功告成----------


參考:酒哥的“構建高可用LINUX服務器”一書


本文出自?“一路向北”?博客,請務必保留此出處http://showerlee.blog.51cto.com/2047005/1212185

?

轉載于:https://blog.51cto.com/lucifer119/1222533

總結

以上是生活随笔為你收集整理的Centos6.3下DRBD+HeartBeat+NFS配置笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。