Linux双机iSCSI Target实现方案
本文介绍了一种通过开源软件模拟存储设备的实现方案。存储设备最重要的特性是数据的安全性、系统的可靠性,它通过Raid1、Raid5等方案实现数据安全性,使用冗余控制卡、连接器等措施实现系统的可靠性。目前在Windows、Linux系统环境中都存在各种各样可以模拟iSCSI Target的软件,但是由于其系统、软件本身的可靠性很难用于生产环境。本方案通过Linux上双机控制软件、数据同步软件、iSCSITarget软件的配合使用实现一种较可靠的软件数据存储方案。
原理说明:
DRBD(Distributed Replicated Block Device)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。能将数据在服务器之间实时、透明传输,保证数据的同步。DRBD的核心功能通过Linux的内核实现,其性能接近系统的IO栈。
Heartbeat是一个高可用集群系统解决方案,它能管理集群中的资源(磁盘、IP、服务等),实时监控集群中的各种资源,能通过重新挂载、重启服务、故障转移等措施保证集群中服务的高可用。
TGT是Linux环境上用于构建iSCSI Target的服务,它配置简单,应用广泛。能将普通Linux机器模拟成一台iSCSI的存储设备。 本方案中配合使用上述三种软件,完成软件iSCSI Target存储方案。
系统可靠性可分为:主机设备级、组网网元级、应用系统级,该方案中暂不考虑主机设备级和组网级的故障。主要考虑到网元级、应用系统级的故障。系统中: 1. 用Heartbeat软件管理两台Linux机器组成双机,并监控其浮动IP、硬盘、服务等资源。 2. DRBD网元采用热双机方式部署,DRBD管理两台Linux机器上的硬盘形成Raid1,通过
DRBD存储文件时,其数据会实时在两台机器的硬盘上存储,以保证数据安全性。 3. TGT网元采用冷双机方式部署,TGT将本地磁盘上的数据虚拟为存储,TGT服务依赖浮
动IP和DRBD的主节点,其中资源之间的依赖关系由Heartbeat统一管理。
软件安装
软硬件资源说明
Linux系统采用Ubuntu12.04,上述的其他软件都采用Ubuntu源中自带版本,两台Ubuntu配置一样,运行上述三种软件所需系统资源很少,2核512M内存足够,但要求系统配置2块磁盘(同一块磁盘的两个分区也行,但不推荐),其中一块用于安装Ubuntu及上述三款软件,10G足够。另一块磁盘配合另一台机器组成Raid1存储数据,可根据实际情况自行分配。两台机器上用于存放数据的磁盘容量需保证一致。在实际部署时如果Ubuntu运行在EXSI或者OpenStack等虚拟机环境中时,需确保这两台机器分别运行在不同的宿主机上,否则数据安全性将变为空谈。
注意:不要使用Ubuntu14.04,因为该发行版所带heartbeat中的pacemaker(版本为1.1.10)模块存在严重bug,在启用heartbeatv2模式时将导致系统反复重启。
实验环境说明
实验环境在EXSI虚拟机中运行,其主机名、IP、磁盘资源配置如下: 机器名 IP 浮动IP 系统磁盘 数据磁盘 iSCSI1 172.24.17.211 /dev/sda /dev/sdb 172.24.17.210 iSCSI2 172.24.17.212 /dev/sda /dev/sdb 在这两台机器的hosts文件中分别添加对方机器名和IP的对应关系,以保证双机能互相解析主机名。
安装、配置DRBD
Ubuntu系统安装完成后,两台机器分别通过其aptitude工具自动安装drbd8-utils。 通过系统fdisk别对/dev/sdb磁盘进行分区操作,新建/dev/sdb1。
DRBD的配置文件为:/etc/drbd.conf。该配置文件没有具体的配置信息。具体配置文件为/etc/drbd.d/目录下的全局配置文件global_common.conf及相关的资源配置文件。配置global_common.conf内容如下: global { usage-count no; #不统计使用次数 } common { protocol C; #使用最可靠的数据同步方式,确保对方数据同步磁盘成功 startup { } disk { on-io-error detach; #发生错误时,进行分离操作 } net { #配置DRBD两个节点之间的鉴权信息 cram-hmac-alg sha1; shared-secret \ } syncer { rate 60M; } } #数据同步时最大带宽限制,可影响drbd的IO速度
注:上述配置虽简单,但功能测试成功,不要随意增加配置项,尤其是超时相关的配置项,否则会导致Heartbeat双机切换失败(除非你明确知道相关配置项对系统的影响);
global_common.conf新建一个资源配置文件:/etc/drbd.d/iscsiserver.res resourceiscsiserver{ meta-disk internal; device /dev/drbd0; on iSCSI1 { address 172.24.17.211:7789; disk /dev/sdb1; } on iSCSI2 { address 172.24.17.212:7789; disk /dev/sdb1; } }
将上述两个配置文件分别拷贝到iSCSI1和iSCSI2机器,分别在两台机器上运行: 1. drbdadm create-md iscsiserver,在两台机器上创建iscsiserver资源,资源名
称必须和/etc/drbd.d/*.res配置文件中设定的一致。 2. service drbd start,在两台机器上启动drbd。
在其中任意一台机器上运行drbd-overview可以看到,两块磁盘的数据块开始同步:
iscsiserver.res
3. 磁盘数据块同步完成后在某一主机上运行drbdadm -- --overwrite-data-of-peer
primary all在该机器上激活/dev/drbd0块设备。
4. 通过mkfs工具对/dev/drbd0磁盘格式化操作(不要进行分区操作),根据提示可能
需要重启系统。
注意:运行drbdadmsecondary all可以去激活/dev/drbd0 (此命令将drbd0切换到备用机上)
在一台机器上激活/dev/drbd0并挂载后写入某文件,卸载去激活后,在另一台机器上激活挂载后,如果能看到相同的文件,则证明drbd配置成功。
安装、配置TGT
两台机器分别通过系统自带的aptitude工具自动安装tgt。 tgt服务的配置文件是/etc/tgt/targets.conf,该配置文件采用xml格式,在iSCSI1和iSCSI2上该配置文件需保证一致;
include /etc/tgt/conf.d/*.conf
在iSCSI1和iSCSI2上分别新建/iSCSIdata目,在某一台机器上运:
drbdadm -- --overwrite-data-of-peer primary all激活drbd主机,出现/dev/drbd0块设备
运行mount /dev/drbd0 /iSCSIdata,将/dev/drbd0挂载到/iSCSIdata目录
运行dd if=/dev/zero of=/iSCSIdata/File.disk count=2 bs=1G命令在/iSCSIdata中分别新建一个所需的lun文件;
运行service tgt start启动tgt服务;
安装、配置Heartbeat
两台机器分别通过系统自带的aptitude工具自动安装heartbeat。
Heartbeat存在v1和v2两种模式,v1模式用于较粗糙的监控,只有主机宕机,或者心跳断线超时才会触发资源组的切换。无法对资源组内每个资源如IP、文件系统、服务进程的单独监控,v2模式中采用CRM(Cluster Resource Monitor)细致地对每个资源进行监控。
采用v2模式时,Heartbeat有如下三个配置文件: 1. /etc/ha.d/ha.cf #用于配置集群中的节点,心跳端口等基础配置 2. /etc/ha.d/authkeys #配置双机之间的相互鉴权信息
3. /var/lib/heartbeat/crm/cib.xml #heartbeat所监控的资源、资源组、监控脚本、监
控间隙等操作,是Heartbeat的核心配置项
说明:/etc/ha.d/haresources为Heartbeat在v1模式下的配置项,使用v2模式时该配置文件无效。
在/usr/share/doc/heartbeat目录里找到ha.cf、haresources、authkeys三个配置文件的模板,将其拷贝解压到/etc/ha.d目录下,修改配置之;
/etc/ha.d/ha.cf配置文件有效信息: logfile /var/log/ha-log #日志文件路径 logfacility local0 #日志等级 keepalive 2 #双机心跳检测时间间隔 deadtime 30 #双机心跳超时判断失败时间 warntime 10 #双机心跳超时警告时间 initdead 90 #系统启动后90s开始双机心跳 udpport 694 #双机心跳所用端口,须在ucast之前配置 ucast eth0 172.24.17.211 #双机对端节点的IP地址 auto_failback off #主机故障恢复后是否主动回切 node iSCSI1 #双机节点信息 node iSCSI2 ping 172.24.17.201 #网关信息 crm on #开启heartbeat的v2模式
iSCSI1和iSCSI2上的该配置文件应保持一致(除ucast配置的对端IP地址)。 /etc/ha.d/authkeys配置文件有效信息: auth 3 ha.cf
相关推荐: