linux nfs drbd mount,Linux高可用(HA)集群筆記heartbeat+drbd+nfs

heartbeat+drbd

如果主服務器宕機,造成的損失是不可估量的。要保證主服務器不間斷服務,就需要對服務器實現冗余。在眾多的實現服務器冗余的解決方案中,heartbeat為我們提供了廉價的、可伸縮的高可用集群方案。我們通過heartbeat+drbd在Linux下創建一個高可用(HA)的集群服務器。

DRBD是一種塊設備,可以被用於高可用(HA)之中。它類似於一個網絡RAID-1功能。當你將數據寫入本地文件系統時,數據還將會被發送到網絡中另一台主機上。以相同的形式記錄在一個文件系統中。本地(主節點)與遠程主機(備節點)的數據可以保證實時同步。當本地系統出現故障時,遠程主機上還會保留有一份相同的數據,可以繼續使用。在高可用(HA)中使用DRBD功能,可以代替使用一個共享盤陣。因為數據同時存在於本地主機和遠程主機上。切換時,遠程主機只要使用它上面的那份備份數據,就可以繼續進行服務了。

安裝heartbeat

[root@manager src]# rpm -ivh e2fsprogs-1.35-7.1.i386.rpm

[root@manager src]# tar zxvf libnet.tar.gz

[root@manager libnet]# ./configure

[root@manager libnet]# make

[root@manager libnet]# make install

[root@manager src]# tar zxvf heartbeat-2.1.2.tar.tar

[root@manager src]# cd heartbeat-2.1.2

[root@manager heartbeat-2.1.2]# ./ConfigureMe configure

[root@manager heartbeat-2.1.2]# make

[root@manager heartbeat-2.1.2]# make install

[root@manager heartbeat-2.1.2]# cp doc/ha.cf /etc/ha.d/

[root@manager heartbeat-2.1.2]# cp doc/haresources /etc/ha.d/

[root@manager heartbeat-2.1.2]# cp doc/authkeys /etc/ha.d/

[root@manager heartbeat-2.1.2]# cd /etc/ha.d/

開始編輯配置文件(兩台機器上都需要安裝和配置)

(heartbeat的配置比較簡單,網上也有很多例子,這里就不多廢話了)

f64dec1564b737356ae1e5c0d9b456e8.gif

開始編譯安裝DRBD

[root@manager root]# cp drbd-8.2.1.tar.tar /usr/src/

[root@manager root]# cd /usr/src/

[root@manager src]# tar zxvf drbd-8.2.1.tar.tar

[root@manager src]# cd drbd-8.2.1

[root@manager src]# make KERNVER=2.6.17.11 KDIR=/usr/src/linux-2.6.17.11

如果編譯順利可以看到Module build was successful.

[root@manager drbd-8.2.1]# make install

可以編輯配置文件了

[root@manager drbd-8.2.1]# vi /etc/drbd.conf

在manager和manage_bak上都需要安裝drbd服務。

分別在兩台機器上配置好/etc/drbd.conf

[root@manager_bak root]# grep -v "#" /etc/drbd.conf

global {

usage-count yes;                  (是否參加使用者統計,yes為參加)

}

common {

syncer { rate 300M; }

}

resource r0 {

protocol C;                            (數據同步協議,C為收到數據並寫入后返回,確認成功)

disk {

on-io-error   detach;

size 100G;                         (由於實驗環境下兩台服務器硬盤大小不同,所以需要設置drbd的大小)

}

net {

after-sb-0pri disconnect;

rr-conflict disconnect;

}

syncer {

rate 300M;                           (設置網絡同步速率)

al-extents 257;

}

on manager_bak {

device     /dev/drbd0;

disk       /dev/sda3;

address    192.168.0.2:7788;

meta-disk  internal;

}

on manager {

device    /dev/drbd0;

disk      /dev/sdc;

address   192.168.0.1:7788;

meta-disk internal;

}

}

在啟動DRBD之前,需要創建供DRBD記錄信息的數據塊.分別在兩台主機上執行:

[root@manager ha.d]# drbdadm create-md r0

[root@manager ha.d]#mknod /dev/drbd0 b 147 0

[root@manager ha.d]# /etc/init.d/drbd srart

現在兩台主機都是備機狀態,都是”不一致”狀態,這是由於DRBD無法判斷哪一方為主機,以哪一方的磁盤數據作為標准數據。所以我們需要初始化,在manager上執行:

[root@manager /]#drbdsetup /dev/drbd0 primary –o

現在數據開始同步,可以用cat /proc/drbd查看數據同步的進度

等數據同步完查看DRBD的狀態

[root@manager /]# cat /proc/drbd

version: 8.2.1 (api:86/proto:86-87)

GIT-hash: 318925802fc2638479ad090b73d7af45503dd184 build by root@manager, 2007-12-05 16:40:14

0: cs:Connected st Primary/Secondary ds:UpToDate/UpToDate C r---

ns:1514 nr:1110 dw:2616 dr:2259 al:0 bm:482 lo:0 pe:0 ua:0 ap:0

resync: used:0/31 hits:2 misses:2 starving:0 dirty:0 changed:2

act_log: used:0/257 hits:202 misses:0 starving:0 dirty:0 changed:0

磁盤狀態都是”實時”,表示數據同步完成了。

[root@manager /]# mkfs.xfs /dev/drbd0

現在可以把manager上的DRBD設備掛載到/export目錄上進行使用。備機的DRBD設備無法被掛載,因為它是用來接收主機數據的,由DRBD負責操作。

[root@manager /]# mount /dev/drbd0 /export

[root@manager /]# df

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/sda1             10229696   3019636   7210060  30% /

/dev/drbd0           104806400   3046752 101759648   3% /export

現在把之前備份的/export中的所有內容再恢復回去。

如果不使用heartbeat的情況下,DRBD只能手工切換主從關系

現在修改heartbeat的配置文件,使DRBD可以通過heartbeat自動切換

[root@manager /]# vi /etc/ha.d/haresources

manager 192.168.0.3 drbddisk::r0 Filesystem::/dev/drbd0::/export::xfs  dhcpd xinetd portmap nfs

注釋:上面那行

manager                                              定義manager為heartbeat的主機

192.168.0.3                                         定義對外服務的IP地址,這個IP自動在主從機之間切換

drbddisk::r0                                         定義使用的drbd資源

Filesystem::/dev/drbd0::/export::xfs     定義掛載文件系統

dhcpd xinetd portmap nfs                    定義其他需要切換的服務(用空格隔開)

現在我們可以測試一下了

(dhcpd portmap nfs等需要切換的服務,應該先在兩台服務器上都配置好)

[root@manager root]# chkconfig –list

確定heartbeat和DRBD開機自啟動

確定需要由heartbeat切換的服務,開機不自啟動(由heartbeat來啟用相關的服務)

給gg1接通電源,通過pxe啟動系統(gg1是一組服務器中的一台,是一台無盤服務器,啟動后掛載在manager上保存的系統)

在manager上ssh gg1

[root@manager root]# ssh gg1

-bash-2.05b#

-bash-2.05b# arp -a

? (192.168.0.3) at 00:19:B9:E4:7D:22 [ether] on eth0

-bash-2.05b# ls

-bash-2.05b# touch test

-bash-2.05b# ls

test

現在在manager上關機或停止heartbeat服務

[root@manager root]# /etc/init.d/heartbeat stop

Stopping High-Availability services:                                                            [  OK  ]

到manager_bak上ifconfig

[root@manager_bak root]# ifconfig

可以看到eth1:0起來了,IP地址是192.168.0.3

[root@manager_bak root]# ssh gg1

-bash-2.05b#

-bash-2.05b# arp -a

? (192.168.0.3) at 00:19:B9:E5:3B:FC [ether] on eth0 (可以看到192.168.0.3的mac地址變了)

-bash-2.05b# ls

test

可以看到在manager上ssh上gg1后建立的test文件

-bash-2.05b# echo "this is test" > test

-bash-2.05b# cat test

this is test

可以看到現在gg1可以正常讀寫manager_bak上nfs出來的磁盤

現在把manager上的heartbeat服務啟動起來

[root@manager root]# /etc/init.d/heartbeat start

Starting High-Availability services:

2007/12/06_12:46:08 INFO:  Resource is stopped                                                   [  OK  ]

-bash-2.05b# cat test

this is test

現在終於大功告成了,之前在不使用drbd的情況下,heartbeat也可以切換apache、dhcpd、portmap、nfs等等服務,但是 nfs服務切換后,必須重新mount一下nfs共享出來的目錄,否則會報 Stale NFS file handle 的錯誤。現在heartbeat+drbd配合使用后,nfs等等服務可以無縫切換,不必再重新mount一下nfs目錄了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值