负载均衡中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服务器上来测试.

  

负载均衡中SNA的ip-can(iscs使用示例i)_负载均衡

 

可以看到访问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服务器查看结果

负载均衡中SNA的ip-can(iscs使用示例i)_负载均衡_02

结果相同,配置正常

配置现在就基本结束了,但是这种方法有一个弊端,那就是没有推送机制与锁机制。推送机制是指:在两个用户都登录进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]#

可以看到是没有的,这也就是没有推送机制

如果我们想让对方看到自己创建的文件,那么我们就只有卸载目录再注销登录之后再次登录挂载才能实现,比较麻烦。