前言:在前面的博客中,通过LVS+Heartbeat+Ldirector+NAS实现了Web的负载均衡群集LB,以及LVS的高可用群集HA,并且结合了NAS(NFS、Squid)存储技术.由于NAS(网络附加存储)是基于文件级别的共享,在客户端看到的只是一个文件夹的概念.这导致存储的速度和效率不是很高,那我们自然就会想到怎么样来提高读取速度呢?基于块级别的共享的SAN(存储区域网络)就应运而生了。SAN后方的真正存储介质是磁盘或分区,读写效率很高.SAN根据接口类型可分为:FC-SAN(光纤通道式存储区域网络)和IP-SAN(基于iSCSI流高速交换存储网络)。由于FC-SAN采用的是光纤通道,需要专门的光纤熔接设备以及光纤交换设备的支持,所以一般中小型企业都不会应用到。IDC机房才有可能应用这种FC-SAN。IP-SAN是一种投资相对较小的一种存储方案,对于一般的企业会应用的比较广泛,只要具有普通的网卡和交换设备就可以假设一个IP-SAN,虽然存储的速度没有光纤速度快,但对于企业的一般应用而言,已经够用了。今天我们通过ISCSI来实现IP-SAN。

ISCSI 工作流程分析当ISCSI主机 应用程序发出数据读写请求后,操作系统会生成一个相应的SSCI命令,该命令在iSCSI initiator层会被封装成ISCSI消息包并通过TCP/IP传送到设备执行;设备执行SCSI命令后的响应,再经过设备侧iSCSI Target层时会被封装成ISCSI响应PDU,通过TCP/IP网络传送给主机的ISCSI initiator层,ISCSI initiator会从ISCSI响应PDU里解析出SCSI响应并传送给操作系统,操作系统响应给应用程序。

拓扑规划

说明:沿用上次实验拓扑,将后方存储改为IP-SAN(ISCSI)


配置详情:

【Target】(采用分区)

Step1:安装target服务所需的rpm包,并启动服务.


service  tgtd  start

Step2:对磁盘进行分区,添加一个新的分区作为Target.

①查看当前的分区信息.


②对磁盘进行分区操作.


③将新的分区信息写入分区表.

Step3:通过target的工具tgtadm添加新的ISCSI Target.

①创建

tgtadm --lld iscsi --op new --mode target --tid=1 --targetname iqn.2013-06.com.a.target:disk

②显示

tgtadm --lld iscsi --op show --mode target

Step4:添加新的存储设备.

tgtadm --lld iscsi --op new --mode=logicalunit --tid=1  --lun=1 --backing-store /dev/sda4

Step5:增加访问策略ACL,指定哪些用户可以访问.

tgtadm --lld iscsi --op bind --mode=target --tid=1 --initiator-address=192.168.1.0/24


Step6:将配置添加到服务的配置文件中,使开机自动运行.

vim  /etc/tgt/targets.conf

【Initiator】(2台Web RealServer配置一样)

Step1:安装initiator服务所需的rpm包,并启动服务.

rpm -ivh iscsi-initiator-utils-6.2.0.871-0.10.el5.i386.rpm

service  iscsi  start

Step2:使用iscsi的工具iscsiadm向target发送discovery发现报文.

Step3:initiator端进行login登入测试,并查看本地的磁盘信息.

Step4:Target端查看在线用户状况.

Step5:initiator端对新的磁盘进行分区、格式化、挂载。

fdisk /dev/sdb

mkfs -t ext3 /dev/sdb1

mount /dev/sdb1  /var/www/html

在上面的登入过程中,只是简单通过策略ACL来控制IP的的范围,并没有真正意义上进行认证操作,下面通过CHAP来对登入进行控制.

【CHAP认证】

一:单向认证--->initiator端认证

单向认证(initiator认证):是当Initiator进行login操作时,向Target端发送CHAP认证请求,Target端将账号发送给认证客户端,即:单项认证是客户端通过Taget的账号进行认证的,Initiator认证可以在没有target认证时应用才可以.

Step1:在Target端建立认证账号和密码.

注意:虽然iSCSI CHAP认证密码长度必须介于12到16个字符短密码亲测也行

tgtadm --lld iscsi --mode account --op new --user root --password 123456

Step2:将建的账号与Targer id进行绑定.

tgtadm --lld iscsi --mode account --op bind --tid 1 --user root

Step3:initiator端编辑配置文件,添加CHAP认证选项.

vim  /etc/iscsi/iscsid.conf

Step4:initiator端进行登入验证操作

注意:

①登入前的状态必须是登出的,可以先执行先执行下面的命令.

iscsiadm -m node -T iqn.2013-06.com.a.target:disk -p 192.168.1.1 --logout

②登入验证前必须先发送discovery发现报文给target端.

iscsiadm -m discovery -t sendtargets -p 192.168.1.1

③登入操作

iscsiadm -m node -T iqn.2013-06.com.a.target:disk -p 192.168.1.1 --login


④查看initiator日志信息


⑤查看target端的在线用户信息.


⑤登出操作

iscsiadm -m node -T iqn.2013-06.com.a.target:disk -p 192.168.1.1 --logout

细心的博友估计会发现:

我们怎么知道他到底登陆的时候有没有进行CHAP验证呢?

下面我们通过一个测试来说明在此过程中确实进行了CHAP验证.

①我们在initiator端的配置文件中故意把验证密码改成错误.

②登入验证测试(登入前必须保证处于logout状态)


③查看日志的出错信息



二:双向认证--->Mutul认证、互相认证-->Target认证

双向认证(Target认证):要求initiator认证target认证被同时应用才可以,也就是说,initiator和target需要相互认证.。

Step1:在Target端建立outgoing认证账号和密码.

tgtadm --lld iscsi --op new --mode account --user logout --password 654321

Step2:在Target端将outgoing账号绑定给TID1.

tgtadm --lld iscsi --mode account --op bind --tid 1 --user logout --outgoing

将配置添加到配置文件中,使开机能够启动.


Step3:initiator端编辑配置文件,添加CHAP双向认证选项.

vim  /etc/iscsi/iscsid.conf


Step4:initiator端进行登入验证操作

注意:

①登入前的状态必须是登出的,可以先执行先执行下面的命令.

iscsiadm -m node -T iqn.2013-06.com.a.target:disk -p 192.168.1.1 --logout

②登入验证前必须先发送discovery发现报文给target端.

iscsiadm -m discovery -t sendtargets -p 192.168.1.1

③登入操作

iscsiadm -m node -T iqn.2013-06.com.a.target:disk -p 192.168.1.1 --login


initiator端日志信息查看


⑤target在线用户信息查看.


Step5:测试双向认证是否生效.

①我们在initiator端的配置文件中故意把outgoing验证密码改成错误.

initiator端日志信息查看


target日志信息查看


总结分析:

   通过上面的实验,我们基本上了解了ISCSI的配置过程,但它存在一个致命的缺点,就是它没有锁机制和推送机制.这就会导致很多的问题,使得应用起来很不方便.

下次博客中,小编会给大家介绍一种更加好用的IP-SAN.RHCS:红帽官方的集群套件----存在锁机制和推送机制.

敬请期待哦!