实验环境:redhat6.5,selinux,iptables关闭
server2(172.25.92.2),提供SCSI共享存储的主机
server1和server9是集群节点。
fdisk -l
#将其划分为一个分区:
fdisk -cu /dev/vdb (n-->p-->1-->wq)
cat /proc/partitions
yum install -y scsi-*
vim /etc/tgt/targets.conf
38 .2018-01.com.example:server.target1>
39 backing-store /dev/vdb1
40 initiator-address 172.25.92.1
41 initiator-address 172.25.92.9
42
/etc/init.d/tgtd start
tgt-admin -s
[root@server2 ~]# tgt-admin -s
Target 1: iqn.2018-01.com.example:server.target1
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 8589 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 8589 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: **/dev/vdb1** #看这里
Backing store flags:
Account information:
ACL information: #看这里
**172.25.92.1
172.25.92.9**
#注意:在server2上不能格式化,SCSI存储是直接共享存储,在客户端格式化,而nfs文件系统的共享是在服务端共享文件系统。
server1上:
iscsiadm -m discovery -t st -p 172.25.92.2
iscsiadm -m node -l
fdisk -l
fdisk -cu /dev/sda (e-->1-->1-->t-->8e-->wq)
fdisk -l
可以看见:
Device Boot Start End Blocks Id System
/dev/vda1 * 3 1018 512000 83 Linux
Partition 1 does not end on cylinder boundary.
#/dev/vda2 1018 41611 20458496 8e Linux LVM
Partition 2 does not end on cylinder boundary.
先格式化ext4文件系统:
server1上:
mkfs.ext4 /dev/sda1
blkid
iscsiadm -m discovery -t st -p 172.25.92.2 #发现SCSI共享存储
iscsiadm -m node -l #登陆
[root@server9 mnt]# cd /var/lib/iscsi/nodes/iqn.2018-01.com.example\:server.target1/ #查看共享的存储
server9上:
iscsiadm -m discovery -t st -p 172.25.92.2 #发现SCSI共享存储
iscsiadm -m node -l
[root@server9 ~]# cat /proc/partitions
major minor #blocks name
252 0 20971520 vda
252 1 512000 vda1
252 2 20458496 vda2
253 0 19439616 dm-0
253 1 1015808 dm-1
8 0 8387584 sda
8 1 8386560 sda1 #看这里
#如果看不到,使用partprobe同步分区表即可
测试;在server1上将/dev/sda1挂载在/mnt下面,在/mnt里创建的文件,可以看见文件。server9同样挂载,在/mnt里发现不了创建的文件,原因在于ext4文件系统只支持单点运行,只有server1卸载之后,server9重新挂载才能看见文件。所以不可以作为集群存储的文件系统
再次格式化为集群文件系统(gfs2 gloabl file system 的第二个版本)
server1和server9全部都先卸载:umont /mnt
在server1上:
df -h
[root@server1 ~]# mkfs.gfs2 -j 3 -p lock_dlm -t westos_ha:mygfs2 /dev/sda1
# -j 3 指定记录三分文件系统,份数是集群节点加一,对集群化文件系统的操作需要记录在日志中
#-p 指定协议,分布式锁协议
#-t 需要共享存储的集群名称,并指定共享存储的名称
This will destroy any data on /dev/sda1.
It appears to contain: Linux rev 1.0 ext4 filesystem data (errors) (extents) (large files) (huge files)
Are you sure you want to proceed? [y/n] y
Device: /dev/sda1
Blocksize: 4096
Device Size 8.00 GB (2096640 blocks)
Filesystem Size: 8.00 GB (2096638 blocks)
Journals: 3
Resource Groups: 32
Locking Protocol: "lock_dlm"
Lock Table: "westos_ha:mygfs2"
UUID: 5a7ce658-0a61-41c2-28ab-18e5c2838bdd
#测试
mount /dev/sda1 /mnt/
cd /mnt
cp /etc/passwd .
ls
可以看见passwd文件
server9:
df -h
mount /dev/sda1 /mnt/
cd /mnt
ls
可以看见passwd
#成功实现集群存储共享
要实现存储的拉伸扩展,使用LVM存储,LVM支持集群:
vim /etc/lvm/lvm.conf #在集群节点主机上的lvm的配置文件中可以看见LVM支持集群,默认是1。
首先需要破坏原本的文件系统:
server1上:
umount /mnt
/etc/init.d/clvmd start
root@server1 ~]# dd if=/dev/zero of=/dev/sda1 bs=1M count=10 #破坏文件系统
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0307969 s, 340 MB/s
[root@server1 ~]# mount /dev/sda1 /mnt/ #再次挂载时已经出错
mount: you must specify the filesystem type
[root@server1 ~]# pvcreate /dev/sda1 #创建pv
Physical volume "/dev/sda1" successfully created
[root@server1 ~]# vgcreate cluster_vg /dev/sda1 #创建vg
Clustered volume group "cluster_vg" successfully created
[root@server1 dev]# lvcreate -L 4G -n demo cluster_vg #创建lv
Logical volume "demo" created
创建的LVM存储在server9上使用 pvs,vgs,lvs可以看到
[root@server1 ~]# vgdisplay
VG Name cluster_vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 14
VG Access read/write
VG Status resizable
Clustered yes #LVM支持集群
[root@server1 dev]# mkfs.ext4 /dev/cluster_vg/demo
clusvam -d nginx #停掉nginx服务,
接下来展示在浏览器端添加共享存储:
点击资源:
添加filesystem资源:
然后在资源组将原有的nginx(scripts)服务remove掉,先加上Filesystem资源,再载filesystem后面添加nginx服务后面,因为在服务启动就会有数据写入磁盘,所以需要先格式化磁盘文件系统
[root@server1 dev]# clusvcadm -e nginx
Local machine trying to enable service:nginx...Success
service:nginx is now running on server1
[root@server1 dev]# df -h #可以看到已经随集群挂载
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 19G 1.4G 17G 8% /
tmpfs 939M 26M 914M 3% /dev/shm
/dev/vda1 485M 33M 427M 8% /boot
/dev/mapper/cluster_vg-demo 4.0G 136M 3.7G 4% /usr/local/nginx/html
[root@server1 dev]# ip addr #可以看到ip
#同样server9是同步的,也会有以上效果
接下来测试:cd /mnt建立文件,只在一台server上可以看见,原因是共享存储挂载的是ext4文件系统
vim /var/www/html/index.html
test
curl 172.25.92.100
可以成功访问nginx!
#将nginx迁移到server9上,同样会看到和server1一样的效果
clvscadm -r nginx -m server9
ext4文件系统下,拉伸存储:
lvextend -l +1023 /dev/cluster_vg/demo
resize2fs /dev/cluster_vg/demo
[root@server1 dev]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 19G 1.4G 17G 8% /
tmpfs 939M 26M 914M 3% /dev/shm
/dev/vda1 485M 33M 427M 8% /boot
/dev/mapper/cluster_vg-demo 7.9G 137M 7.4G 2% /usr/local/nginx/html #拉伸成功
共享存储挂载gfs2文件系统并实现拉伸和自动挂载
载浏览器端,先行从资源组删除,注意:删除filesystem时会将nginx服务也删除,需要重新加上nginx。再在资源(resource)里删除webdata即可。
umount /usr/local/nginx/html
lvremove /dev/cluster_vg/demo
lvcreate -L 4G -n demo cluster_vg
`mkfs.gfs2 -j 3 -p lock_dlm -t westos_ha:mygfs2 /dev/cluster_vg/demo #重新格式化
同样可以使得多个节点同时挂载使用。[root@server1 mnt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 19G 1.4G 17G 8% /
tmpfs 939M 32M 908M 4% /dev/shm
/dev/vda1 485M 33M 427M 8% /boot
/dev/mapper/cluster_vg-demo 7.8G 338M 7.0G 10% /mnt
可以看处记录日志已经占了338M存储
[root@server1 mnt]# gfs2_tool journals /dev/cluster_vg/demo
#查看日志情况,**必须在挂载目录中看**
journal2 - 128MB
journal1 - 128MB
journal0 - 128MB
3 journal(s) found.
#增加记录日志份数:
[root@server1 mnt]# gfs2_jadd -j 3 /dev/cluster_vg/demo #加3份
Filesystem: /mnt
Old Journals 3
New Journals 6
[root@server1 mnt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 19G 1.4G 17G 8% /
tmpfs 939M 32M 908M 4% /dev/shm
/dev/vda1 485M 33M 427M 8% /boot
/dev/mapper/cluster_vg-demo 7.8G 776M 7.0G 10% /mnt
存储自动使用776M记录6份日志
#实现自动挂载:
umount /mnt
vim /etc/fstabl #两台主机分别要做,不会同步
/dev/cluster_vg/demo /usr/local/nginx/html gfs2 _netdev 0 0
mount -a #刷新挂载
clusvcadm -e nginx #在集群中重新开启nginx服务
vim /usr/local/nginx/html/index.html
www.test.com
使用命令:curl 172.25.92.100可以成功访问
#使用网络文件系统的挂载方式。
注意:必须先停服务,再关闭SCSI存储,先删除存储设备,再删除服务,再关闭集群套件,再删除集群节点,最后重启动。
server2上:/etc/init.d/tgtd stop
server1和server9上:
clusvcadm -d nginx #停掉服务
vim /etc/fstab #删除添加的开机挂载项
umount /usr/local/nginx/html/
df -h
lvremove /dev/cluster_vg/demo #删除LVM
vgremove cluster_vg
lvremove /dev/sda1
fdisk -l
iscsiadm -m node -u #退出登陆SCSI设备
iscsiadm -m node -o delete #删除scsi设备
先关闭集群套件,再限制开机启动
chkconfig --list cman
chkconfig cman off
chkconfig rgmanager off
chkconfig --list clvmd
chkconfig modclusterd off
chkconfig ricci off
chkconfig luci off
vim /etc/lvm/lvm.conf
server不再是集群节点,LVM也就不再支持集群
reboot
到此完成集群的删除
也可以直接删除/etc/cluster/cluster.conf,即配置文件,再限制集群套件开机启动等。