RHCS套件实现HA高可用与mysql存储(ricci + luci + fence + mysql)

概述:

HA(High Available),高可用集群,是减少服务中断时间为目的的服务器集群技术。是保证业务连续性的有效解决方案。
集群,简单的来说就是一组计算机。一般有两个或者两个以上的计算机组成,这些组成集群的计算机被称为节点。

其中由两个节点组成的集群被称为双机热备,即使用两台服务器互相备份,当其中一台服务器出现问题时,
另一台服务器马上接管服务,来保护用户的业务程序对外不间断提供的服务,当然集群系统更可以支持两个以上的节点,
提供比双机热备更多、更高级的功能,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度。
在集群中为了防止服务器出现“脑裂”的现象,集群中一般会添加Fence设备,有的是使用服务器本身的的硬件接口称为内部Fence,
有的则是外部电源设备称为外部Fence,当一台服务出现问题响应超时的时候,Fence设备会对服务器直接发出硬件管理指令,将服务器重启或关机,并向其他节点发出信号接管服务。
在红帽系统中我们通过luci和ricci来配置管理集群,其中luci安装在一台独立的计算机上或者节点上,luci只是用来通过web访问来快速的配置管理集群的,
它的存在与否并不影响集群。ricci是安装在每个节点上,它是luci与集群给节点通信的桥梁。

实验环境:

server1: 172.25.66.1       HA1 (高可用节点:ricci) , 管理节点(luci)
server2: 172.25.66.2       HA2 (高可用节点:ricci)  
物理机: 172.25.66.254      fence端

防火墙状态:关闭
1.配置fence

1.配置yum源

#1.查看镜像文件
[root@foundation66 ~]# cd /var/www/html/rhel6.5
[root@foundation66 rhel6.5]# ls  
#2.配置yum源
[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo 
#################
[HighAvailability]                   #高可用
name=HighAvailability
baseurl=http://172.25.66.254/rhel6.5/HighAvailability
gpgcheck=0

[LoadBalancer]                       #负载均衡
name=LoadBalancer
baseurl=http://172.25.66.254/rhel6.5/LoadBalancer
gpgcheck=0

[ResilientStorage]                   #存储
name=ResilientStorage
baseurl=http://172.25.66.254/rhel6.5/ResilientStorage
gpgcheck=0

[ScalableFileSystem]                 #文件系统
name=ScalableFileSystem
baseurl=http://172.25.66.254/rhel6.5/ScalableFileSystem
gpgcheck=0

在这里插入图片描述

#清理缓存
[root@server1 ~]# yum clean all

在这里插入图片描述

#3.列出yum源的详细信息,检测yum源是否配置成功
[root@server1 ~]# yum repolist

在这里插入图片描述

#4.传输yum源文件
[root@server1 ~]# scp /etc/yum.repos.d/rhel-source.repo root@172.25.66.2:/etc/yum.repos.d/
#清理缓存
[root@server2 ~]# yum clean all

在这里插入图片描述

#列出yum源的详细信息
[root@server2 ~]# yum repolist

在这里插入图片描述
2.安装ricci、luci软件并设定ricci用户密码

在server1上:

#1.安装软件,luci:图形管理界面 ricci:
[root@server1 ~]# yum install -y luci ricci
#查看到自动生成了ricci用户
[root@server1 ~]# cat /etc/passwd 

在这里插入图片描述

#2.设定用户密码
[root@server1 ~]# passwd ricci

在这里插入图片描述

#3.开启ricci服务
[root@server1 ~]# /etc/init.d/ricci start

在这里插入图片描述

#4.开启luci服务
[root@server1 ~]# /etc/init.d/luci start

在这里插入图片描述

#查看端口
[root@server1 ~]# netstat -tnlp

在这里插入图片描述

#5.设定开机自动启动
[root@server1 ~]# chkconfig ricci on
[root@server1 ~]# chkconfig luci on

在serve2上:

#1.安装ricci软件
[root@server2 ~]# yum install -y ricci
#可查看到自动生成了ricci用户
[root@server2 ~]# cat /etc/passwd

在这里插入图片描述

#2.设定用户密码
[root@server2 ~]# passwd ricci

在这里插入图片描述

#3.开启ricci服务
[root@server2 ~]# /etc/init.d/ricci start

在这里插入图片描述

#4.设定开机自动启动
[root@server2 ~]# chkconfig ricci on

3.登陆并添加集群

输入: https:/172.25.66.1:8084     (luci的端口为8084)

在这里插入图片描述
在这里插入图片描述
登陆:(用server1的root用户登陆,因为luci图形管理器在server1结点上)
在这里插入图片描述
添加集群:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
集群添加好后server1和server2会自动重启,从而断开ssh连接
在这里插入图片描述
在这里插入图片描述
4.检测集群是否添加成功

在server1上:

#1.重新连接
[root@foundation66 images]# ssh root@172.25.66.1
#2.查看集群配置
[root@server1 ~]# cat /etc/cluster/cluster.conf 

在这里插入图片描述
注意:成功添加集群的前提是:必须先做好server1和server2主机上的解析

# 注意:一定要做好解析,因为写的都是主机名,而不是ip
[root@server1 ~]# cat /etc/hosts

在这里插入图片描述

#3.查看集群的状态
[root@server1 ~]# clustat

在这里插入图片描述
在server2上:

#1.重新连接
[kiosk@foundation66 ~]$ ssh root@172.25.66.2

#2.查看集群配置
[root@server2 ~]# cat /etc/cluster/cluster.conf

在这里插入图片描述

#3.查看集群的状态
[root@server2 ~]# clustat

在这里插入图片描述
5.添加fence设备
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6.安装fence和配置fence

在物理机上:

#1.安装fence
[root@foundation66 ~]# yum install -y fence-virtd.x86_64  fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 
#2.配置fence
[root@foundation66 ~]# fence_virtd -c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7.生成key并发送key

在物理机上:

[root@foundation66 ~]# ll -d /etc/cluster
ls: cannot access /etc/cluster: No such file or directory
#1.建立目录
[root@foundation66 ~]# mkdir /etc/cluster
[root@foundation66 ~]# cd /etc/cluster/
#2.dd截取,生成key
[root@foundation66 cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
1+0 records in
1+0 records out
128 bytes (128 B) copied, 0.000204459 s, 626 kB/s
[root@foundation66 cluster]# ls
fence_xvm.key
# cat无法查看key
[root@foundation66 cluster]# cat fence_xvm.key 

在这里插入图片描述

# hexdump方式便可查看key
[root@foundation66 cluster]# hexdump -C fence_xvm.key 

在这里插入图片描述

#3.发送key
[root@foundation66 cluster]# scp fence_xvm.key root@172.25.66.1:/etc/cluster
root@172.25.66.1's password: 
fence_xvm.key                                   100%  128   334.6KB/s   00:00    
[root@foundation66 cluster]# scp fence_xvm.key root@172.25.66.2:/etc/cluster
root@172.25.66.2's password: 
fence_xvm.key                                   100%  128   296.6KB/s   00:00 
#4.查看key是否发送成功
[root@server1 ~]# cd /etc/cluster/
[root@server1 cluster]# ll
total 12
-rw-r----- 1 root root  322 Feb 15 11:09 cluster.conf
drwxr-xr-x 2 root root 4096 Sep 16  2013 cman-notify.d
-rw-r--r-- 1 root root  128 Feb 15 11:23 fence_xvm.key

在这里插入图片描述

[root@server2 ~]# cd /etc/cluster/
[root@server2 cluster]# ll
total 12
-rw-r----- 1 root root  322 Feb 15 11:09 cluster.conf
drwxr-xr-x 2 root root 4096 Sep 16  2013 cman-notify.d
-rw-r--r-- 1 root root  128 Feb 15 11:23 fence_xvm.key

在这里插入图片描述
8.关联HA结点和fence设备

关联server1结点:(HA1)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关联server2结点:(HA2)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
9.开启fence服务

在物理机上:

[root@foundation66 cluster]# systemctl status fence_virtd.service 

在这里插入图片描述

#开启fence服务
[root@foundation66 cluster]# systemctl start fence_virtd.service 
[root@foundation66 cluster]# systemctl status fence_virtd.service 

在这里插入图片描述
10.测试fence

#1.使server2重启
[root@server1 ~]# fence_node server2
fence server2 success

发现此时server2会重启
在这里插入图片描述

#2.重新连接
[kiosk@foundation66 ~]$ ssh root@172.25.66.2
root@172.25.66.2's password: 
Last login: Fri Feb 15 11:02:19 2019 from 172.25.66.254
#3.查看集群状态,server2恢复正常
[root@server2 ~]# clustat 

在这里插入图片描述

2.配置失败回切

1.配置故障切换
在这里插入图片描述
在这里插入图片描述
2.配置资源
在这里插入图片描述
添加vip:
在这里插入图片描述
在这里插入图片描述
添加脚本:设定自动启动(我这里用的是apache,也可以用nginx启动脚本)
在这里插入图片描述
在这里插入图片描述
3.配置apache服务

在server1上:

#1.安装apache
[root@server1 ~]# yum install -y httpd
#2.编写默认发布文件
[root@server1 ~]# cd /var/www/html/
[root@server1 html]# ls
[root@server1 html]# vim index.html
[root@server1 html]# cat index.html 
server1
#3.开启apache服务
[root@server1 html]# /etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.66.1 for ServerName
                                                           [  OK  ]

在这里插入图片描述
在server2上:

#1.安装apache
[root@server2 ~]# yum install -y httpd
#2.编写默认发布文件
[root@server2 ~]# cd /var/www/html/
[root@server2 html]# ls
[root@server2 html]# vim index.html
[root@server2 html]# cat index.html 
server2
#3.开启apache服务
[root@server2 html]# /etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.66.2 for ServerName
                                                           [  OK  ]

在这里插入图片描述
测试apache服务是否配置成功:

[root@foundation66 ~]# curl 172.25.66.1
server1
[root@foundation66 ~]# curl 172.25.66.2
server2

在这里插入图片描述
4.关闭apache服务

[root@server1 html]# /etc/init.d/httpd stop
Stopping httpd:                                            [  OK  ]

[root@server2 html]# /etc/init.d/httpd stop
Stopping httpd:                                            [  OK  ]

5.资源整合

在这里插入图片描述
注意:直接点击刚才添加过的vip:172.25.66.100/24和刚才添加过的启动脚本httpd即可将资源整合
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Submit提交后,发现apache服务和vip在server2结点上

#1.查看apahce服务的状态
[root@server1 html]# /etc/init.d/httpd status
httpd is stopped
[root@server2 html]# /etc/init.d/httpd status
httpd (pid  10481) is running...
[root@foundation66 ~]# curl 172.25.66.1
curl: (7) Failed connect to 172.25.66.1:80; Connection refused
[root@foundation66 ~]# curl 172.25.66.2
server2
#2.查看集群的状态
[root@server1 html]# clustat

在这里插入图片描述

#3.查看vip
[root@server1 html]# ip a

在这里插入图片描述

#查看vip,发现vip在server2结点上
[root@server2 html]# ip a

在这里插入图片描述
6.模拟结点server2结点的脑裂:(内核崩溃)

注意:vip在哪个结点上就使哪个结点内核崩溃
在这里插入图片描述
在这里插入图片描述
脑裂后,发现server2结点自动重启,vip漂移到 server1结点上

[root@server1 html]# ip a

在这里插入图片描述

[root@foundation66 ~]# curl 172.25.66.100
server1

5秒钟后发现vip又自动回切到server2结点上

#1.重新登陆
[kiosk@foundation66 ~]$ ssh root@172.25.66.2
#2.查看vip,发现vip回切到server2结点上
[root@server2 ~]# ip a

在这里插入图片描述

3.添加存储

实验环境:

server3           服务端 :共享设备(scsi)

server1,server2  客户端 :发现设备 登陆(iscsi)

1.添加设备
在这里插入图片描述

[root@server3 ~]# fdisk -l

在这里插入图片描述
2.安装软件

#在服务端安装scsi
[root@server3 ~]# yum install -y scsi-*
#在客户端安装iscsi
[root@server1 html]# yum install -y iscsi-*
[root@server2 ~]# yum install -y iscsi-*

3.在服务端共享设备

#1.共享设备
[root@server3 ~]# vim /etc/tgt/targets.conf 
#################
<target iqn.2019-02.com.example:server.target1>
    backing-store /dev/vda
</target>

在这里插入图片描述

#2.开启服务
[root@server3 ~]# /etc/init.d/tgtd start
Starting SCSI target daemon:                               [  OK  ]
#3.查看进程
[root@server3 ~]# ps ax

在这里插入图片描述
4.在客户端发现设备并登陆

在server1上:

#1.发现设备
[root@server1 html]# iscsiadm -m discovery -t st -p 172.25.66.3
Starting iscsid:                                           [  OK  ]
172.25.66.3:3260,1 iqn.2019-02.com.example:server.target1
#2.登陆设备
[root@server1 html]# iscsiadm -m node -l
Logging in to [iface: default, target: iqn.2019-02.com.example:server.target1, portal: 172.25.66.3,3260] (multiple)
Login to [iface: default, target: iqn.2019-02.com.example:server.target1, portal: 172.25.66.3,3260] successful.

在这里插入图片描述

#3.查看设备
[root@server1 html]# fdisk -l

在这里插入图片描述
在server2上:

#1.发现设备
root@server2 ~]# iscsiadm -m discovery -t st -p 172.25.66.3
Starting iscsid:                                           [  OK  ]
172.25.66.3:3260,1 iqn.2019-02.com.example:server.target1
#2.登陆设备
[root@server2 ~]# iscsiadm -m node -l
Logging in to [iface: default, target: iqn.2019-02.com.example:server.target1, portal: 172.25.66.3,3260] (multiple)
Login to [iface: default, target: iqn.2019-02.com.example:server.target1, portal: 172.25.66.3,3260] successful.

在这里插入图片描述

#3.查看设备
[root@server2 ~]# fdisk -l

在这里插入图片描述
问题:若分区被破坏,该如何恢复数据呢?

解决方案:只划分一个分区或是不分区

只划分一个分区:(在server1或server2上均可做此实验)

#1.创建分区
[root@server2 ~]# fdisk -cu /dev/sdb

在这里插入图片描述
在这里插入图片描述

#2.查看分区
[root@server2 ~]# cat /proc/partitions 

在这里插入图片描述

#3.格式化
[root@server2 ~]# mkfs.ext4 /dev/sdb1

在这里插入图片描述

#4.挂载
[root@server2 ~]# mount /dev/sdb1 /mnt
[root@server2 ~]# df

在这里插入图片描述

#5.测试:发现可读可写
[root@server2 ~]# cd /mnt
[root@server2 mnt]# touch file
[root@server2 mnt]# rm -rf file
[root@server2 mnt]# cd 
#6.卸载
[root@server2 ~]# umount /mnt

模拟分区被破坏:

#1.备份
[root@server2 ~]# dd if=/dev/sdb of=mbr bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00183908 s, 278 kB/s
[root@server2 ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  mbr
#2.破坏分区
[root@server2 ~]# dd if=/dev/zero of=/dev/sdb bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00210575 s, 243 kB/s
#3.查看分区,发现消失
[root@server2 ~]# fdisk -l

在这里插入图片描述

#4.查看分区,发现分区/dev/vdb1还存在
[root@server2 ~]# cat /proc/partitions 

在这里插入图片描述
此时分区尚且可以使用

#1.此时还可以挂载分区
[root@server2 ~]# mount /dev/sdb1 /mnt
[root@server2 ~]# df

在这里插入图片描述

#2.也可读可写
[root@server2 ~]# cd /mnt
[root@server2 mnt]# touch file
[root@server2 mnt]# rm -rf file 
[root@server2 mnt]# cd
[root@server2 ~]# umount /mnt

但当系统重启后,分区便无法再继续使用

#1.重启系统
[root@server2 ~]# reboot
#2.重新连接
[kiosk@foundation66 ~]$ ssh root@172.25.66.2
#3.查看分区,发现分区消失
[root@server2 ~]# fdisk -l

在这里插入图片描述

#4.查看分区,发现分区消失
[root@server2 ~]# cat /proc/partitions 

在这里插入图片描述

#5.挂载失败
[root@server2 ~]# mount /dev/sdb /mnt
mount: you must specify the filesystem type

恢复分区:

#1.恢复分区数据
[root@server2 ~]# dd if=mbr of=/dev/sdb
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0339798 s, 15.1 kB/s
#2.查看分区,发现分区恢复
[root@server2 ~]# fdisk -l

在这里插入图片描述

#3.查看分区,发现分区未恢复
[root@server2 ~]# cat /proc/partitions 

在这里插入图片描述

#4.进入分区,p查看分区
[root@server2 ~]# fdisk -cu /dev/sdb

在这里插入图片描述

#5.此时发现分区被恢复
[root@server2 ~]# cat /proc/partitions 

在这里插入图片描述
如果未备份分区的情况下,分区被破坏便将无法恢复数据,故而最好的方式便是不分区

#删除分区
[root@server2 ~]# fdisk -cu /dev/sdb

在这里插入图片描述

#查看分区
[root@server2 ~]# cat /proc/partitions 

在这里插入图片描述
5.配置mysql缓存

(1).后台管理存储

#1.安装mysql服务
[root@server1 html]# yum install -y mysql-server
#数据库存储数据目录为/var/lib/mysql/
[root@server1 ~]# ll /var/lib/mysql/
total 0
#安装mysql服务 
[root@server2 ~]# yum install -y mysql-server
#2.格式化
[root@server1 ~]# mkfs.ext4  /dev/sdb

在这里插入图片描述

#3.将共享设备挂载到数据库的存储数据的目录上
[root@server1 ~]# mount /dev/sdb /var/lib/mysql/
#4.查看是否挂载成功
[root@server1 ~]# df

在这里插入图片描述

#发现数据不允许mysql用户可写
[root@server1 ~]# ll -d /var/lib/mysql/
drwxr-xr-x 3 root root 4096 Feb 15 17:10 /var/lib/mysql/
#5.更改文件的所有用户及组
[root@server1 ~]# chown mysql.mysql /var/lib/mysql/
[root@server1 ~]# ll -d /var/lib/mysql/
drwxr-xr-x 3 mysql mysql 4096 Feb 15 17:10 /var/lib/mysql/
#6.开启数据库服务
[root@server1 ~]# /etc/init.d/mysqld start

在这里插入图片描述

#7.查看到mysql.sock套接字(程序访问的入口)
[root@server1 ~]# cd /var/lib/mysql/
[root@server1 mysql]# ll

在这里插入图片描述

#8.发现此时无法卸载设备
[root@server1 mysql]# cd 
[root@server1 ~]# umount /var/lib/mysql/

在这里插入图片描述

#9.发现此时可以登陆数据库
[root@server1 ~]# mysql 

在这里插入图片描述

#10.将数据库服务关闭
[root@server1 ~]# /etc/init.d/mysqld stop
Stopping mysqld:                                           [  OK  ]
#11.查看到mysql.sock套接字消失
[root@server1 ~]# ll /var/lib/mysql/

在这里插入图片描述

#12.此时便可以成功卸载设备
[root@server1 ~]# umount /var/lib/mysql/

(2).图形界面管理存储

1.关闭apache服务

在这里插入图片描述
2.添加资源
在这里插入图片描述
添加vip:

在这里插入图片描述
添加文件系统:
在这里插入图片描述

添加启动脚本:
在这里插入图片描述
在这里插入图片描述
3.添加故障切换
在这里插入图片描述
在这里插入图片描述
4.整合资源
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现新添加的vip和mysql服务都在server1结点上

#1.查看集群状态
[root@server1 ~]# clustat

在这里插入图片描述

#查看集群状态
[root@server2 ~]# clustat

在这里插入图片描述

#2.查看mysql服务的状态
[root@server1 ~]# /etc/init.d/mysqld status
mysqld (pid  29991) is running...
#查看mysql服务的状态
[root@server2 ~]# /etc/init.d/mysqld status
mysqld is stopped
#3.查看vip
[root@server1 ~]# ip a

在这里插入图片描述

#查看vip
[root@server2 ~]# ip a

在这里插入图片描述
开启apache服务后发现:mysql服务在server1结点上,apache服务在server2结点上

#1.开启apache服务(-e表示手动激活,-d表示手动关闭)
[root@server2 ~]# clusvcadm -e apache
Local machine trying to enable service:apache...Success
service:apache is now running on server2
[root@server2 ~]# clustat

在这里插入图片描述

#2.查看 vip
[root@server1 ~]# ip a

在这里插入图片描述

#查看 vip
[root@server2 ~]# ip a

在这里插入图片描述
手动将apache服务更改到server1结点上失败

#手动将apache服务更改到server1上,此时会时失败,由于设定了apache服务运行独占
[root@server2 ~]# clusvcadm -r apache -m server1
Trying to relocate service:apache to server1...Operation violates dependency rule

在图形上将运行独占关闭后,便可实现apache服务的转移
在这里插入图片描述
在这里插入图片描述

#1.手动将apache服务更改到server1上
[root@server2 ~]# clusvcadm -r apache -m server1
Trying to relocate service:apache to server1...Success
service:apache is now running on server1
#2.查看vip
[root@server1 ~]# ip a

在这里插入图片描述
排错:如果无法手动激活sql数据库服务怎么办(网页上也无法激活)?

[root@server1 ~]# clustat
Cluster Status for westos_ha @ Sat Feb 16 09:52:12 2019
Member Status: Quorate

 Member Name                             ID   Status
 ------ ----                             ---- ------
 server1                                     1 Online, Local, rgmanager
 server2                                     2 Online, rgmanager

 Service Name                   Owner (Last)                   State         
 ------- ----                   ----- ------                   -----         
 service:apache                 server2                        started       
 service:sql                    (server2)                      failed        
#手动激活数据库服务失败
[root@server1 ~]# clusvcadm -e sql
Local machine trying to enable service:sql...Aborted; service failed
#先手动关闭数据库服务
[root@server1 ~]# clusvcadm -d sql
Local machine disabling service:sql...Success
#再重新激活数据库服务,然而仍然失败
[root@server1 ~]# clusvcadm -e sql
Local machine trying to enable service:sql...Failure

解决方案:

[root@server1 ~]# cd /var/lib/mysql/
[root@server1 mysql]# ll
total 0
[root@server1 mysql]# cat /proc/partitions 
major minor  #blocks  name

   8        0   20971520 sda
   8        1     512000 sda1
   8        2   20458496 sda2
 253        0   19439616 dm-0
 253        1    1015808 dm-1
   8       16    8388608 sdb
#1.挂载
[root@server1 mysql]# mount /dev/sdb /var/lib/mysql/
[root@server1 mysql]# df
Filesystem                          1K-blocks    Used Available Use% Mounted on
/dev/mapper/vg_foundation62-lv_root  19134332 1137048  17025304   7% /
tmpfs                                  380152   25656    354496   7% /dev/shm
/dev/sda1                              495844   33448    436796   8% /boot
/dev/sdb                              8256952  170960   7666564   3% /var/lib/mysql
#2.查看数据库的存储目录
[root@server1 mysql]# cd /var/lib/mysql/
#3.发现问题:有mysql.sock套接字,但数据库的状态为关闭状态
[root@server1 mysql]# ll
total 20504
-rw-rw---- 1 mysql mysql 10485760 Feb 15 17:16 ibdata1
-rw-rw---- 1 mysql mysql  5242880 Feb 15 17:41 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Feb 15 17:13 ib_logfile1
drwx------ 2 mysql mysql    16384 Feb 15 17:10 lost+found
drwx------ 2 mysql mysql     4096 Feb 15 17:13 mysql
srwxrwxrwx 1 mysql mysql        0 Feb 15 17:41 mysql.sock
drwx------ 2 mysql mysql     4096 Feb 15 17:13 test
[root@server1 mysql]# /etc/init.d/mysqld status
mysqld is stopped
#4.解决方案:先将套接字删除,再卸载,然后重新激活即可
[root@server1 mysql]# rm -rf mysql.sock 
[root@server1 mysql]# cd 
#卸载
[root@server1 ~]# umount /dev/sdb
#手动开启数据库服务
[root@server1 ~]# clusvcadm -e sql
Local machine trying to enable service:sql...Success
service:sql is now running on server1
#此时集群状态便恢复正常
[root@server1 ~]# clustat 
Cluster Status for westos_ha @ Sat Feb 16 09:57:45 2019
Member Status: Quorate

 Member Name                             ID   Status
 ------ ----                             ---- ------
 server1                                     1 Online, Local, rgmanager
 server2                                     2 Online, rgmanager

 Service Name                   Owner (Last)                   State         
 ------- ----                   ----- ------                   -----         
 service:apache                 server2                        started       
 service:sql                    server1                        started       
4.实现数据同步

将共享设备挂载后,发现两个结点并不能实现数据同步

#1.先将apache服务移回到server2结点上
[root@server1 ~]# clusvcadm -r apache -m server2
Trying to relocate service:apache to server2...Success
[root@server1 ~]# clustat 

在这里插入图片描述

#2.数据库服务sql启动后会自动挂载
[root@server1 ~]# df

在这里插入图片描述

#3.server2结点需要手动挂载
[root@server2 ~]# mount /dev/sdb /var/lib/mysql/
[root@server2 ~]# df

在这里插入图片描述

#4.查看数据目录
[root@server2 ~]# cd /var/lib/mysql/
[root@server2 mysql]# ll

在这里插入图片描述

#5.复制文件到该数据目录下
[root@server2 mysql]# cp /etc/passwd .
[root@server2 mysql]# ll

在这里插入图片描述

#6.发现数据并未同步,这样很不合理
[root@server1 ~]# cd /var/lib/mysql/
[root@server1 mysql]# ll

在这里插入图片描述
那么如何才能实现数据的同步呢?

首先,要实现存储功能除了使用iscsi技术以外,还可以使用lvm逻辑卷

1.卸载并关闭apache和sql服务

#1.卸载
[root@server2 mysql]# cd
[root@server2 ~]# umount /dev/sdb
[root@server2 ~]# df

在这里插入图片描述

#2.关闭apache服务
[root@server1 mysql]# clusvcadm -d apache
Local machine disabling service:apache...Success
#3.关闭sql服务;注意:关闭sql服务之前需要先卸载并关闭mysqld服务
[root@server1 ~]# /etc/init.d/mysqld stop
Stopping mysqld:                                           [  OK  ]
[root@server1 ~]# umount /dev/sdb
[root@server1 ~]# clusvcadm -d sql
Local machine disabling service:sql...Success

2.创建逻辑卷lvs

#1.查看设备
[root@server1 ~]# cat /proc/partitions 

在这里插入图片描述

#2.创建物理卷
[root@server1 ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
[root@server1 ~]# pvs
  PV         VG              Fmt  Attr PSize  PFree
  /dev/sda2  vg_foundation62 lvm2 a--  19.51g    0 
  /dev/sdb                   lvm2 a--   8.00g 8.00g

在这里插入图片描述

#发现server2结点同步有物理卷
[root@server2 ~]# pvs
  PV         VG              Fmt  Attr PSize  PFree
  /dev/sda2  vg_foundation62 lvm2 a--  19.51g    0 
  /dev/sdb                   lvm2 a--   8.00g 8.00g

在这里插入图片描述

#3.创建物理卷组
[root@server1 ~]# vgcreate clustervg /dev/sdb
  Clustered volume group "clustervg" successfully created
  [root@server1 ~]# vgs
  VG              #PV #LV #SN Attr   VSize  VFree
  clustervg         1   0   0 wz--nc  8.00g 8.00g
  vg_foundation62   1   2   0 wz--n- 19.51g    0 

在这里插入图片描述

#发现server2结点同步有物理卷组
[root@server2 ~]# vgs
  VG              #PV #LV #SN Attr   VSize  VFree
  clustervg         1   0   0 wz--nc  8.00g 8.00g
  vg_foundation62   1   2   0 wz--n- 19.51g    0 

在这里插入图片描述

#4.创建逻辑卷
[root@server1 ~]# lvcreate -L 4G -n demo clustervg
  Logical volume "demo" created
[root@server1 ~]# lvs
  LV      VG              Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  demo    clustervg       -wi-a-----   4.00g                                             
  lv_root vg_foundation62 -wi-ao----  18.54g                                             
  lv_swap vg_foundation62 -wi-ao---- 992.00m                                             

在这里插入图片描述

#发现server2结点同步有逻辑卷
[root@server2 ~]# lvs
  LV      VG              Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  demo    clustervg       -wi-a-----   4.00g                                             
  lv_root vg_foundation62 -wi-ao----  18.54g                                             
  lv_swap vg_foundation62 -wi-ao---- 992.00m            

在这里插入图片描述
3.设备的伸缩及使用(非必要步骤)

(1).格式化设备

#格式化为ext4类型
[root@server1 ~]# mkfs.ext4 /dev/clustervg/demo 

在这里插入图片描述

#查看设备参数
[root@server1 ~]# blkid

在这里插入图片描述
(2).拉伸逻辑卷设备

[root@server1 ~]# lvextend -L +4G /dev/clustervg/demo 
  Extending logical volume demo to 8.00 GiB
  Insufficient free space: 1024 extents needed, but only 1023 available
[root@server1 ~]# lvextend -l +1023 /dev/clustervg/demo 
  Extending logical volume demo to 8.00 GiB
  Logical volume demo successfully resized
[root@server1 ~]# lvs
  LV      VG              Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  demo    clustervg       -wi-a-----   8.00g                                             
  lv_root vg_foundation62 -wi-ao----  18.54g                                             
  lv_swap vg_foundation62 -wi-ao---- 992.00m                                             

在这里插入图片描述

#发现server2结点同步逻辑卷拉伸
[root@server2 ~]# lvs
  LV      VG              Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  demo    clustervg       -wi-a-----   8.00g                                             
  lv_root vg_foundation62 -wi-ao----  18.54g                                             
  lv_swap vg_foundation62 -wi-ao---- 992.00m        

在这里插入图片描述
(3).检测文件系统并拉伸文件系统

#1.检测文件系统
[root@server1 ~]# e2fsck -f /dev/clustervg/demo 

在这里插入图片描述

#2.拉伸文件系统
[root@server1 ~]# resize2fs /dev/clustervg/demo 

在这里插入图片描述
(4).挂载

[root@server1 ~]# mount /dev/clustervg/demo /var/lib/mysql/
[root@server1 ~]# df

在这里插入图片描述
(5).卸载并删除逻辑卷

[root@server1 ~]# umount /var/lib/mysql/
[root@server1 ~]# lvremove /dev/clustervg/demo 
Do you really want to remove active clustered logical volume demo? [y/n]: y
  Logical volume "demo" successfully removed
[root@server1 ~]# lvs
  LV      VG              Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root vg_foundation62 -wi-ao----  18.54g                                             
  lv_swap vg_foundation62 -wi-ao---- 992.00m                                             

在这里插入图片描述
(6).重新创建逻辑卷

[root@server1 ~]# lvcreate -L +4G -n demo clustervg
  Logical volume "demo" created
[root@server1 ~]# lvs
  LV      VG              Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  demo    clustervg       -wi-a-----   4.00g                                             
  lv_root vg_foundation62 -wi-ao----  18.54g                                             
  lv_swap vg_foundation62 -wi-ao---- 992.00m            

在这里插入图片描述
其次,mkfs.gfs2要实现数据的同步的前提是:

#1.clvmd服务为开启状态
[root@server1 ~]# /etc/init.d/clvmd status

在这里插入图片描述

#2.设定为3表示开启集群锁
[root@server1 ~]# vim /etc/lvm/lvm.conf

在这里插入图片描述

#注意:如果不是3,则需要手动设定
[root@server1 ~]# lvmconf --enable- cluster^C

4.利用gfs实现数据的同步

#1.查看集群名称
[root@server1 ~]# clustat 

在这里插入图片描述

#2.gfs指定锁,同步数据;-p指定集群锁,-j日志数目,-t集群名称,mygfs2自定义名称

[root@server1 ~]# mkfs.gfs2 -p lock_dlm -j 2 -t westos_ha:mygfs2 /dev/clustervg/demo 

在这里插入图片描述

#查看信息
[root@server1 ~]# gfs2_tool sb /dev/clustervg/demo all

在这里插入图片描述

#3.挂载
[root@server1 ~]# mount /dev/clustervg/demo /var/lib/mysql/
[root@server1 ~]# df

在这里插入图片描述

#4.更改文件所有用户和组
[root@server1 ~]# ll -d /var/lib/mysql/
drwxr-xr-x 2 root root 3864 Feb 16 12:05 /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 12:05 /var/lib/mysql/
#5.在server2结点上也需要挂载设备
[root@server2 ~]# mount /dev/clustervg/demo /var/lib/mysql/
[root@server2 ~]# df

在这里插入图片描述
测试:

当只在server1结点上开启数据库服务,发现该结点上的套接字mysql.sock同步到了server2结点

#1.开启数据库服务
[root@server1 ~]# /etc/init.d/mysqld start

在这里插入图片描述

#2.可查看到mysql.sock套接字(数据库服务开启后自动生成)
[root@server1 ~]# cd /var/lib/mysql/
[root@server1 mysql]# ll

在这里插入图片描述

#3.查看到server2结点上的数据库服务为关闭状态,但发现数据目录中有mysql.sock套接字,这是由server1结点与server2结点发生了数据同步
[root@server2 ~]# /etc/init.d/mysqld status
mysqld is stopped
[root@server2 ~]# cd /var/lib/mysql/
[root@server2 mysql]# ll

在这里插入图片描述
在server1结点的数据目录中直接建立文件,发现server2结点同步生成了该文件,进一步验证实现了数据同步

#1.建立文件
[root@server1 mysql]# touch files
[root@server1 mysql]# ll

在这里插入图片描述

#2.发现数据同步
[root@server2 mysql]# ll

在这里插入图片描述
图形界面配置存储:

1.删除dbdata文件系统

注意:先删除整合资源中的文件系统,才能删掉dbdata,否则会报错:资源正在使用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以直接在图形界面添加GFS2资源到集群中,但这样做很不方便
故而采用手动添加存储的方式

2.手动添加存储(设定自动开机挂载即可)

在server1上:

#1.关闭数据库
[root@server1 ~]# /etc/init.d/mysqld stop
Stopping mysqld:                                           [  OK  ]
[root@server1 ~]# df

在这里插入图片描述

#2.查看UUID
[root@server1 ~]# blkid 

在这里插入图片描述

#3.设定开机自动挂载
[root@server1 ~]# vim /etc/fstab 
#################
UUID="3c46e342-f15e-d988-6fd2-ea32daf063e7"  /var/lib/mysql        gfs2       _netdev        0 0
                    UUID                         挂载点         文件系统类型     网络设备     不检测不备份                                                                

在这里插入图片描述

#3.先卸载
[root@server1 ~]# umount /var/lib/mysql/
#4.检测开机自动挂载是否生效
[root@server1 ~]# mount -a 
[root@server1 ~]# df

在这里插入图片描述
在server2上:(做相同的操作)

[root@server2 mysql]# df

在这里插入图片描述

#1.设定开机自动挂载
[root@server2 mysql]# vim /etc/fstab 
###################
UUID="3c46e342-f15e-d988-6fd2-ea32daf063e7"  /var/lib/mysql      gfs2   _netdev     0 0         

在这里插入图片描述

#2.先卸载
[root@server2 mysql]# cd 
[root@server2 ~]# umount /var/lib/mysql/`在这里插入代码片`
#3.检测开机自动挂载是否生效
[root@server2 ~]# mount -a
[root@server2 ~]# df

在这里插入图片描述
测试:

[root@server2 ~]# cd /var/lib/mysql/
[root@server2 mysql]# ll

在这里插入图片描述

#1.拷贝文件
[root@server2 mysql]# cp /etc/passwd .
[root@server2 mysql]# ll

在这里插入图片描述

#2.查看到文件同步,即实现了数据同步
[root@server1 ~]# cd /var/lib/mysql/
[root@server1 mysql]# ll

在这里插入图片描述

#查看日志
[root@server1 mysql]# gfs2_tool journals /dev/clustervg/demo 

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值