续上篇
一.iscsi共享磁盘(挂载在数据库的数据目录中)
首先两台主机关闭apache服务(也可以直接在网页中将其disabled)
clusvcadm -d apache
在server3中添加一个硬盘(大小为8G)
server3这台主机主要用来做存储:做共享存储,给server1和server2使用
5.给集群附加存储设备
#1.再开一台虚拟机用来作iscsi共享存储,server3
server3上安装服务端:
yum install -y scsi-*
HA节点上安装客户端:
yum install -y iscsi-*
#2.配置存储(配置磁盘共享配置文件)
server3上:
vim /etc/tgt/targets.conf
38
39 backing-store /dev/vda ##fdisk -l 查看
40
启动:
/etc/init.d/tgtd start
tgt-admin -s ##查看存储信息
ps ax ##看到有2个tgtd进程(此处学生有问题先看进程,如果有4个,就是错误的)
在HA节点上发现共享存储:
[root@server2 ~]# iscsiadm -m discovery -t st -p 172.25.0.3
Starting iscsid: [ OK ]
172.25.0.3:3260,1 iqn.2018-11.com.example:server.target1
[root@server2 ~]# iscsiadm -m node -l ##挂载存储
fdisk -cu /dev/sdb ##只分一个区,方便在分区表被破坏的时候恢复
查看磁盘分区,发现共享过来的硬盘,此时,在server3上是虚拟硬盘,但在server1共享过来之后,就是真实设备,所以是sdb
server1:
(1)安装数据库
yum install -y mysql-server
(2)将已经连接的共享过来的磁盘格式化,格式化为ext4类型(Exf4本地文件系统,写入不同步)
mkfs.ext4 /dev/sdb
mount /dev/sdb /var/lib/mysql/
(4)修改数据库目录所有者,因为默认为root,改为mysql数据库用户可以进行相应的操作实现共享
ls -ld /var/lib/mysql/
chown mysql.mysql /var/lib/mysql/
ls -ld /var/lib/mysql/
/etc/init.d/mysqld start
(1)安装数据库
yum install -y mysql-server
(2)格式化
mkfs.ext4 /dev/sdb
mount /dev/sdb /var/lib/mysql/
(4)修改数据库目录的所有者,开启数据库服务
ls -ld /var/lib/mysql/
chown mysql.mysql /var/lib/mysql/
ls -ld /var/lib/mysql/
/etc/init.d/mysqld start
RHCS集群模式下iscsi磁盘共享模式的添加
(1)故障转移域的添加
(2)添加iscsi共享磁盘的新的集群资源
添加文件系统
虚拟IP的添加
数据库启动脚本的添加
(3)创建服务组
(4)在服务组中添加已经所创建好的资源
5.测试
(1)刷新页面发现服务运行在server2上,发现server2上自动挂载共享的磁盘,因为设置的失败回切域server2的优先级比server1高,在server1上回切的时间只有5秒。
(2)在客户端的虚拟机上使用命令查看设备的使用情况
(3)在server1和server2俩个客户端分别删掉/var/libmysqld的数据库并关闭数据库服务,在次刷新页面。
1.基本概念
RHCS通过GFS文件系统提供存储集群功能。
GFS(Global FileSyatem)允许多个服务同时去使用一个单一的共享文件系统,存储集群通过将共享数据放到一个共享文件系统中,从而消除了同步数据的麻烦。
GFS通过锁管理机制,来协调和管理多个服务节点对同一个文件系统的读写操作。
2.gfs2与ext4文件系统的比较
ext4:不支持同步写入
gfs2:全局文件系统,支持DLM锁管理,支持并发写,适用于HA集群使用的共享存储适用于LB集群Realserver使用的共享存储
二.模拟rhcs高可用集群下的gfs文件系统的共享存储
server1上的部署
(1)查看支持该文件系统的clvmd集群逻辑卷服务是否开启
/etc/init.d/clvmd status
(3)集群逻辑卷的配置文件的编辑,开启锁管理器
(4)创建ext4文件系统的lvm集群罗逻辑卷
查看iscsi共享的存储设备为/dev/sdb
fdisk -l
逻辑卷的创建
pvcreate /dev/sdb
vgcreate clustervg /dev/sdb
vgs
lvcreate -L 4G -n demo clustervg
lvs
mkfs.ext4 /dev/clustervg//demo
mount /dev/clustervg/demo /var/lib/mysql/
df
并创建文件
挂载之后再次建立文件
b.在另一个客户端2上查看的时候发现没有同步到在1上写入的数据
看不到新创建的文件逻辑卷的扩展
a.关掉数据库服务
/etc/init.d/mysqld stop
卸载
创建gfs2文件系统的lvm集群逻辑卷
(1)格式化已经创建好的逻辑卷
mkfs.gfs2 -t westos_ha:mygfs2 -p lock_dlm -j 2 /dev/clustervg/demo
mkfs.gfs2
-j #: 指定日志区域的个数,有几个就能够被几个节点所挂载;
-J #: 指定日志区域的大小,默认为128MB;
-p {lock_dlm|lock_nolock}:所使用的锁协议名称,集群需要使用lock_dlm;
-t : 锁表的名称
格式为clustername:fsname,
clustername为当前节点所在的集群的名称
fsname文件系统名称,自定义,要在当前集群惟一,这也叫锁表名称,表明是分布式锁
(2)gfs2文件系统的工具及其安全上下文的查看
gfs2文件系统的挂载
开启数据库
/etc/init.d/mysqld start
gfs2文件系统的验证
server
发现在1上的数据已经同步到2上,即实现了gfs2文件系统的同步
在上一篇博文中已经创建好了失败回切及其资源组,在资源组中先将ext4文件系统的资源删除,然后再重新添加gfs2文件系统
在服务组中添加gfs2的资源
删除服务组:sql
重新添加服务组:
存储分享 iscsi:
集群管理机:
yum install scsi-target-utils.x86_64 0:1.0.24-10.el6 -y
vim /etc/tgt/targets.conf
backing-store /dev/sdb
initiator-address 172.25.42.11
initiator-address 172.25.42.12
/etc/init.d/tgtd start
tgt-admin -s (查看分享情况)
Backing store path: /dev/sdb (如出现此信息:分享成功)
ACL information:(如没有ip认证 则此处为:all)
172.25.42.11
172.25.42.12
集群主运行业务机器:
yum install iscsi-initiator-utils.x86_64 0:6.2.0.873-10.el6 -y
iscsiadm -m discovery -t st -p 172.25.42.10
iscsiadm -m node -l
fdisk -cu /dev/sdb (磁盘分区 (集群中其中一台虚拟机做就可以了))
vim /etc/lvm/lvm.conf
462 locking_type = 3
[root@server2 html]# /etc/init.d/clvmd status
clvmd (pid 1235) is running...
Clustered Volume Groups: cluster_vg
Active clustered Logical Volumes: demo
//ext4是本地文件系统(不能同布)//
挂载:
前提:/etc/init.d/clvmd status (is running)
locking_type = 3
1.两台集群虚拟机
dd2:
pvcreate /dev/sdb1
vgcreate dangdang /dev/sdb1
lvcreate -L 4G -n dd dangdang
dd3:
pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup lvm2 a-- 19.51g 0
/dev/sdb1 lvm2 a-- 8.00g 8.00g
vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup 1 2 0 wz--n- 19.51g 0
dangdang 1 0 0 wz--nc 8.00g 8.00g
lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_root VolGroup -wi-ao---- 18.54g
lv_swap VolGroup -wi-ao---- 992.00m
dd dangdang -wi-a----- 4.00g
dd2:
mkfs.ext4 /dev/dangdang/dd
mount /dev/dangdang/dd /mnt (两台虚拟机同时挂载 eg:其中一台 在/mnt 里面cp /etc/passwd 如不卸载再挂载 则另一台机器上看不到 因为 ext4是本地文件系统(不能同步 (不支持同时写入)))
cd /mnt
vim index.html
umount /dev/dangdang/dd
图形化操作:先加存储 再加服务
设备、FS标签或UUID Device, FS Label, or UUID
力卸载 Force Unmount
使用快速状态检查 Use Quick Status Checks
如果卸载失败,则重新引导主机节点 Reboot Host Node if Unmount Fails
// clusvcadm -d apache (是关闭apache服务 两台机器上都没有这个服务了 告诉集群 我不用这个服务了 是集群的命令 与载web界面上操作是一样的)
clusvcadm -r apache -m dd3.example.com (把服务转移到dd3.example.com)
/etc/init.d/httpd stop (停掉虚拟机上的服务 测试用 系统停掉服务)
多节点同时挂载写入(gfs2:共享文件系统)
mkfs.gfs2 -p lock_dlm -j 2 -t westos_ha:mygfs2 /dev/dangdang/dd
kfs.gfs2为gfs2文件系统创建工具,其一般常用的选项有:
2
-b BlockSize:指定文件系统块大小,最小为512,默认为4096;
-J MegaBytes:指定gfs2日志区域大小,默认为128MB,最小值为8MB;
-j Number:指定创建gfs2文件系统时所创建的日志区域个数,一般需要为每个挂载的客户端指定一个日志区域;
-p LockProtoName:所使用的锁协议名称,通常为lock_dlm或lock_nolock之一;
-t LockTableName:锁表名称,一般来说一个集群文件系统需一个锁表名以便让集群节点在施加文件锁时得悉其所关联到的集群文件系统,锁表名称为clustername:fsname,其中的clustername必须跟集群配置文件中的集群名称保持一致,因此,也仅有此集群内的节点可访问此集群文件系统;此外,同一个集群内,每个文件系统的名称必须惟一;
测试:dd2: mount /dev/dangdang/dd /mnt
cd /mnt
cp /etc/passwd
dd3: mount /dev/dangdang/dd /mnt
3.vim /etc/fstab (两台都做)
/dev/dangdang/dd /var/www/html gfs2 _netdev(网络设备) 0 0
mount -a
删除管理网页 Service Group 里面的filesystem 再删除 Resources里面的 webdate
4.clusvcadm -e apache
挂载跟着服务走 不用自己挂载 服务也不用自己开
gfs2_tool sb /dev/dangdang/dd all
gfs2_tool journals /dev/dangdang/dd (有几个挂载点就有几份日志)
gfs2_jadd -j 3 /dev/dangdang/dd
支持扩大,也支持缩减,但缩减有风险 (底层是lvm)
lvextend -L +1G /dev/dangdang/dd (扩大磁盘空间)
gfs2_grow /dev/dangdang/dd (扩大文件系统)
9.表名必须和集群名一样 (不是一个名字挂载不上去)
mkfs.gfs2 -p lock_dlm -j 3 -t westos_dd:mygfs2 /dev/dangdang/dd
gfs2_tool sb /dev/dangdang/dd table 集群名:mygfs2
#演示
dd if=/dev/sdb of=mbr bs=512 count=1 ##备份mbr
dd if=/dev/zero of=/dev/sdb bs=512 count=1 ##破坏mbr
'dd命令不经过文件系统,是从底层设备(bios)直接写入'
重启之后,/proc/partitions下看不到刚分的sdb1
mount /dev/sdb /mnt ##挂载会报错,因为分区表没了
dd if=mbr of=/dev/sdb ##恢复mbr
fdisk -cu /dev/sdb ##进去之后,再w保存退出,就可以正常挂载,也可以看到之前保存的内容