Linux 高可靠性 NFS集群.docx
- 文档编号:17995668
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:19
- 大小:367.60KB
Linux 高可靠性 NFS集群.docx
《Linux 高可靠性 NFS集群.docx》由会员分享,可在线阅读,更多相关《Linux 高可靠性 NFS集群.docx(19页珍藏版)》请在冰点文库上搜索。
Linux高可靠性NFS集群
∙ NFS是Unix世界最通用共享文件系统的方式,NFSServer常扮演企业中重要的FileServer。
但是实务应用上时常遇到一个问题,当NFSServercCrash会造成所有NFSClient相关Session无法正常运作及终止。
问题严重时,甚至NFSClient及Server都需reboot才能解决问题。
关于此问题,笔者尝试用RedHatClusterSuite架构HA的机制来解决此问题,当主要的NFSServer故障时,另一台备用的NFSServer能立刻接手继续提供NFS服务。
测试环境
软件
RedHatEnterpriseLinuxES版Update2
RedHatClusterSuiteUpdate2
硬件
x86服务器两台
两张网络卡
AdaptecSCSICard29320-R两张
ProwareRackmount3000I3磁盘阵列
图1:
ProwareRackmount3000I3磁盘阵列
操作步骤:
1.HighAvailabilityNFSCluster架构规划
笔者测试架构的简图如图2。
主要服务器node1的ip为192.168.0.201,备用服务器node2的ip为192.168.0.202,整个HACluster对外的serviceip为192.168.0.200。
图2:
HighAvailabilityNFSCluster架构图
2.设置ProwareRackmount3000I3磁盘阵列
这款磁盘阵列,很容易便可从面板上的「Sel」键设置成RAID5的磁盘(可参考其安装手册第五章)。
假如SCSI排线连接正确,从node1或node2执行「hwbrowser」应可看到ProwareRackmount上的ShareDisk(图3)。
图3:
hwbrowser画面
3.安装RedHat集群管理员套件
用root登入node1安装clumanager与redhat-config-cluster套件才能设置RedHat集群管理员,将光盘收入光驱中,便会自动执行安装程序(图4)。
请选取「clumanager」及「redhat-config-cluster」套件进行安装(图5);在node2亦重复此步骤。
图4:
RedHat集群管理安装画面
图5:
选取「clumanager」及「redhat-config-cluster」套件
或利用rpm方式安装:
[root@node2RPMS]#rpm-ivhclumanager-1.2.12-1.i386.rpm
[root@node2RPMS]#rpm-ivhredhat-config-cluster-1.0.2-1.1.noarch.rpm
[root@node1root]#rpm-qa|grepclu
clumanager-1.2.12-1
redhat-config-cluster-1.0.2-1.1
4.编辑/etc/hosts
[root@node1root]#vi/etc/hosts
127.0.0.1localhost.localdomainlocalhost
192.168.0.201node1
192.168.0.202node2.node2
并将此文件scp至node2
[root@node1root]#scp/etc/hostsnode2:
/etc/hosts
5.设置集群共享分区(ConfiguringSharedClusterPartitions)
共享集群共享分区是用来存放集群的状态信息,存放内容如下:
集群锁定状态
服务状态
设置信息
每一个成员将会定期的写入它的服务状态到共享的储存空间,共需要建立两个集群共享分区:
primary及shadow。
假如primary的共享分区毁损了,集群成员还可以从shadow或备用共享分区读取信息,并且在同时修复primary分区,资料的一致性是透过检查码(checksums)来维护,而且任何在两个分区间的不一致资料将会自动地修正。
假如一个成员在开机时无法写入两个共享的分区,它将不被允许加入集群。
集群共享分区的需求如下:
两个分区至少需要10MB的空间
共享的分区必须是raw装置,它们不能含有文件系统。
共享分区只能由集群的状态与设置信息所使用
[root@node1root]#fdisk-l/dev/sdb
Disk/dev/sdb:
80.0GB,80018931712bytes
255heads,63sectors/track,9728cylinders
Units=cylindersof16065*512=8225280bytes
Command(mforhelp):
p <-印出现有partitiontable
Disk/dev/sdb:
80.0GB,80018931712bytes
255heads,63sectors/track,9728cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
Command(mforhelp):
n <-新增第一个共享分区
Commandaction
eextended
pprimarypartition(1-4)
p
Partitionnumber(1-4):
1
Firstcylinder(1-9728,default1):
Usingdefaultvalue1
Lastcylinderor+sizeor+sizeMor+sizeK(1-9728,default9728):
+20M
Command(mforhelp):
<-新增第二个共享分区
Commandaction
eextended
pprimarypartition(1-4)
p
Partitionnumber(1-4):
2
Firstcylinder(4-9728,default4):
Usingdefaultvalue4
Lastcylinderor+sizeor+sizeMor+sizeK(4-9728,default9728):
+20M
Command(mforhelp):
p
Disk/dev/sdb:
80.0GB,80018931712bytes
255heads,63sectors/track,9728cylinders
Units=cylindersof16065*512=8225280bytes
DeviceBootStartEndBlocksIdSystem
/dev/sdb1132406683Linux
/dev/sdb24624097+83Linux
Command(mforhelp):
w <-写入partitiontable
Thepartitiontablehasbeenaltered!
Callingioctl()tore-readpartitiontable.
WARNING:
Re-readingthepartitiontablefailedwitherror16:
设备或系统资源忙碌中.
Thekernelstillusestheoldtable.
Thenewtablewillbeusedatthenextreboot.
Syncingdisks.
[root@node1root]#reboot <-重新启动
6.建立raw装置
在设置集群共享分区后,请在分区上建立raw装置,共享的分区上不能含有文件系统。
要建立一个raw装置,必需编辑/etc/sysconfig/rawdevices文件案来系结一个raw字符装置到适当的区块装置以使得该raw装置可以被开启、读取与写入。
[root@node1root]#cat/etc/sysconfig/rawdevices
#rawdevicebindings
#format:
#
#example:
/dev/raw/raw1/dev/sda1
#/dev/raw/raw285
/dev/raw/raw1/dev/sdb1
/dev/raw/raw2/dev/sdb2
[root@node2root]#cat/etc/sysconfig/rawdevices
#rawdevicebindings
#format:
#
#example:
/dev/raw/raw1/dev/sda1
#/dev/raw/raw285
/dev/raw/raw1/dev/sdb1
/dev/raw/raw2/dev/sdb2
编辑完/etc/sysconfig/rawdevices文件后,可以重新开机或者是执行下列指令来使其生效。
#servicerawdevicesrestart
#使用raw-aq指令可查询所有的raw装置
[root@node1root]#raw-aq
/dev/raw/raw1:
boundtomajor8,minor17
/dev/raw/raw2:
boundtomajor8,minor18
7.设置集群名称
选择『主选单』=>『系统设置』=>『服务器设置』=>『集群』。
或在shell提示符号下输入redhat-config-cluster指令。
图6:
设置集群名称
8.设置ShareRawDevice
选择redhat-config-cluster上的「Cluster」=>「SharedState」便可看到图7的画面,填入正确的RawDevice。
图7:
ShareRawDevice
9.新增ClusterMember
选取「Member」,再点选「新增」的按钮(图8)。
程序将会要求输入Member名称。
请输入Cluster中一部系统的主机名称或地址,请注意每一个Member必须位于与执行redhat-config-cluster的机器在同一子网络中,而且必须在DNS或每一部集群系统的/etc/hosts文件中已经定义了。
请新增两个ClusterMember「node1」及「node2」。
(图9)
图8:
新增ClusterMember
图9:
nfs_cluster的成员
10.设置FailoverDomain
「FailoverDomain」是指提供某种服务,可互相备用的主机集合。
一个FailoverDomain含有下列的特征:
Unrestricted—指派给这个网域的一项服务可以在任何可用的成员(包括不列在此FailoverDomain内的主机)上执行
Restricted—指派给这个网域的一项服务只能可以在FailoverDomain可用的成员上执行。
Unordered—当一项服务被指派给一个Unordered的FailoverDomain,服务将执行于其上的成员将于未经优先级排列的可用FailoverDomain成员中来挑选。
Ordered—允许您在一个FailoverDomain中的成员间指定一个优先级,在清单顶部的成员便是最优先的,接下来便是清单中的第二个成员,依此类推。
选择「FailoverDomain」的卷标页,再点选「新增」的按钮。
将会出现如图10所示的「FailoverDomain」对话窗口。
图10:
「FailoverDomain」对话窗口
勾选「Restrictfailovertoonlythesemembers」防止在这里未列出的任何成员接手指派给这个网域的一项服务。
勾选「OrderedFailover」依据网域中成员清单的位置来决定接管服务的优先权,较优先的成员将位于顶端。
图11:
设置「FailoverDomain」的属性
11.激活NFS服务器
要建立HighAvailabilityNFS服务,每一部集群成员都必须激活NFS服务
#servicenfsstart<--马上激活NFS服务
#chkconfignfson<--重开机后亦自动激活NFS服务
还有一点需特别注意:
文件系统挂载以及集群NFS服务所相关的汇出不应该收录在/etc/fstab或/etc/exports文件中。
12.利用「NFSDruid」来快速设置一个客户端可存取的NFS共享
a.激活Cluster服务:
「Cluster」=>「StartClusterService」
b.激活NFS设置向导:
「Cluster」=>「Configure」=>「AddExports」=>
「NFS」
你将会看到如图12的画面,然后按下「Forward」。
图12:
NFSDruid画面
c.利用「NFSDruid」将/dev/sdbexport给NFSClient,目录名称为/data,步骤如图13~图15。
这个部份有几点需特别注意:
ServiceName—在集群中用来辨识这个服务所使用的名称
ServiceIP—集群的NFS服务将被指定一个浮动的IP地址,以用来与集群服务器的IP地址做区分,这个IP地址称为「ServiceIP」。
NFSClient存取NFS,是透过ServiceIP而不是node1或node2的真实IP。
这是为了不让NFSClient知道是集群内那台服务器提供服务。
这个浮动的IP位址将会设置在主要服务器(Master,在本例中是node1)。
藉由使用这个方法,NFS客户端只知道浮动IP地址,而不知道已经配置了集群的NFS服务器的事实。
如果主要服务器故障(node1),则此ServiceIP会移转至备用服务器(node2),如些一来,当主要服务器故障,备用服务器接管NFS服务,NFSClient完全不用做任何异动。
避免使用exportfs–r
exportfs-r指令将移除在/etc/exports文件中没有特别指定的任何export资讯,执行这个指令将会导致集群的NFS服务变得无法被存取(直到服务被重新激活)。
由于这个原因,建议您避免于已设置高存取性之NFS服务的集群中使用exportfs-r指令。
如要回复不经意使用exportfs-r指令,必须先停止然后再重新激活NFS集群服务。
图13:
export与Client选项
图14:
设置ServiceName与ServiceIP
图15:
选择export的Device
在「NFSDruid」的最后,点选「套用」来建立这个服务。
并从「集群设置工具」中选择「文件」=>「储存」来储存设置。
13.将node1的/etc/cluster.xml复制至node2
集群设置工具将集群服务与系统程序、集群成员与集群服务的信息储存在/etc/cluster.xml配置文件。
所以当node1巳完成设置后,请将/etc/cluster.xml复制至node2上,并激活node2上的「clumanager」程序。
[root@node1root]#scp/etc/cluster.xmlnode2:
/etc/cluster.xml
root@node2'spassword:
cluster.xml100%1405
[root@node2root]#serviceclumanagerstart
StartingRedHatClusterManager...
LoadingWatchdogTimer(softdog):
[OK]
StartingQuorumDaemon:
14.修改node1及node2上的/etc/syslog.conf指定ClusterLog存放位置。
[root@node1root]#vi/etc/syslog.conf
#Addforcluster
local4.*/var/log/cluster
#servicesyslogrestart
[root@node2root]#vi/etc/syslog.conf
#Addforcluster
local4.*/var/log/cluster
#servicesyslogrestart
15.查看集群状态
选择『集群』=>『设置』显示集群状态(图16)。
图16:
集群状态图
16.测试HighAvailabilityNFSCluster,下面是笔者的测试过程,用此来证明当node1Crash时,node2确实可TakeOverNFS服务,达到HighAvailability目的。
[root@ftproot]#showmount-e192.168.0.200
Exportlistfor192.168.0.200:
/data*
[root@ftproot]#mkdir/mnt/nfs
[root@ftproot]#mount192.168.0.200:
/data/mnt/nfs
[root@ftproot]#mount
...........
...........
192.168.0.200:
/dataon/mnt/nfstypenfs(rw,addr=192.168.0.200)
[root@ftproot]#cd/mnt/nfs
此时将node1电源关掉或执行「poweroff」指令仿真node1Crash
[root@ftpnfs]#ls
此时大约会hang5~10秒,node1便接管NFS服务,ls指令执行结果便会出现。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 高可靠性 NFS集群 可靠性 NFS 集群