续上一篇文章
配置共享存储
生产环境中,多使用光纤或是交换机设备连接共享存储与集群,在此实验中,使用ISCSI。
一.环境配置
1. 打开server3,添加一块磁盘用来共享:
2.配置server3(服务)端
[root@server3 ~]# yum install -y scsi-* 安装服务端软件
[root@server3 ~]# vim /etc/tgt/targets.conf
38 <target iqn.2019-02.com.example:server.target1>
39 backing-store /dev/vdb 共享刚才添加的设备
40 </target>
[root@server3 ~]# /etc/init.d/tgtd start ##开启服务后共享成功
[root@server3 ~]# ps ax ##tgtd只能有这两个进程
1048 ? Ssl 0:00 tgtd
1051 ? S 0:00 tgtd
3.配置iscsi客户端(server1,server4)
server1:
[root@server1 cluster]# yum install -y iscsi-* 安装客户端软件
[root@server1 cluster]# iscsiadm -m discovery -t st -p 172.25.5.3 发现共享设备
[root@server1 cluster]# iscsiadm -m node -l 连接共享设备
[root@server1 cluster]# fdisk -l
Disk /dev/sdb: 8589 MB, 8589934592 bytes
64 heads, 32 sectors/track, 8192 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
server2:
[root@server2 ~]# yum install -y iscsi-*
[root@server2 ~]# iscsiadm -m discovery -t st -p 172.25.5.3
[root@server2 ~]# iscsiadm -m node -l
4.给server1,server2配置mysql服务
server1:
[root@server1 cluster]# yum install -y mysql-server 下载mysql服务端
[root@server1 cluster]# mkfs.ext4 /dev/sda 格式花共享磁盘
[root@server1 cluster]# mount /dev/sda /var/lib/mysql/ 挂载到mysql目录下
[root@server1 cluster]# df
/dev/sdb 8256952 149492 7688032 2% /var/lib/mysql
[root@server1 cluster]# ll -d /var/lib/mysql/
drwxr-xr-x 3 root root 4096 Feb 15 16:32 /var/lib/mysql/
[root@server1 cluster]# chown mysql.mysql /var/lib/mysql/ 修改mysql目录的所有人和所以组
[root@server1 cluster]# ll -d /var/lib/mysql/
drwxr-xr-x 3 mysql mysql 4096 Feb 15 16:32 /var/lib/mysql/
[root@server1 cluster]# /etc/init.d/mysqld start
[root@server1 cluster]# /etc/init.d/mysqld stop
[root@server1 cluster]# umount /var/lib/mysql/ 卸载掉
server2:
[root@server2 ~]# yum install -y mysql-server
二.将文件系统共享添加再RHCS管理中(mysql服务):
1、首先在两台服务器上把刚刚开启的httpd服务关闭
2.在网页上配置,和上一篇httpd的配置相似
Add IP Address
Add Filesystem /Device是刚刚共享的磁盘
add Script
点击Service Groups,删除原来的添加,重新配置,这次的添加顺序是IPAddress —-> Filesystem —-> Script(因为服务开启的顺序就是先分配VIP,然后开启存储,然后再是服务)
测试
mysq服务在server2上运行,并却共享磁盘也已经挂在到/var/lib/mysql
三.gfs2文件系统
上面我们用的是ext4文件系统进行格式化,ext4是本地文件系统,所以存储的同步的文件显示需要另一台进行卸载再挂载的操作,所以一般都会使用集群化文件系统gfs2
1、首先介绍一下gfs2文件系统
gfs2(global file system 2):集群文件系统,可以让多个节点同时使用同一个文件系统,当一个节点使用时会借助DLM机制通过lock_dlm进行加锁,并通知给其他节点持有的锁信息
GFS是RHCS为集群系统提供的一个存储解决方案,它允许集群多个节点在块级别上共享存储,每个节点通过共享一个存储空间,保证了访问数据的一致性,更切实的说,GFS是RHCS提供的一个集群文件系统,多个节点同时挂载一个文件系统分区,而文件系统数据不受破坏,这是单一的文件系统,例如EXT3、 EXT2所不能做到的。
2.操作方法
为了实现多个节点对于一个文件系统同时读写操作,GFS使用锁管理器来管理I/O操作,当一个写进程操作一个文件时,这个文件就被锁定,此时不允许其它进 程进行读写操作,直到这个写进程正常完成才释放锁,只有当锁被释放后,其它读写进程才能对这个文件进行操作,另外,当一个节点在GFS文件系统上修改数据 后,这种修改操作会通过RHCS底层通
信机制立即在其它节点上可见。
双组模式 , 立刻同步,相当于同时写入,所以比主备的使用率高,两边都在用
3.配置gfs2文件系统
1.将两台服务器的mysql,apache服务停掉:clsvcadm -d apache,mysql
2.在server1用共享磁盘建立一个lvm分区:
[root@server1 ~]# /etc/init.d/clvmd status 保证clvmd服务开启,要开启才可能同步,还需要软件lvm2-cluster的支持,这些在最开始选择Download都自动下载好了
clvmd (pid 1540) is running...
Clustered Volume Groups: (none)
Active clustered Logical Volumes: (none)
[root@server1 ~]# pvcreate /dev/sda
[root@server1 ~]# vgcreate clustervg /dev/sda
[root@server1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda clustervg lvm2 a-- 8.00g 8.00g
/dev/vda2 VolGroup lvm2 a-- 19.51g 0
[root@server1 ~]# lvcreate -L 4G -n demo clustervg
[root@server1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_root VolGroup -wi-ao---- 17.54g
lv_swap VolGroup -wi-ao---- 1.97g
demo clustervg -wi-a----- 4.00g
3.格式化lvm分区,并进行配置
server1:
[root@server1 ~]# mkfs.gfs2 -p lock_dlm -j 2 -t westos_ha:mygfs2 /dev/clustervg/demo
//-j 节点数+1 用来作冗余
lock_dlm 是文件系统使用的锁定协议,因为这是一个集群的文件系统
帮助 :mkfs.gfs2 -h 可以查看帮助,也可以 man mkfs.gfs2
[root@server1 ~]# mount /dev/clustervg/demo /var/lib/mysql/
[root@server1 ~]# ll -d /var/lib/mysql/
drwxr-xr-x 2 root root 3864 Feb 16 10:54 /var/lib/mysql/
[root@server1 ~]# chown mysql.mysql /var/lib/mysql/
[root@server1 ~]# ll -d /var/lib/mysql/
drwxr-xr-x 2 mysql mysql 3864 Feb 16 10:54 /var/lib/mysql/
几个查看gfs2信息的命令
gfs2_tool sb /dev/clustervg/demo all //查看gfs2的信息
gfs2_tool journals /dev/clustervg/demo //查看gfs2的日至信息
gfs2_jadd -j 3 /dev/clustervg/demo //生成3个日至
4.server2挂在共享磁盘,当server1开启mysql服务时,server2下的/var/lib/mysql下自动产生了相应的文件,实现了同步
server2:
[root@server2 ~]# mount /dev/clustervg/demo /var/lib/mysql/
server1:
[root@server1 mysql]# /etc/init.d/mysqld start
[root@server1 mysql]# ll
total 20560
-rw-rw---- 1 mysql mysql 10485760 Feb 16 11:03 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Feb 16 11:04 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Feb 16 10:58 ib_logfile1
drwx------ 2 mysql mysql 2048 Feb 16 10:58 mysql
srwxrwxrwx 1 mysql mysql 0 Feb 16 11:04 mysql.sock
drwx------ 2 mysql mysql 3864 Feb 16 10:58 test
server2(同步了):
[root@server2 ~]# cd /var/lib/mysql/
[root@server2 mysql]# ll
total 20560
-rw-rw---- 1 mysql mysql 10485760 Feb 16 11:03 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Feb 16 11:04 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Feb 16 10:58 ib_logfile1
drwx------ 2 mysql mysql 2048 Feb 16 10:58 mysql
srwxrwxrwx 1 mysql mysql 0 Feb 16 11:04 mysql.sock
drwx------ 2 mysql mysql 3864 Feb 16 10:58 test
4.在luci上添加gfs2文件系统
5.设置开启自动挂载:
##删除网页的文件系统,需手动配置,因为网页上的gfs2只能给一台server挂载
server1:
[root@server1 mysql]# blkid 查看lvm的UUID
/dev/mapper/clustervg-demo: LABEL="westos_ha:mygfs2" UUID="44ff85d9-05a2-617b-8cc0-54f2532d0701" TYPE="gfs2"
[root@server1 mysql]# vim /etc/fstab 编辑/etc/fstab文件
UUID="44ff85d9-05a2-617b-8cc0-54f2532d0701" /var/lib/mysql gfs2 _netdev 0 0
//这里因为开机时,先启动的时配置文件存储肯定在服务之前,而ricci还未开启,所以无法挂载在集群,所以添加_netdev
//这里的UUID是用命令 blkid 中自己添加的分区的UUID
[root@server1 lib]# umount /var/lib/mysql/ 验证配置是否可行
[root@server1 lib]# mount -a
[root@server1 lib]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root 18102140 1155328 16027260 7% /
tmpfs 251124 31816 219308 13% /dev/shm
/dev/vda1 495844 33463 436781 8% /boot
/dev/mapper/clustervg-demo 4193856 286512 3907344 7% /var/lib/mysql
serevr2
[root@server2 mysql]# vim /etc/fstab
UUID="44ff85d9-05a2-617b-8cc0-54f2532d0701" /var/lib/mysql gfs2 _netdev 0 0
6.验证同步:
server2复制/etc/passwd到/var/lib/mysl下
[root@server2 mysql]# cp /etc/passwd .
[root@server2 mysql]# ll
total 20564
-rw-rw---- 1 mysql mysql 10485760 Feb 16 11:38 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Feb 16 11:40 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Feb 16 10:58 ib_logfile1
drwx------ 2 mysql mysql 2048 Feb 16 10:58 mysql
srwxrwxrwx 1 mysql mysql 0 Feb 16 11:40 mysql.sock
-rw-r--r-- 1 root root 1254 Feb 16 11:41 passwd
drwx------ 2 mysql mysql 3864 Feb 16 10:58 test
server1同步了:
[root@server1 mysql]# ll
total 20564
-rw-rw---- 1 mysql mysql 10485760 Feb 16 11:38 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Feb 16 11:40 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Feb 16 10:58 ib_logfile1
drwx------ 2 mysql mysql 2048 Feb 16 10:58 mysql
srwxrwxrwx 1 mysql mysql 0 Feb 16 11:40 mysql.sock
-rw-r--r-- 1 root root 1254 Feb 16 11:41 passwd
drwx------ 2 mysql mysql 3864 Feb 16 10:58 test
7.完整删除RHCS
- clusvcadm -d mysql_db ##如果有数据库,需要先停掉数据库
- umount 删除/etc/fstab ##卸载,删除开机自启
- lvremove vgremove pvremove ##将LVM删除
- stop iscsi ,iscsiadm -m node -o delete ##将共享删除,delete 会删除cluster.conf 文件
- chkconfig iscsi off ##将iscsi设置开机不自启
- /etc/init.d/tgtd stop chkconfig ##将scsi设置为开机不自启
- 在luci上:
- 先离开节点,点击"leave cluster" , 可通过/etc/init.d/cman status查看状态
- 然后删除集群
- chkconfig ricci modclusterd stop & off ##将服务设置开机不自启
- reboot ##重启服务器,系统还原为原来的纯净状态