欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RHCS套件HA与mysql+GFS2文件系统实现同步存储

程序员文章站 2024-03-08 15:24:10
...

实验背景:

虚拟机 ip
server1 172.25.55.1
server2 172.25.55.2
server3 172.25.55.3

三台虚拟机都关闭iptables和内核级防火墙。
三台虚拟机都做了相互的域名解析。

第一步:HA添加集群和fence

可查看上一篇博客

第二步:共享存储

为sever3添加一块磁盘
RHCS套件HA与mysql+GFS2文件系统实现同步存储
要安装的软件

[aaa@qq.com html]# yum install -y iscsi-*
[aaa@qq.com ~]# yum install -y iscsi-*
[aaa@qq.com ~]# yum install scsi-*

server3查看设备,添加的8G设备已经存在。
RHCS套件HA与mysql+GFS2文件系统实现同步存储
server3编辑targets的配置文件。

[aaa@qq.com ~]# vim /etc/tgt/targets.conf 
	 38 <target iqn.2019-02.com.example:server.target1>
	 39     backing-store /dev/vda(此名称为添加磁盘的设备名称)
	 40 </target>

[aaa@qq.com ~]# /etc/init.d/tgtd start(开启服务)
[aaa@qq.com ~]# tgt-admin -s(查看信息)
	Target 1: iqn.2019-02.com.example:server.target1

[aaa@qq.com ~]# ps ax(可查看到两个tdtd进程,如果多于两个,关闭进程,重启服务)
 1033 ?        Ssl    0:00 tgtd
 1036 ?        S      0:00 tgtd
 1065 pts/0    R+     0:00 ps ax	

以下server1与server2操作相同

[aaa@qq.com ~]# iscsiadm -m discovery -t st -p 172.25.28.3(发现共享存储)
[aaa@qq.com ~]# iscsiadm -m node -l(登陆存储)
[aaa@qq.com ~]# fdisk -l	(此时查看设备,可查看到共享设备)
	Disk /dev/sdb: 8589 MB, 8589934592 bytes
[aaa@qq.com ~]# yum install mysql-server(下载数据库)
[aaa@qq.com ~]# mkfs.ext4 /dev/sdb(格式化存储)
[aaa@qq.com ~]# mount /dev/sdb /var/lib/mysql/
[aaa@qq.com ~]# df
/dev/sdb                       8256952  149492   7688032   2% /var/lib/mysql
[aaa@qq.com ~]# ll -d /var/lib/mysql/
drwxr-xr-x 3 root root 4096 Feb 15 16:47 /var/lib/mysql/
[aaa@qq.com ~]# chown mysql.mysql /var/lib/mysql/
[aaa@qq.com ~]# /etc/init.d/mysqld start (开启Mysqld服务)
[aaa@qq.com mysql]# umount /var/lib/mysql	要卸载必须关闭mysql服务
	umount: /var/lib/mysql: device is busy.
[aaa@qq.com mysql]# /etc/init.d/mysqld stop
[aaa@qq.com ~]# umount /var/lib/mysql

第三步:添加mysql服务

  • 添加故障转移
    RHCS套件HA与mysql+GFS2文件系统实现同步存储
  • 添加资源

添加虚拟ip
RHCS套件HA与mysql+GFS2文件系统实现同步存储
添加文件系统(可使设备自动挂载到指定目录)
RHCS套件HA与mysql+GFS2文件系统实现同步存储
添加mysqld服务启动脚本。
RHCS套件HA与mysql+GFS2文件系统实现同步存储

  • 为集群添加服务群

下图的Run Exclusive代表运行独占。不勾选后能通过命令将apache服务自如切换与两个服务端之间。将之前写要的服务都加进去(ip、文件系统和脚本)
RHCS套件HA与mysql+GFS2文件系统实现同步存储

RHCS套件HA与mysql+GFS2文件系统实现同步存储

RHCS套件HA与mysql+GFS2文件系统实现同步存储

RHCS套件HA与mysql+GFS2文件系统实现同步存储

[aaa@qq.com ~]# clusvcadm -r sql -m server2
Trying to relocate service:sql to server2...Success
service:sql is now running on server2

RHCS套件HA与mysql+GFS2文件系统实现同步存储

重启后sql的disabled的处理

(如果failed先在网页disabled后再操作)

先查看server3的tgtd服务是否打开
[aaa@qq.com ~]# service tgtd start
[aaa@qq.com ~]# chkconfig tgtd on

查看server1上是否由共享存储
[aaa@qq.com ~]# fdisk -l(查看没有存储)
[aaa@qq.com ~]# iscsiadm -m discovery -t st -p 172.25.28.3(发现共享存储)
[aaa@qq.com ~]# iscsiadm -m node -l(登陆共享存储)
[aaa@qq.com ~]# fdisk -l(再次查看设备,可查看到共享设备)
[aaa@qq.com ~]# blkid(查看设备已经格式化)
/dev/sdb: UUID="77c3feb0-28be-4686-a2c3-ef68fad5d97d" TYPE="ext4" 
[aaa@qq.com ~]# mount /dev/sdb /var/lib/mysql(挂在设备,删除原本套接字mysql.sock)
[aaa@qq.com ~]# cd /var/lib/mysql
[aaa@qq.com mysql]# rm -fr mysql.sock
[aaa@qq.com mysql]# cd
[aaa@qq.com ~]# umount /dev/sdb(卸载)

打开主机的fence服务
[aaa@qq.com ~]$ systemctl start fence_virtd.service 

测试
[aaa@qq.com ~]# clusvcadm -e sql打开sql服务
Local machine trying to enable service:sql...Success
[aaa@qq.com ~]# clusvcadm -d sql关闭sql服务
Local machine disabling service:sql...Success

第四步:实现同步存储

关闭集群中所有的服务:

[aaa@qq.com ~]# clusvcadm -d sql
Local machine disabling service:sql...Success
   
[aaa@qq.com ~]# clusvcadm -d apache
Local machine disabling service:apache...Success
  /dev/sda2  VolGroup lvm2 a--  19.51g    0 

RHCS套件HA与mysql+GFS2文件系统实现同步存储
开启clcmd服务

[aaa@qq.com ~]# /etc/init.d/clvmd status(查看状态)
[aaa@qq.com ~]# vim /etc/lvm/lvm.conf
462     locking_type = 3(当服务开启是类型是3)
[aaa@qq.com ~]# lvmconf --disable-cluster
[aaa@qq.com ~]# vim /etc/lvm/lvm.conf
462     locking_type = 1	(关闭是1)
[aaa@qq.com ~]# lvmconf --enable-cluster(打开服务)

创建逻辑卷

[aaa@qq.com ~]# fdisk -l
	Disk /dev/sdb: 8589 MB, 8589934592 bytes
[aaa@qq.com ~]# fdisk -cu /dev/sdb(查看设备分区情况)

[aaa@qq.com ~]# pvcreate /dev/sdb(创建物理卷)
[aaa@qq.com ~]# vgcreate clustervg /dev/sdb(创建物理卷组)
[aaa@qq.com ~]# pvs
  PV         VG        Fmt  Attr PSize  PFree
  /dev/sda2  VolGroup  lvm2 a--  19.51g    0 
  /dev/sdb   clustervg lvm2 a--   8.00g 8.00g                                       
[aaa@qq.com ~]# vgs
  VG        #PV #LV #SN Attr   VSize  VFree
  VolGroup    1   2   0 wz--n- 19.51g    0 
  clustervg   1   0   0 wz--nc  8.00g 8.00g
[aaa@qq.com ~]# lvcreate -L 4G -n demo clustervg(创建逻辑卷,如果创建逻辑卷不成功,查看集群中的两项服务是否关闭,设备是否挂载)
[aaa@qq.com ~]# mkfs.gfs2 -p lock_dlm -j 2 -t westos_ha:mygfs2 /dev/clustervg/demo(格式化)
[aaa@qq.com ~]# gfs2_tool sb /dev/clustervg/demo all(查看逻辑卷的所有信息)

此时在server2上也可查看到物理卷、物理卷组和逻辑卷。

测试:
[aaa@qq.com ~]# mount /dev/clustervg/demo /var/lib/mysql/
[aaa@qq.com ~]# chown mysql.mysql /var/lib/mysql/
[aaa@qq.com ~]# service mysqld start

server2挂载设备并在目录下创建文件。

[aaa@qq.com ~]# mount /dev/clustervg/demo /var/lib/mysql/
[aaa@qq.com ~]# cd /var/lib/mysql/
[aaa@qq.com mysql]# ls
ibdata1  ib_logfile0  ib_logfile1  mysql   test
[aaa@qq.com mysql]# touch 1111
[aaa@qq.com mysql]# ls
1111  ibdata1  ib_logfile0  ib_logfile1  mysql  test

在server2创建文件后,server1同步到文件。
RHCS套件HA与mysql+GFS2文件系统实现同步存储
而我们要使用HA实现同步存储,gfs2与集群中的文件系统dbdata冲突。因此移除dadata,先移去服务组中所加的dadata,在删除资源栏下的dadata.
RHCS套件HA与mysql+GFS2文件系统实现同步存储
RHCS套件HA与mysql+GFS2文件系统实现同步存储

[aaa@qq.com ~]# vim /etc/fstab (将挂载写入开机自动挂载)
	UUID="6184a5e5-13f8-30c1-406d-19645100649f" /var/lib/mysql  gfs2  _netdev  0 0
[aaa@qq.com ~]# mount -a(**挂载)
[aaa@qq.com ~]# df
/dev/mapper/clustervg-demo     4193856  286516   3907340   7% /var/lib/mysql
[aaa@qq.com ~]# gfs2_tool -h
[aaa@qq.com ~]# gfs2_tool journals /dev/clustervg/demo
journal1 - 128MB
journal0 - 128MB
2 journal(s) found.

server2

[aaa@qq.com ~]# umount /var/lib/mysql/
[aaa@qq.com ~]# vim /etc/fstab 
	UUID="6184a5e5-13f8-30c1-406d-19645100649f" /var/lib/mysql  gfs2  _netdev  0 0
[aaa@qq.com ~]# mount -a
[aaa@qq.com ~]# df
/dev/mapper/clustervg-demo     4193856  286512   3907344   7% /var/lib/mysql
测试:
server1删除一个文件
[aaa@qq.com ~]# cd /var/lib/mysql/
[aaa@qq.com mysql]# ls
1111  ibdata1  ib_logfile0  ib_logfile1  mysql  test
[aaa@qq.com mysql]# rm -fr 1111 
[aaa@qq.com mysql]# ls
ibdata1  ib_logfile0  ib_logfile1  mysql  test

server1也没有了此文件 
[aaa@qq.com ~]# cd /var/lib/mysql/
[aaa@qq.com mysql]# ls
ibdata1  ib_logfile0  ib_logfile1  mysql  test