实现环境:RHEL5
实验目标:用CLVM和IP-SAN实现高性能与高扩展性集群存储
实验目标:用CLVM和IP-SAN实现高性能与高扩展性集群存储
(有朋友说用NFS不是更简单吗?为什么这么麻烦要用ISCSI和GFS呢?因为有些环境是不支持NFS的,比如Oracle需要一个裸设备来做存储,而且iSCSI与GFS所提供的扩展性与性能是NFS无法比拟的,他们具体的区别请看我博客里转载的一篇文章,阐述的非常详细。)
用iSCSI实现块儿设备共享并格式化为GFS文件系统
用clvm实现各分发器或者realserver共享存储的同步lvm扩展
用clvm实现各分发器或者realserver共享存储的同步lvm扩展
分配地址:
存储服务器:172.16.0.25
realserverA : jda.vs.com 172.16.0.21
realserverB : jdc.vs.com 172.16.0.33
分发器 A : jdd.vs.com 172.16.0.66
分发器 B : jde.vs.com 172.16.0.67
存储服务端建立 ISCSI分区并格成GFS文件系统
iscsi-initiator-utils
scsi-target-utils
安装上面的两个包
新建一个分区 fdisk /dev/sdb 第一个分区/dev/sdb1
首先启动服务
/etc/init.d/tgtd start
资源声明 使用什么设备 新建 模式 设备号 设备名字
tgtadm --lld iscsi --op new --mode target -t1 -T iqn.2009-08.com.vs.jdb:disk1
建立磁盘映射
tgtadm --lld iscsi --op new --mode logicalunit -t1 --lun 1 -b /dev/sdb1
访问控制 ALL 任意 可以规定网段 和IP
tgtadm --lld iscsi --op bind --mode target -t1 -I ALL
查看
tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2009-08.com.vs.jdb:disk1
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: 3010 MB
Online: Yes
Removable media: No
Backing store: /dev/sdb1
Account information:
ACL information:
ALL
好了,建立成功
下面我们开始设置realserver ,由于环境限制我只弄到5台机器,所以现在只能用两台机器作 realserver不过是能达到实验效果的
realserver的设置
rpm -ivh iscsi-initiator-utils
统一realserver的主机名
/etc/hosts
172.16.0.21 jda.vs.com
172.16.0.33 jdc.vs.com
关闭网卡arp响应
ifconfig lo:1 172.16.0.9 netmask 255.255.255.255
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
上面的操作两台realserver是都要作的
启动服务
/etc/init.d/iscsi start
查看存储端信息
iscsiadm -m discovery -t sendtargets -p 172.16.0.25:3260
显示信息
172.16.0.25:3260,1 iqn.2009-08.com.vs.jdb:disk1
连接资源
iscsiadm -m node -T iqn.2009-08.com.vs.jdb:disk1 -l
提示连接成功
Logging in to [iface: default, target: iqn.2009-08.com.vs.jdb:disk1, portal: 172.16.0.25,3260]
Login to [iface: default, target: iqn.2009-08.com.vs.jdb:disk1, portal: 172.16.0.25,3260]: successful
这时在你的 /dev/下应该多了一个硬盘
ll /dev/sdb
brw-r----- 1 root disk 8, 16 07-23 10:00 /dev/sdb
好了,现在给 sdb分区,我给他先分出了1G /dev/sdb1
这时你在另外一台realserver下执行
iscsiadm -m discovery -t sendtargets -p 172.16.0.25:3260
iscsiadm -m node -T iqn.2009-08.com.vs.jdb:disk1 -l
也会看到 /dev/sdb1的
这说明咱们的iscsi是作成功了,先别急着格式化,还有CLVM没有作呢!因为Cluster LVM 需要在红帽的基础上所以 cman是不可少的,
不过不要求他干什么,空跑就行了
执行system-config-cluster 把两台realserver的hostname加进去 设好组播就OK了
两边同时启动cman /etc/init.d/cman start (如果cman启动不了,请检查心跳)
tcpdump -i eth1 -n udp 我们抓包看看心跳是否正常
12:08:51.003913 IP 202.106.0.23.5149 > 231.1.1.1.netsupport: UDP, length 118
一切正常
安装这个包 lvm2-cluster
lvmconf --enable-cluster #之前千万别忘了这部
/etc/init.d/clvmd start #这部必须两台realserver都要执行的,如果少了一台
下面就是出错提示
pvcreate /dev/sdb1
clvmd not running on node jda.vs.com
Can't get lock for orphan PVs
建立PV
pvcreate /dev/sdb1
vgcreate "testvg" /dev/sdb1
lvcreate -n testlv testvg -L 500M
好了,到这里你可以在另外的realserver上执行一下 lvdisplay,查看是否也已经建立成功
下一步我们要把我们的分区变成GFS文件系统
装这两个包 gfs-utils kmod-gfs
gfs_mkfs -t clvm_cluster:mygfs -p lock_dlm -j 2 /dev/testvg/testlv
这里的 clvm_cluster是我刚才用system-config-cluster建立的cluster 名字
下面是提示信息
This will destroy any data on /dev/testvg/testlv.
Are you sure you want to proceed? [y/n] y
Device: /dev/testvg/testlv
Blocksize: 4096
Filesystem Size: 62420
Journals: 2
Resource Groups: 8
Locking Protocol: lock_dlm
Lock Table: clvm_cluster:mygfs
Syncing...
All Done
下面在两台realserver上面都试试看,是不是直接可以用了!呵呵
mount /dev/testvg/testlv /var/www/html/
执行mount 命令查看
/dev/mapper/testvg-testlv on /var/www/html type gfs (rw,hostdata=jid=0:id=65538:first=1)
在/var/www/html/ 下面建立 index.html 随便输入点东西测试用,还有test.html 内容是“ ceshi“ 用来给ldirectord作测试用
好了,存储部分就算是作到这里了,下面开始配置 heartbeat+ldirectord
存储服务器:172.16.0.25
realserverA : jda.vs.com 172.16.0.21
realserverB : jdc.vs.com 172.16.0.33
分发器 A : jdd.vs.com 172.16.0.66
分发器 B : jde.vs.com 172.16.0.67
存储服务端建立 ISCSI分区并格成GFS文件系统
iscsi-initiator-utils
scsi-target-utils
安装上面的两个包
新建一个分区 fdisk /dev/sdb 第一个分区/dev/sdb1
首先启动服务
/etc/init.d/tgtd start
资源声明 使用什么设备 新建 模式 设备号 设备名字
tgtadm --lld iscsi --op new --mode target -t1 -T iqn.2009-08.com.vs.jdb:disk1
建立磁盘映射
tgtadm --lld iscsi --op new --mode logicalunit -t1 --lun 1 -b /dev/sdb1
访问控制 ALL 任意 可以规定网段 和IP
tgtadm --lld iscsi --op bind --mode target -t1 -I ALL
查看
tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2009-08.com.vs.jdb:disk1
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: 3010 MB
Online: Yes
Removable media: No
Backing store: /dev/sdb1
Account information:
ACL information:
ALL
好了,建立成功
下面我们开始设置realserver ,由于环境限制我只弄到5台机器,所以现在只能用两台机器作 realserver不过是能达到实验效果的
realserver的设置
rpm -ivh iscsi-initiator-utils
统一realserver的主机名
/etc/hosts
172.16.0.21 jda.vs.com
172.16.0.33 jdc.vs.com
关闭网卡arp响应
ifconfig lo:1 172.16.0.9 netmask 255.255.255.255
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
上面的操作两台realserver是都要作的
启动服务
/etc/init.d/iscsi start
查看存储端信息
iscsiadm -m discovery -t sendtargets -p 172.16.0.25:3260
显示信息
172.16.0.25:3260,1 iqn.2009-08.com.vs.jdb:disk1
连接资源
iscsiadm -m node -T iqn.2009-08.com.vs.jdb:disk1 -l
提示连接成功
Logging in to [iface: default, target: iqn.2009-08.com.vs.jdb:disk1, portal: 172.16.0.25,3260]
Login to [iface: default, target: iqn.2009-08.com.vs.jdb:disk1, portal: 172.16.0.25,3260]: successful
这时在你的 /dev/下应该多了一个硬盘
ll /dev/sdb
brw-r----- 1 root disk 8, 16 07-23 10:00 /dev/sdb
好了,现在给 sdb分区,我给他先分出了1G /dev/sdb1
这时你在另外一台realserver下执行
iscsiadm -m discovery -t sendtargets -p 172.16.0.25:3260
iscsiadm -m node -T iqn.2009-08.com.vs.jdb:disk1 -l
也会看到 /dev/sdb1的
这说明咱们的iscsi是作成功了,先别急着格式化,还有CLVM没有作呢!因为Cluster LVM 需要在红帽的基础上所以 cman是不可少的,
不过不要求他干什么,空跑就行了
执行system-config-cluster 把两台realserver的hostname加进去 设好组播就OK了
两边同时启动cman /etc/init.d/cman start (如果cman启动不了,请检查心跳)
tcpdump -i eth1 -n udp 我们抓包看看心跳是否正常
12:08:51.003913 IP 202.106.0.23.5149 > 231.1.1.1.netsupport: UDP, length 118
一切正常
安装这个包 lvm2-cluster
lvmconf --enable-cluster #之前千万别忘了这部
/etc/init.d/clvmd start #这部必须两台realserver都要执行的,如果少了一台
下面就是出错提示
pvcreate /dev/sdb1
clvmd not running on node jda.vs.com
Can't get lock for orphan PVs
建立PV
pvcreate /dev/sdb1
vgcreate "testvg" /dev/sdb1
lvcreate -n testlv testvg -L 500M
好了,到这里你可以在另外的realserver上执行一下 lvdisplay,查看是否也已经建立成功
下一步我们要把我们的分区变成GFS文件系统
装这两个包 gfs-utils kmod-gfs
gfs_mkfs -t clvm_cluster:mygfs -p lock_dlm -j 2 /dev/testvg/testlv
这里的 clvm_cluster是我刚才用system-config-cluster建立的cluster 名字
下面是提示信息
This will destroy any data on /dev/testvg/testlv.
Are you sure you want to proceed? [y/n] y
Device: /dev/testvg/testlv
Blocksize: 4096
Filesystem Size: 62420
Journals: 2
Resource Groups: 8
Locking Protocol: lock_dlm
Lock Table: clvm_cluster:mygfs
Syncing...
All Done
下面在两台realserver上面都试试看,是不是直接可以用了!呵呵
mount /dev/testvg/testlv /var/www/html/
执行mount 命令查看
/dev/mapper/testvg-testlv on /var/www/html type gfs (rw,hostdata=jid=0:id=65538:first=1)
在/var/www/html/ 下面建立 index.html 随便输入点东西测试用,还有test.html 内容是“ ceshi“ 用来给ldirectord作测试用
好了,存储部分就算是作到这里了,下面开始配置 heartbeat+ldirectord