Corosync+Pacemaker+NFS+Mysql高可用集群部署(使用资源管理工具crmsh配置)
框架:crmsh(Corosync+pacemaker)+nfs+mysql
集群节点1:192.168.88.132 cen7.field.com
集群节点2:192.168.88.133 node2.field.com
集群节点3:192.168.88.135 node3.field.com
vip: 192.168.88.188 资源代理:ocf:heartbeat:IPaddr
nfs服务器:node3.field.com 资源代理:ocf:heartbeat:Filesystem
mysql服务器:cen7.field.com node1.field.com 资源代理:lsb:mysqld
配置集群的前提
(1)、时间同步;
(2)、基于当前正在使用的主机名互相访问;
(3)、是否会用到仲裁设备;
参考 :《使用资源管理工具pcs配置Corosync+pacemaker》
一、配置NFS服务器:共享目录作为mysql的datadir
该步骤中:主要通过创建逻辑卷并设置开机自动挂载到nfs共享目录,用于存放mysql数据库文件,其所有者必须是mysql用户和mysql组。
1、创建逻辑卷
1)、fdisk创建物理卷分区
[root@node3 ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00057c95
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 1075199 536576 83 Linux
/dev/sda2 1075200 3174399 1049600 82 Linux swap / Solaris
/dev/sda3 3174400 36728831 16777216 83 Linux
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
已选择分区 4
起始 扇区 (36728832-62914559,默认为 36728832):
将使用默认值 36728832
Last 扇区, +扇区 or +size{K,M,G} (36728832-62914559,默认为 62914559):+2G
分区 4 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):t
分区号 (1-4,默认 4):4
Hex 代码(输入 L 列出所有代码):8e -->说明:用作物理卷的分区id为8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
2)、使用partprobe让内核识别新建的分区
[root@node3 ~]# partprobe /dev/sda
3)、查看新建立的分区
[root@node3 ~]# fdisk -l
磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00057c95
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 1075199 536576 83 Linux
/dev/sda2 1075200 3174399 1049600 82 Linux swap / Solaris
/dev/sda3 3174400 36728831 16777216 83 Linux
/dev/sda4 36728832 40923135 2097152 8e Linux LVM -->标记为LVM
4)、创建物理卷
[root@node3 ~]# pvcreate /dev/sda4
Physical volume "/dev/sda4" successfully created.
5)、创建卷组
[root@node3 ~]# vgcreate myvg /dev/sda4
Volume group "myvg" successfully created
6)、创建大小为500M的逻辑卷
[root@node3 ~]# lvcreate -L 500M -n lv_mydata myvg
Logical volume "lv_mydata" created.
7)、格式化逻辑卷
[root@node3 ~]# mke2fs -j /dev/myvg/lv_mydata
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=67633152
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
2、挂载共享存储
1)、创建挂载的目录/mydata作为nfs共享存储介质
[root@node3 ~]# mkdir /mydata
2)、设置开机自动挂载
[root@node3 ~]# vim /etc/fstab
/dev/myvg/lv_mydata /mydata ext3 defaults 0 0
3)、挂载测试挂载成功与否
[root@node3 ~]# mount -a
[root@node3 ~]# ls /mydata/
lost+found
3、启动nfs服务并配置共享存储
1)、启动nfs服务
[root@node3 ~]# systemctl start nfs.service
[root@node3 ~]# systemctl status nfs.service
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
Active: active (exited) since 六 2018-08-04 03:43:47 CST; 6s ago
Process: 1442 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 1438 ExecStartPre=/bin/sh -c /bin/kill -HUP `cat /run/gssproxy.pid` (code=exited, status=0/SUCCESS)
Process: 1436 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 1442 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service
8月 04 03:43:47 node3.field.com systemd[1]: Starting NFS server and services...
8月 04 03:43:47 node3.field.com systemd[1]: Started NFS server and services.
2)、添加共享存储文件,用于存放mysql数据的目录
[root@node3 ~]# vim /etc/exports
#/www/hadocs 192.168.88.0/24(rw)
/mydata 192.168.88.0/24(rw,no_root_squash)
#该网段的主机可读写,不需root用户
3)、编辑测试页
[root@node3 ~]# echo "<h1>Test page on NFS Service</h1>" >/mydata/index.html
4)、重启nfs服务并修改共享目录属组属主为mysql,注意:此步骤为必须操作
[root@node3 ~]# systemctl restart nfs.service
[root@node3 ~]# chown -R mysql.mysql /mydata
chown: 无效的用户: "mysql.mysql"
[root@node3 ~]# groupadd -g 306 -r mysql
[root@node3 ~]# useradd -g mysql -u 306 -s /sbin/nologin mysql
[root@node3 ~]# id mysql
uid=306(mysql) gid=306(mysql) 组=306(mysql)
[root@node3 ~]# chown -R mysql.mysql /mydata
二、编译、安装、配置、测试Mariadb
该步骤主要分两大步:cen7节点安装和node2节点安
(一)、cen7节点上的编译、安装、配置、测试Mariadb
1、安装前配置
1)、创建mysql用户、组和挂载目录
[root@cen7 ~]# groupadd -g 306 -r mysql
[root@cen7 ~]# useradd -u 306 -g mysql -r mysql
[root@cen7 ~]# mkdir /mydata
2)、挂载NFS文件系统并确认
[root@cen7 ~]# mount -t nfs 192.168.88.135:/mydata /mydata
[root@cen7 ~]# mount |grep nfs
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
192.168.88.135:/mydata on /mydata type nfs4 (rw,relatime,vers=4.1,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.88.132,local_lock=none,addr=192.168.88.135)
[root@cen7 ~]# ls /mydata
index.html lost+found
3)、以mysql用户身份创建data目录,作为初始化时的数据存放目录(datadir)
注意:mysql初始化只需在集群节点中的一个进行一次,后续集群会自动挂载配置,另一台机mariadb不需初始化,所以不用以mysql用户创建data目录
[root@cen7 ~]# su - mysql
su: 警告:无法更改到 /home/mysql 目录: 没有那个文件或目录
-bash-4.2$ cd /mydata
-bash-4.2$ mkdir data
-bash-4.2$ exit
登出
2、源码编译安装Mariadb
说明:此处采用10.0以上版本可能会因为c++版本低编译无法通过,笔者采用mariadb-5.5.61.tar.gz安装包
[root@cen7 ~]# ls
anaconda-ks.cfg mariadb-5.5.61.tar.gz python-parallax-1.0.0a1-7.1.noarch.rpm
crmsh-3.0.0-6.2.noarch.rpm ~None python-pssh-2.3.1-7.3.noarch.rpm
crmsh-scripts-3.0.0-6.2.noarch.rpm pssh-2.3.1-7.3.noarch.rpm
1)、编译安装mariadb
[root@cen7 ~]# tar xf mariadb-5.5.61.tar.gz -C /usr/local
[root@cen7 ~]# cd /usr/local/
[root@cen7 local]# ln -sv mariadb-5.5.61 mysql
"mysql" -> "mariadb-5.5.61"
[root@cen7 local]# cd mysql
注意:修改文件属主属组为