前言:在前面的博客中,通过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:红帽官方的集群套件----存在锁机制和推送机制.
敬请期待哦!