负载均衡中SNA的ip-can(iscs使用示例i)
虽然上篇博文的方法已经提高了冗余及安全性,但是可以看出两个网站是存放在不同的服务器上的,在实际的工作中,两个网站的内容是完全一样的,并且,它们要有数据的互动性,而上面的实例中,可以看出没有数据同步的弊端,因此,我们为了达到数据同步的需求,我们可以把整个网站放在一个硬盘上,让两个服务器都向这块硬盘来存取数据。
数据存储的方法有三类:
1. DAS(direct attach storage) 直接附加存储:通常是服务器即开启服务,又存在数据库
2. NAS(network attach storage) 网络附加存储:服务器开启服务,在另一台主机上开启文件共享服务器,如;samba
3. SAN(storage area network ) 存储区域网络:服务器开启服务,在另一台主机上有存放数据的硬盘。
前面两种我们在前面都已经做过实验,今天我们使用第三种方法来实现
在开始实验之前,我们应该先知道一些知识
SAN的实现有两种方法,一种是fc-san(fiber channel)它是一种使用光纤通道的方法,速度和性能方面都比较优秀,但是实现起来代价比较高,还有一种代价小的实现ip-san也就iscsi,它的性能等方面不如前一种,但是在中小企业中还是有能力实现基本的网络需要的,本次实验使用ip-san来实现
Ip-san又名iscsi,它是由发起者(initiator)与存储(target)共同实现,我们的两个服务器就相当于initiator而新加入的只充当一个存储的主机就是targret,下面我们通过实验来讲解。
一. target配置
1. 增加一台主机,名称为:target ip地址:192.168.2.30
名称:[root@localhost cdrom]# hostname target
并且新增加一块硬盘,硬盘名称为/dev/sdb
2. 安装tatget软件
配置yum软件源target软件存放在ClusterStorage中,所以要把这个源也写入
安装
[root@localhost cdrom]# yum install scsi-target-utils
3. target的实现可以使用直接键入代码也可以写入配置文件,但是前者只要关机或重启服务,配置就会消失,所以我们使用写入配置文件的方法来实现
4. 配置主文件
<target iqn.2012.12.com.a.target:disk> //iqn名字,它的书写规则是:iqn.日期(年.月).反域名(如a.com应写成com.a).string(通常写主机名):子串(通常是描述)
backing-store /dev/sdb //使用的硬盘
initiator-address 192.168.2.0/24 //允许连接的主机
</target>
5. 开启服务
[root@localhost ~]# service tgtd start
Starting SCSI target daemon: [ OK ]
6. 查看配置
[root@localhost ~]# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2012.12.com.a.target:disk
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: deadbeaf1:0
SCSI SN: beaf10
Size: 0 MB
Online: Yes
Removable media: No
Backing store: No backing store
LUN: 1
Type: disk
SCSI ID: deadbeaf1:1
SCSI SN: beaf11
Size: 10737 MB
Online: Yes
Removable media: No
Backing store: /dev/sdb
Account information:
ACL information:
192.168.2.0/24
文本配置很容易,我们可以查看man手册,来看一下它的参数:man tgtadm
二.Initiator
Web1
1. 安装initiator软件,它在server目录中
[root@localhost Server]# rpm -ivh iscsi-initiator-utils-6.2.0.871-0.10.el5.i386.rpm
2. 安装之后,我们就可以对target进行连接,它是通过手动命令来实现的,参数可以使用:man iscsiadm来查看
3. 在连接之前先配置本机的initiator用户名
[root@localhost Server]# vim /etc/iscsi/initiatorname.iscsi
写入
InitiatorName=iqn.2012.12.a.com.server1 //本名字只用于标识本机
4. 对target进行发现
先开启服务
[root@web1 Server]# service iscsi start
iscsid is stopped
Turning off network shutdown. Starting iSCSI daemon: [ OK ]
[ OK ]
Setting up iSCSI targets: iscsiadm: No records found!
[ OK ]
进行发现
[root@localhost Server]# iscsiadm -m discovery --type sendtargets --portal 192.168.2.30
192.168.2.30:3260,1 iqn.2012.12.com.a.target:disk //发现target目录
5.在发现之后,我们就可以登录这个target使用其硬盘了
[root@localhost Server]# iscsiadm --mode node --targetname iqn.2012.12.com.a.target:disk --portal 192.168.2.30:3260 --login
Logging in to [iface: default, target: iqn.2012.12.com.a.target:disk, portal: 192.168.2.30,3260]
Login to [iface: default, target: iqn.2012.12.com.a.target:disk, portal: 192.168.2.30,3260]: successful
[root@localhost Server]#
6.登录成功后,我们可以查看自己的web1是否增加了一个硬盘
[root@localhost Server]# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 38 305203+ 83 Linux
/dev/sda2 39 2545 20137477+ 83 Linux
/dev/sda3 2546 2610 522112+ 82 Linux swap / Solaris
Disk /dev/sdb: 10.7 GB, 10737418240 bytes //增加了一个/dev/sdb
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdb doesn't contain a valid partition table
7. 现在我们就可以对这个硬盘进行操作了
首先分区
[root@localhost Server]# fdisk /dev/sdb
格式化
[root@localhost Server]# mkfs.ext3 /dev/sdb1
挂载,因为我们的网站是放在/var/www/html中的,所以我们应该把这个硬盘挂载在这个目录下
[root@localhost Server]# mount /dev/sdb1 /var/www/html
查看挂载点内的内容
[root@localhost Server]# ll /var/www/html
total 16
drwx------ 2 root root 16384 Dec 30 00:24 lost+found
8. 现在我们就可以正常的把网站放入到这个挂载点中了,我们直接做一个网页来进行测试
[root@localhost Server]# echo "successful" >/var/www/html/index.html
[root@localhost Server]# echo "ok" >/var/www/html/.test.html
9. 开启http服务
[root@localhost Server]# service httpd start
10. 现在就可以测试了,我们可以直接在http服务器上来测试.
可以看到访问192.168.2.31时就可以输出192.168.2.31硬盘里面的,网页内容,测试成功
Web2
Web2上的配置和web1上的配置是一样的,我们可以按照web1主机的配置方法配置
我们只需要修改如下几处即可
1. 修改initiator名称
[root@web2 Server]# vim /etc/iscsi/initiatorname.iscsi
修改如下
InitiatorName=iqn.2012.12.com.a.server2
2. 发现,登录,挂载,注:不用分区与格式化
3. 现在可以进行目录/var/www/html中查看文件
[root@localhost Server]# cd /var/www/html
[root@localhost html]# ll
total 20
-rw-r--r-- 1 root root 11 Dec 30 00:27 index.html
drwx------ 2 root root 16384 Dec 30 00:24 lost+found
[root@localhost html]#
可以看到在web1主机的输入的内容,访问一下web2服务器查看结果
结果相同,配置正常
配置现在就基本结束了,但是这种方法有一个弊端,那就是没有推送机制与锁机制。推送机制是指:在两个用户都登录进target后,如果一言创建了一个文件,另一方是不能名看到的,而锁机制,是指在一方打开一个文件后,而在另一方还能够打开,并且能够写入,这样会引起内容的混乱。
做一个无推送机制的例子
在web1中创建文件test
[root@localhost html]# touch test
[root@localhost html]# ll
total 20
-rw-r--r-- 1 root root 11 Dec 30 00:27 index.html
drwx------ 2 root root 16384 Dec 30 00:24 lost+found
-rw-r--r-- 1 root root 0 Dec 30 00:51 test
[root@localhost html]#
但是在web2中查看一下有没有这个test文件
[root@web2 html]# ll
total 20
-rw-r--r-- 1 root root 11 Dec 30 00:27 index.html
drwx------ 2 root root 16384 Dec 30 00:24 lost+found
[root@web2 html]#
可以看到是没有的,这也就是没有推送机制
如果我们想让对方看到自己创建的文件,那么我们就只有卸载目录再注销登录之后再次登录挂载才能实现,比较麻烦。