方案:
corosync + pacemaker 提供HA的解决方案。
使用NFS共享服务器导出的共享文件系统做为数据目录;
拓扑图如下:

一、配置HA高可用集群的各节点间能够基于主机名通讯。
1、设置主机名
(1)、在 192.168.60.128 主机设置
编辑/etc/sysconfig/network文件,使得主机名永久有效
使用hostname命令设置主机名,让它即时生效
(2)、在 192.168.60.22 主机设置
编辑/etc/sysconfig/network文件,使得主机名永久有效
使用hostname命令设置主机名,让它即时生成
2、为了,操作方便设置节点之间能够基于密钥通讯。也就是所谓的建立信任主机。
3、节点之间基于主机名通讯,要能够解析主机名才可以。解析主机名有两种方式:
(1)、使用DNS地址解析服务器;
(2)、使用本地hosts文件解析
基于效率和安全方面考虑,这里使用hosts文件解析主机名。
把/etc/hosts文件复制到node2节点
4、测试两个节点能够实现基于密钥的方式进行通讯和能否基于主机名进行通讯
说明:
从上述可以看出,两个节点已经能够实现基于主机名的方式进行通讯。
二、配置NFS服务器
1、提供NFS服务器共享的文件系统
使用LVM逻辑卷做为数据库的数据目录,为了使用逻辑卷的快照功能备份数据。
(1)、创建分区
(2)、把该分区做成pv
(3)、创建逻辑卷组myvg,PE大小为8E.
(4)、创建lvm,大小为:2G
(5)、创建挂载点
(6)、编辑/etc/fstab文件,实现开机可以自动挂载“/dev/myvg/sharedir”
(7)、挂载
查看是否挂载
2、配置挂载NFS服务器共享的文件系统的客户端中的数据库服务进程(mysql)具有共享文件系统(目录)的读写权限。
把NFS服务器导出的文件系统中,作为数据库的数据目录,根据NFS服务器的工作原理,NFS的客户端可以往NFS服务器导出的文件系统(目录)写数据要满足两个条件:
(A)、在NFS服务器级别,做访问控制时候是否授写NFS客户端写(w)的权限;
(B)、在NFS客户端发起写(W)操作的进程的属主对应的UID,在NFS服务器端所在的主机是否该UID
对应的用户。
1)、如果有的话,那么就检查该用户是否有NFS服务器导出的文件系统(目录)的写权限。如果有
写权限的话,那么NFS客户端的进程就可以往NFS服务器导出的文件系统发起写操作了。否则
的话NFS客户端是无权限往NFS服务器导出的文件系统写数据的。
2)、如果没有的话,那就就检查nobody用户是否有NFS服务器导出的文件系统(目录)的写权限。
不过在Linux系统上,nobody用户的权限是最小。
因为,在MySQL数据库中,接收客户端SQL操作请求的进程的属主是:mysql. 所以,我们要配置该用户的UID号在NFS服务器所在的主机上有对应的用户名,且要求该用户有NFS服务器导出的文件系统(目录),有读写权限。对HA高可用节点和NFS服务器,三台主机添加下述用户:
规划在三台主机都使用系统用户,且UID都为:404;GID都为:404.
(1)、在三台主机设置用户
(A)、在node1 主机创建mysql用户
(B)、在node2 主机创建mysql用户
(C)、在NFS服务器也创建UID、GID都为:404的用户;
(2)、授权
(A)、在文件系统级别授权;使用控制列表方式,授权UID为:404的用户usenfs有NFS服务器导出的文件系统的读写权限。
(B)、设置NFS服务器导出的文件系统,在NFS级别做访问控制。
启动NFS服务器
(3)、查看NFS服务器导出的文件系统
(4)、创建MariDB数据库的数据目录
使用控制列表方式授与 usefs 用户有该目录的读写执行权限。