第一范文网 - 专业文章范例文档资料分享平台

Linux双机iSCSI Target实现方案

来源:用户分享 时间:2025/5/29 20:14:40 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

3 md5 Ctrip12#$

说明/etc/ha.d/authkeys文件的权限必须是600,否则heartbeat无法启动;

authkeys 用heartbeat来控制集群中的所有资源及服务。为保险起见,关闭Ubuntu系统中相关服务的开机自启动项,运行apt-get install sysv-rc-conf安装sysv-rc-conf,用字符组成的图形界面配置相关的系统启、停项:

按照提示提示关闭drbd、tgt在各个系统运行级别下的开机自启动配置; 在Ubuntu 6.04之后增加了upstart对系统所运行服务的监控,其中tgt服务在运行过程中会被upstart所监控,即使关闭tgt的开机自启动,系统启动后upstart仍然会拉起tgt服务,为避免备机上的tgt服务被upstart异常启动,修改配置文件/etc/init/tgt.conf:

保证ubuntu系统启动后tgt不会被自动拉起。

Heartbeat对系统的服务所有监控需依赖相关的双机脚本,其中对网卡状态、IP、DRBD、文件系统的监控,Heartbeat都已自带相关的启停、监控脚本,直接使用即可。对tgt服务的启停和监控需自行开发相关shell脚本。监控脚本的风格有ocf和lsb两种,其中status和monitor参数是用来监控资源的,非常重要,相关文档说明信息如下:

? ?

如果是LSB风格的脚本,运行/etc/init.d/tgtstatus时候,返回值包含OK或则running则表示资源正常 ,返回值包含No或者stopped则表示资源不正常。 如果是OCF风格的脚本,运行/etc/init.d/tgtmonitor时, 返回0表示资源是正常的,返回7表示资源出现问题。 本方案中使用lsb格式,例如在heartbeat监控tgt过程中,Heartbeat会不断的运行/etc/init.d/tgt status脚本,并根据返回值或者字符串判断服务是否正常。在方案测试过程中发现本方案中的Heartbeat3.0.5版本不是根据脚本返回的字符串判断服务状态,而是直接根据返回值判断。脚本返回0,Heartbeat认为相关服务正常,脚本返回1,Heartbeat认为相关服务异常。

安装tgt完成之后,tgt服务本身即是通过/etc/init.d/tgt start、/etc/init.d/tgt stop、/etc/init.d/tgt status三个脚本开启、停、监控tgt服务。似乎满足Heartbeat的LSB风格,但这三个脚本在运行之后其返回值均为0,这将导致Heartbeat一直认为服务正常,失去监控功能。

在本方案中对tgt脚本进行了二次封装,使其满足Heartbeat的LSB风格,其原理为自己新建一个脚本使其支持start、stop、status三个输入参数,其中核心仍然为调用tgt自带脚本,在新脚本中根据tgt脚本返回的字符串,判断服务正常与否、并返回相关的结果码,供heartbeat检测,该脚本必须在/etc/init.d目录下,新建/etc/init.d/tgt_ha,并增加执行权限:

#!/bin/bash checkstate() { echo `date` >> /home/gcf result=`service tgt status` ok=`echo $result | grep \ if [ $ok -gt 0 ]; then return 0 else return 1 fi } case \ 'start') servicetgt start sleep 1 checkstate if [ $? == 0 ]; then exit 0 else exit 1 fi ;; 'stop') servicetgt stop sleep 1 checkstate if [ $? == 0 ]; then exit 1 else exit 0 fi ;; 'restart') servicetgt restart exit 0 ;; 'status') checkstate if [ $? == 0 ]; then echo \ exit 0 else echo \ exit 1 fi;; *) echo \ exit 2;; esac

说明:该脚本只是根据tgt返回的字符串中是否含有“start/running”子字符串来判断服务的状态,监控还不够苛刻。如果为了更加严格的监控,可以用python或者其他语言写一个iSCSI的initiator,看看是不是可以挂载成功判断服务是否正常;

上述配置完成后,在两台机器上分别运行service heartbeat restart重启Heartbeat服务,在任意一机器上运行crm_mon -1,查看双机工作状态,待出现“Online: [ iscsi1 iscsi2 ]“字样后,在任意机器运行如下crm配置命令,系统会自动同步到双机上。

crm configure property start-failure-is-fatal=\crm configure rsc_defaults migration-threshold=3 #资源累计失败3次进行切换 crm configure rsc_defaults resource-stickiness=80 # failure-timeout表示检测到失败后,该失败信息的失效时间,该配置非常重要,默认为never。即表示:某台机器出现异常,Heartbeat将认为其一直有问题,资源切换到备机后,如果备机再出现问题,Heartbeat将无法自动切回主机,必须手动删除主机上的错误信息方可。通过该配置可以让相关的错误信息在90s之后自动失效,保证资源能正常回切。 crm configure rsc_defaults failure-timeout=90s tgt_hacrm configure property default-action-timeout=90s crm configure property stonith-enabled=\crm configure property no-quorum-poicy=ignore #配置tgt的服务IP,IP所在的网卡,以及监控时间等 crm configure primitive TGT_VIP ocf:heartbeat:IPaddr2 \\ paramsip=172.24.17.210nic=eth0 cidr_netmask=24 \\ op monitor interval=45s timeout=30s #配置drbd的资源名主、备机的监控时间等 crm configure primitive TGT_DRBD ocf:linbit:drbdparamsdrbd_resource=iscsiserver \\ op monitor interval=60s timeout=30s role=Slave \\ op monitor interval=45s timeout=30s role=Master \\ op start timeout=250s \\ op stop timeout=250s #配置drbd资源为热双机,必须在两台机器上同时运行,保证数据同步 crm configure msms_TGT_DRBD TGT_DRBD meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true #配置tgt运行所依赖的文件系统、文件格式、监控等; crm configure primitive TGT_FS ocf:heartbeat:Filesystemparams device=/dev/drbd0 directory=/iSCSIdatafstype=ext4 \\ op monitor interval=30s timeout=60s \\ op start timeout=60s \\ op stop timeout=60s #配置tgt服务资源; crm configure primitive TGT_SERVER lsb:tgt_ha \\ op monitor interval=15s timeout=30s on-fail=\op start timeout=90s \\ op stop timeout=30s \\ meta target-role=\ #将TGT_FS、TGT_VIP、TGT_SERVER三个资源组成一个资源组,资源组里资源会在同一台机器上运行,并按配置的顺序启动资源,按相反的顺序关闭资源 crm configure group TGT_iSCSI TGT_FS TGT_VIP TGT_SERVER #增加资源之间的约束条件,受约束的资源必须在同一机器上 crm configure colocation TGT_FS_with_ms_TGT_DRBDinf: TGT_FS ms_TGT_DRBD:Master #文件系统依赖drbd的主机 crm configure colocation TGT_SERVER_with_TGT_FSinf: TGT_SERVER TGT_FS 文件系统 crm configure colocation TGT_SERVER_with_TGT_VIPinf: TGT_SERVER TGT_VIP #tgt服务依赖#tgt服务依赖浮动IP #增加资源启停的顺序约束 crm configure order ms_TGT_DRBD_before_TGT_FSinf: ms_TGT_DRBD:promoteTGT_FS:start

完成上述配置后系统会在两台机器上生成/var/lib/heartbeat/crm/cib.xml配置文件。

CRM Configure.txt

在任意机器上运行crm_mon–i1,系统将每隔1s刷新显示双机上的资源、资源组的运行信息。

cib.xml

完成上述配置后,关闭主机tgt服务、卸载主机文件系统,heartbeat均能做出正确的反应,在主机上保证tgt服务可用。重启主机后系统也可正常切到备机上运行。

说明:该方案中双机之间只有一根心跳线(即直接通过业务网卡链路进行心跳通信),在特殊的网络条件下可能造成双机的脑分裂(双机之间不通,但均与外部系统相通),这种情况可忽略不考虑。由于是直接通过业务网卡进行心跳通信,一般情况下如果双机之间如果心跳出现问题,可认为其中一台机器已经断开生产环境网络连接,此场景下即使两台机器都被拉为主机,由于其中一台已经断开生产环境,不会对生产环境的其他网元造成影响。

搜索更多关于: Linux双机iSCSI Target实现方案 的文档
Linux双机iSCSI Target实现方案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8kcps01cm775clm2zb5e_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top