RHCS实现存储集群(MYSQL为例)
首先在真机里面做systemctl status fence_virtd
systemctl start fence_virtd ##开启fence服务
mysql环境在server1中做
yum install mysql-server ##server4里面也下载数据库
一.环境配置
1.在server2添加一块磁盘作为共享磁盘
cat /proc/partitions ##可以看见有一块设备 +8G
yum install -y scsi-* ###在server2安装scsi服务端(共享磁盘所在端)
2.在server2上编写iscsi的配置文件,允许server1和server4发现并登陆共享文件
vi /etc/tgt/targets.conf
<target iqn.2018-10.com.example:server.target1>
backing-store /dev/vdb ##共享设备
initiator-address 172.25.17.11
initiator-address 172.25.17.14 允许发现设备的客户端
</target>
/etc/init.d/tgtd start
4.在server1和server4客户端发现server2上的共享设备并登陆
411 cd /var/lib/mysql
412 ls
413 cd
414 yum install -y iscsi-* ##在server1和server4中安装iscsi客户端
415 iscsiadm -m discovery -t st -p 172.25.17.12 #server4里面也做
416 iscsiadm -m node -l ##登陆
417 cat /proc/partitions
fdisk -l ##可以看见有/dev/sda这个设备
418 cd /var/lib/iscsi
419 ls #server4里面也做
420 cd nodes/
421 ls
422 chkconfig --list iscsi #检查服务开没开
424 /etc/init.d/clvmd status ##此时这个服务是开的
5.在server客户端制作LVM分区,在server4端同步
423 pvcreate /dev/sda
425 vgcreate cluster_vg /dev/sda
lvcreate -L +4G -n demo cluster_vg
pvs ##server4里面不用做,因为集群同步过去了,只要在server4里面检查就可以了
vgs
lvs
在server4l里面
cat /proc/partitions
pvs
/etc/init.d/clvmd status ##次服务应该是开着的
pvs ##次时能看到/dev/sda
vgs
lvs
436 mkfs.ext4 /dev/cluster_vg/demo
437 mount /dev/cluster_vg/demo /mnt
438 cd /mnt
439 ls
440 cp /etc/passwd . ##此时server4应该卸载,不能同时挂在和写入,ext4是本地文件系统,不允许同时挂载
441 ls
443 cd ..
444 umount /mnt
445 df ##去server4里面看,挂在,可以看见复制过去了
446 mount /dev/cluster_vg/demo /mnt ##server4里面挂在,写东西,然后卸载
447 ls
448 cd /mnt
449 ls
二.MYSQL服务在共享磁盘中的应用
1.在server1中将LVM分区挂载在数据库的目录下
460 mount /dev/cluster_vg/demo /var/lib/mysql
461 df
2.修改数据库目录的所属人和所属组(为了向这里边写入数据),并打开数据库服务,发现目录中有个文件mysql.sock
462 id mysql
463 chown mysql.mysql /var/lib/mysql
465 /etc/init.d/mysqld start
469 mysql ##此时能进去,此时应该正确
470 cd
472 /etc/init.d/mysqld stop
473 umount /var/lib/mysql
在server4里面做
lvmconf --enable-cluster
mount /dev/cluster_vg/demo /var/lib/mysql
df
/etc/init.d/mysql start
mysql ##此时应该正确
/etc/init.d/mysql stop
df
umount /var/lib/mysql
df
##界面配置
点击Service Groups,删除原来的添加,重新配置,这次的添加顺序是IP Address —-> Filesystem —-> Script(因为服务开启的顺序就是先分配VIP,然后开启存储,然后再是服务)
两个需要注意的点:
1、首先我们用的是ext4文件系统进行格式化,ext4是本地文件系统,所以存储的同步的文件显示需要另一台进行卸载再挂载的操作。
2.保证clvmd服务开启,要开启才可能同步,还需要软件lvm2-cluster的支持,这些在最开始选择Download(luci图形界面)都自动下载好了
ext4文件系统是本地文件系统,不能同时在多个地方挂载和进行写操作,容易造成数据的丢失和污染,为了解决这个问题,我们介绍一下共享文件系统gfs2.
(二)gfs2集群文件系统
gfs2(global file system2):集群文件系统,可以让多个节点同时使用同一个文件系统,当一个节点使用时会借助DLM机制通过lock_dlm进行加锁,并通知给其他节点持有的锁信息
GFS是RHCS为集群系统提供的一个存储解决方案,它允许集群多个节点在块级别上共享存储,每个节点通过共享一个存储空间,保证了访问数据的一致性,更 切实的说,GFS是RHCS提供的一个集群文件系统,多个节点同时挂载一个文件系统分区,而文件系统数据不受破坏,这是单一的文件系统,例如EXT3、 EXT2所不能做到的。
在server4中做
178 /etc/init.d/mysqld stop ##首先停掉数据库服务
在server1中将lvm挂载到到mysql默认目录,并拉伸其大小为8G,在serve4r中同步
190 lvextend -l +1023 /dev/cluster_vg/demo
191 vgs
192 lvs
在server1中对lvm做热拉伸,并用df -h查看拉伸的结果
193 resize2fs /dev/cluster_vg/demo
df -h 应该有8G
在server1里面做
483 clustat
488 clusvcadm -d mys
489 clustat
mkfs.gfs2 -j 3 -p lock_dlm -t jay_mysql:mygfs2 /dev/clustervg/demo
# 修改文件系统为gfs2格式,并做相应配置
# -j 3 为文件系统中日志的数量加1
# -p lock_dlm表示对共享存储进行操作时,加锁
# -t jay_mysql:mygfs2 表示集群名称以及起的文件系统名称
# /dev/clustervg/demo 表示共享的磁盘区域
490 mkfs.gfs2 -p lock_dlm -t westos_wb:mygfs2 -j 3 /dev/cluster_vg/demo
491 gfs2_tool sb /dev/cluster_vg/demo all
492 mount /dev/cluster_vg/demo /var/lib/mysql/
493 chown mysql.mysql /var/lib/mysql/
494 /etc/init.d/mysqld start
495 mysql
496 /etc/init.d/mysqld stop
501 vi /etc/fstab
写入永久挂在 用uid挂在 blkid 查看uid
UUID=“dgthjuu” /var/lib/mysql gfs2 _netdev 0 0
502 fdisk -l