heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

时间:2022-05-25 03:12:44

heartbeat(四)

heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

 

        前面《高可用集群》认识高可用集群的一些基本概念,在《heartbeat v2 haresource配置高可用集群》认识heartbeat v2 haresource配置高可用集群,还在《heartbeat v2 haresource 配置NFS共享存储高可用集群》和《heartbeat v2 crm 配置高可用集群》进行NFS共享WEB存储的高可用集群应用配置,下面将会在前面的基础上用heartbeat v2 crm配置NFS共享存储的mysql高可用集群。

1、mysql高可用集群架构设计

       这里在上篇《heartbeat v2 crm 配置高可用集群》的架构基础上,进行一些改动,配置mysql高可用集群,具体架构资源如下:

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

1、节点主机系统:RHEL 5.8 64bit

2、高可用集群软件:Heartbeat v2 crm

3、两台节点主机node1,node2:

Node1: IP:192.168.18.241 host name:node1.tjiyu,com;

Node2: IP:192.168.18.242 host name:node2.tjiyu.com;

VIP: 192.168.18.240

Service:mysql

4、一台NFS服务主机:

IP:192.168.18.243

LVM:/dev/myvg/mydata

共享目录:/mydata(LVM),/mydata/data(mysql数据目录)

5、三台主机相同用户:mysql mysql(组) 3306(uid、gid)

2、相关准备配置

       本文是在前面的配置基础上进行的,前面说到的heartbeat配置前所需要的准备:

1、配置IP、安装WEB服务、关闭防火墙;

2、配置各节点名称;

3、建立各节点间的SSH互信通信;

4、各节点间的时间同步;

5、heartbeat v2下载安装;

6、如何配置使用crm/hb_gui;

       这里就不再详细给出了,下面开始来配置。

3、配置NFS共享存储

3-1、创建用户

       集群系统各节点mysql用户都需要对NFS共享目录下的mysql数据文件进行读写操作,这就需要用户有对该目录的读写权限,为方便,我们在三台主机分别创建相同的普通用户:用户名mysql ,属于mysql组,uid、gid都为 3306(如果uid、gid不一样就得对目录分别配置权限),稍后会为它们配置/mydata/data目录的读写权限,这样创建过程如下

[root@localhost ~]# groupadd -g 3306 mysql

[root@localhost ~]# useradd -u 3306 -g mysql -s /sbin/nologin -M mysql

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

3-2、创建NFS共享存储的LVM

       mysql数据最好放到LVM(Logical Volume Manager,逻辑卷管理),方便以后进行扩展空间、备份等操作,按照上面的架构设计进行配置,先创建20G的分区/dev/sda5,然后在分区上创建PV(Physical Volume,物理卷),再在PV分区上创建VG(Volume Group,卷组),最后在VG上创建10G(另10G备份)的LV(Logical Volume,逻辑卷),并将LV格式化为EXT3文件系统,创建过程如下:

[root@localhost ~]# fdisk /dev/sda

[root@localhost ~]# partprobe /dev/sda

[root@localhost ~]# fdisk –l

[root@localhost ~]# pvcreate /dev/sda5

[root@localhost ~]# vgcreate myvg /dev/sda5

[root@localhost ~]# lvcreate -L 10G -n mydata myvg

[root@localhost ~]# lvs

[root@localhost ~]# mke2fs -j /dev/myvg/mydata

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

3-3、创建NFS共享存储

1、先把上面创建的LVM挂载到/mydata目录下,需要配置/etc/fstab文件让LVM自动挂载,配置过程如下:

[root@localhost ~]# mkdir /mydata

[root@localhost ~]# vim /etc/fstab

[root@localhost ~]# mount –a

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

2、配置/etc/exprots使得各节点可以共享NFS输出目录/mydata,然后在共享目录下创建mysql的数据目录/mydata/data,并为上面创建的mysql用户分配读写权限。

       注意下面需要root用户进行mysql的安装初始化,会对共享目录进行读写,这就需要在配置/etc/exprots的时候加no_root_squash,否则root用户权限将被压缩成为匿名使用者权限,使得无法读写;但这个配置极不安全,最好开放到指定的IP,实际中不建议使用(不用NFS),配置过程如下:

[root@localhost ~]# mkdir /mydata/data

[root@localhost ~]# chown -R mysql.mysql /mydata/data/

[root@localhost ~]# ll -d /mydata/data/

[root@localhost ~]# vim /etc/exports

[root@localhost ~]# exportfs -arv

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

3、在node1和node2上分别创建挂载目录/mydata,并尝试挂载测试,测试后记得卸载:

[root@node2 ~]# mkdir /mydata

[root@node2 ~]# mount 192.168.18.243:/mydata /mydata

[root@node2 ~]# ls -l /mydata/

[root@node2 ~]# umount /mydata/

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

4、配置mysql数据到NFS

       mysql5.5版本相对5.6/5.7要小很多,就先用5.5的来测试;先到官网下载mysql-5.5.28-linux2.6-x86_64.tar.gz,放到两节点主机上,如果用yum安装反而比较麻烦,要做数据目录迁移等工作;

4-1、初始化mysql配置(node1)

       先在node1上对mysql进行初始化,首先解压mysql程序包,配置解压后程序目录文件的属组和属主为root组和上面创建的mysql用户;

       然后再次挂载NFS共享目录,初始化mysql数据到NFS共享存储目录(注意上面说的no_root_squash,没配置无法初始化),同时指定为mysql用户,配置过程如下:

[root@node1 ~]# tar -xf mysql-5.5.28-linux2.6-x86_64.tar.gz -C /usr/local

[root@node1 ~]# cd /usr/local/

[root@node1 local]# ln -sv mysql-5.5.28-linux2.6-x86_64 mysql

创建指向"mysql-5.5.28-linux2.6-x86_64"的符号链接"mysql"

[root@node1 local]# cd mysql

[root@node1 mysql]# chown -R root:mysql ./*

[root@node1 mysql]# ll

[root@node1 mysql]# mount 192.168.18.243:/mydata /mydata

[root@node1 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

4-2、配置mysql配置文件,并启动测试(node1)

      先把mysql配置文件my.cf放到/etc下,并添加mysql数据目录项datadir为上面配置的共享目录/mydata/data,以及加上每个innodb表为一个文件的配置;

      再把mysql服务脚本放到/etc/init.d/下(LSB),重命名mysqld,方便高可用集群的资源管理,然后配置禁止开机启动,配置如下:

[root@node1 mysql]# ls -l /mydata/data/

[root@node1 mysql]# cp support-files/my-large.cnf /etc/my.cnf

[root@node1 mysql]# vim /etc/my.cnf

[root@node1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld

[root@node1 mysql]# chkconfig --add mysqld

[root@node1 mysql]# chkconfig mysqld off

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

      启动mysql服务,并进行创建数据库的测试(注意上面说的no_root_squash,没配置无法创建数据库),如下:

[root@node1 mysql]# service mysqld start

[root@node1 mysql]# ./bin/mysql

mysql> create database tjuyi_db;

mysql> show databases;

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

4-2、node2配置mysql,并启动测试

       上面node1测试好的,接着转到node2上进行mysql的相关配置:首先解压mysql程序包,配置解压后程序目录文件的属组和属主为root组和上面创建的mysql用户;

       然后远程复制node1上刚才配置的两个文件/etc/my.cnf和/etc/init.d/mysqld到node2相同位置,配置mysqld禁止开机启动,这就行了,和在node1上配置差不多,区别是不需要进行初始化数据到共享目录,具体过程如下:

[root@node1 mysql]# scp -p /etc/my.cnf node2:/etc

[root@node1 mysql]# scp -p /etc/init.d/mysqld node2:/etc/init.d/

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

      启动mysql服务前先停止node1上的mysql服务,并卸载NFS共享目录;

      然后再在node2上启动mysql服务,进行测试,测试完后记得停止mysql服务,并卸载NFS共享目录,如下:

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

5、配置集群资源组

       参考上篇《heartbeat v2 crm 配置高可用集群》,我们使用比较简单的方式,把VIP、NFS存储和mysqld三个资源配置到资源组group_mysql_service里,按顺序启动,注意配置的参数,但首先得在node1上启动heartbeat高可用服务,看DC在node1上,再在node1上启动hb_gui,配置过程如下:

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

6、启动资源组测试

1、启用资源组,各资源在node1上正常运行,再在node1上的mysql给root分配权限和设置密码,然后在客户端上用VIP远程登录mysql,正常登录,看到里面有前面创建的tjiyu_db数据库,如下:

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

2、使活动节点node1成为备节点, node2成为主节点,各资源正常运行,再通过客户端上用VIP远程登录mysql,正常登录:

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

3、使活动节点node2成为备节点,node1重新成为主节点;各资源正常运行,再通过客户端连接VIP,正常连接,然后在tjiyu_db创建一个test表,一切正常:

heartbeat(四)heartbeat v2 crm 及 NFS共享存储的mysql高可用集群

 

      以上测试说明hb_gui配置的heartbeat crm提供了高可用功能,同时该mysql高可用集群使用了LVM-NFS共享存储。

      该mysql高可用集群存在很多不足,比如NFS服务单独一个主机容易出现故障,是不是也得提供高可用服务呢?后面再解决…..

 

      经过写这篇文章,对heartbeat v2 crm配置NFS共享存储的mysql高可用集群有了一个基本的认识,下面将认识下corosync及如何配置corosync高可用……

 

【参考资料】

1、Pacemaker:http://clusterlabs.org/wiki/Pacemaker

2、High-availability cluster:https://en.wikipedia.org/wiki/High-availability_cluster#Node_configurations|

3、高可用集群:http://blog.csdn.net/tjiyu/article/details/52643096

4、heartbeat v2 haresource配置高可用集群:http://blog.csdn.net/tjiyu/article/details/52663927

5、heartbeat v2 haresource 配置NFS共享存储高可用集群:http://blog.csdn.net/tjiyu/article/details/52669394

6、heartbeat v2 crm 配置高可用集群:http://blog.csdn.net/tjiyu/article/details/52675500

7、Linux LVM逻辑卷配置过程详解:http://dreamfire.blog.51cto.com/418026/1084729/

8、no_root_squash 是什么意思:http://zhidao.baidu.com/link?url=HA9ab5PYOtx2fdfUZfI1dn8__Qt0oMxPzMzVuQyHsVXoGffIVM2QGy9a2f-vTmrsJGsNOVWjta8P80Rg7It2mq