基于corosync/openais+NFS实现MYSQL的高可用
2012-08-04 14:22
731 查看
实验准备:
MYSQL软件包:mysql-5.5.24-linux2.6-i686.tar.gz
corosync软件包:corosync-1.2.7-1.1.el5.i386.rpm和corosynclib-1.2.7-1.1.el5.i386.rpm
pacemaker软件包:pacemaker-1.1.5-1.1.el5.i386.rpm,pacemaker-cts-1.1.5-1.1.el5.i386.rpm,pacemaker-libs-1.1.5-1.1.el5.i386.rpm
资源代理包: resource-agents-1.0.4-1.1.el5.i386.rpm
其他依赖包有:cluster-glue-1.0.6-1.6.el5.i386.rpm,cluster-glue-libs-1.0.6-1.6.el5.i386.rpm,heartbeat-3.0.3-2.3.el5.i386.rpm,heartbeat-libs-3.0.3-2.3.el5.i386.rpm,libesmtp-1.0.4-5.el5.i386.rpm
实验环境:
本实验是基于虚拟机操作的。相关信息如下拓扑图:
实验步骤:
在NFS服务器上
1、首先创建逻辑卷并挂载共享目录
2、启动NFS服务
(1)#service nfs start
(2)编辑/etc/exports文件,添加如下行后保存退出
/sharedata 192.168.0.11(rw,no_root_squash) 192.168.0.66(rw,no_root_squash)
(3)#exportfs -ra //导出共享目录
(4)使用showmount -e 192.168.0.100 查看共享是否成功
在集群节点上
1、首先集群节点要做好高可用的事前工作
(1)同步时间
(2)主机名解析。主机名要与执行uname -n命令得到结果保持一致。
在/etc/hosts文件中添加两节点的解析条目。
192.168.0.11 node1
192.168.0.66 node2
(3)建立双发互信
使用ssh-keygen -t rsa 此时在当前目录下生成.ssh隐藏目录,生成私钥
使用ssh-copy-id -i ./ssh/id_rsa.pub root@node2 将私钥发送给两外一个节点。
ssh node2 'ifconfig' 如果此时不用输入密码等信息就可直接得到node2的IP值,则说明互信配置成功
在node1上也做相应的操作。
2、安装MYSQL
(1)配置node1
node1与node2的数据文件是保持一致的,所以在此直接将node1的配置文件远程发送到node2上即可。
(2)配置node2。
注:在node2上已经初始化了数据库,所以在node2上不用再次初始化数据库。
进入命令行查看node1创建的数据库是否存在。此时可能出错,因为root用户没有对数据操作的权限。切换至mysql用户即可。
此时查看。
如图所示,testdb可以顺利访问。
3、安装corosync
(1)编辑配置文件corosync.conf
(2)生成节点间通信时用到的认证密钥文件并分别为两个节点创建corosync生成的日志所在的目录。
(3)启动服务后检查日志文件中的有关配置信息
(4)如果上面命令执行均没有问题,接着可以执行如下命令启动node2上的corosync
# ssh node2 '/etc/init.d/corosync start'
注:启动node2需要在node1上使用如上命令进行,不要在node2节点上直接启动
(5)查看集群节点的启动状态
由上述信息可知,两节点以正常启动。
4、为集群添加集群资源。(本实验在node1上设置)
(1)配置集群属性
查看配置:
(2)添加资源
(3)定义约束
此时资源已经添加成功,而且都被定义在了node1上。
5、测试
(1)集群是否自动挂载数据
查看集群信息发现,此时可知共享资源定义在了node1上,那么查看挂载数据目录是否有数据。
之前创建的数据库testdb依然存在。集群挂载数据成功。
(2)测试远程用户
此时便可以使用远程的root用户访问数据库。
到此,基于corosync/openais的MYSQL的高可用便配置完成。
本文出自 “仙人掌叶子” 博客,请务必保留此出处http://yuan00.blog.51cto.com/5126136/954074
MYSQL软件包:mysql-5.5.24-linux2.6-i686.tar.gz
corosync软件包:corosync-1.2.7-1.1.el5.i386.rpm和corosynclib-1.2.7-1.1.el5.i386.rpm
pacemaker软件包:pacemaker-1.1.5-1.1.el5.i386.rpm,pacemaker-cts-1.1.5-1.1.el5.i386.rpm,pacemaker-libs-1.1.5-1.1.el5.i386.rpm
资源代理包: resource-agents-1.0.4-1.1.el5.i386.rpm
其他依赖包有:cluster-glue-1.0.6-1.6.el5.i386.rpm,cluster-glue-libs-1.0.6-1.6.el5.i386.rpm,heartbeat-3.0.3-2.3.el5.i386.rpm,heartbeat-libs-3.0.3-2.3.el5.i386.rpm,libesmtp-1.0.4-5.el5.i386.rpm
实验环境:
本实验是基于虚拟机操作的。相关信息如下拓扑图:
实验步骤:
在NFS服务器上
1、首先创建逻辑卷并挂载共享目录
创建两个分区并调整其类型为8e #pvcreate /dev/sda{5,6} vgcreate myvg /dev/sda{5,6} #lvcreate -n mylv -L 20G /dev/myvg #mke2fs -j /dev/myvg/mylv //格式化分区 #mkdir /sharedata #mount /dev/myvg/mylv /sharedata 使其能够开机自动挂载 编辑/etc/fstab文件,添加如下行后保存退出 /dev/myvg/mylv /sharedata ext3 defaults 0 0 #chown -R mysql.mysql /sharedata //此目录只有是mysql组的用户才能访问
2、启动NFS服务
(1)#service nfs start
(2)编辑/etc/exports文件,添加如下行后保存退出
/sharedata 192.168.0.11(rw,no_root_squash) 192.168.0.66(rw,no_root_squash)
(3)#exportfs -ra //导出共享目录
(4)使用showmount -e 192.168.0.100 查看共享是否成功
在集群节点上
1、首先集群节点要做好高可用的事前工作
(1)同步时间
(2)主机名解析。主机名要与执行uname -n命令得到结果保持一致。
在/etc/hosts文件中添加两节点的解析条目。
192.168.0.11 node1
192.168.0.66 node2
(3)建立双发互信
使用ssh-keygen -t rsa 此时在当前目录下生成.ssh隐藏目录,生成私钥
使用ssh-copy-id -i ./ssh/id_rsa.pub root@node2 将私钥发送给两外一个节点。
ssh node2 'ifconfig' 如果此时不用输入密码等信息就可直接得到node2的IP值,则说明互信配置成功
在node1上也做相应的操作。
2、安装MYSQL
(1)配置node1
#mkdir -pv /data/sqldata #mount -t nfs 192.168.0.100:/sharedata /data/sqldata //挂载共享数据 #groupadd -r mysql #useradd -g mysql -r mysql #tar xf mysql-5.5.24-linux2.6-i686.tar.gz -C /usr/local #cd /usr/local #ln -sv mysql-5.5.24-linux2.6-i686.tar.gz mysql #cd mysql #chown -R mysql:mysql . #cp support-files/my-large.cnf /etc/my.cnf #scripts/mysql_install_db --user=mysql --datadir=/data/sqldata //初始化 #chown -R root . 编辑配置文件 thread_concurrency = 2 datadir = /data/sqldata //指定mysql数据存放位置 #cp support-files/mysql.server /etc/rc.d/init.d/mysqld //sysV脚本 #chmod +x /etc/rc.d/init.d/mysqld 启动服务 #service mysqld start #/usr/local/mysql/bin/mysql //进入mysql create database testdb; //创建测试数据库
node1与node2的数据文件是保持一致的,所以在此直接将node1的配置文件远程发送到node2上即可。
#scp /etc/my.cnf node2:/etc #service mysqld stop #chkconfig mysqld off
(2)配置node2。
#mkdir -pv /data/sqldata #mount -t nfs 192.168.0.100:/sharedata /data/sqldata //挂载共享数据 #groupadd -r mysql #useradd -g mysql -r mysql #tar xf mysql-5.5.24-linux2.6-i686.tar.gz -C /usr/local #cd /usr/local #ln -sv mysql-5.5.24-linux2.6-i686.tar.gz mysql #cd mysql #chown -R mysql:mysql . #cp support-files/my-large.cnf /etc/my.cnf #chown -R root . 启动服务 #service mysqld start
注:在node2上已经初始化了数据库,所以在node2上不用再次初始化数据库。
进入命令行查看node1创建的数据库是否存在。此时可能出错,因为root用户没有对数据操作的权限。切换至mysql用户即可。
此时查看。
如图所示,testdb可以顺利访问。
3、安装corosync
使用yum安装‘实验准备’中的rpm包 #yum -y --nogpgcheck localinstall *.rpm
(1)编辑配置文件corosync.conf
#cd /etc/corosync #cp corosync.conf.example corosync.conf 编辑corosync.conf文件 bindnetaddr:192.168.0.0 //IP地址为网卡所在网络的网络地址 to_syslog: no 添加如下内容: service { ver: 0 name: pacemaker //启用pacemaker } aisexec { user: root group: root }
(2)生成节点间通信时用到的认证密钥文件并分别为两个节点创建corosync生成的日志所在的目录。
#scp -p corosync authkey node2:/etc/corosync/ #mkdir /var/log/cluster #ssh node2 'mkdir /var/log/cluster' 启动服务 #service corosync start
(3)启动服务后检查日志文件中的有关配置信息
查看corosync引擎是否正常启动: # grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/cluster/corosync.log 查看初始化成员节点通知是否正常发出: # grep TOTEM /var/log/cluster/corosync.log 检查启动过程中是否有错误产生: # grep ERROR: /var/log/cluster/corosync.log | grep -v unpack_resources 查看pacemaker是否正常启动: # grep pcmk_startup /var/log/cluster/corosync.log
(4)如果上面命令执行均没有问题,接着可以执行如下命令启动node2上的corosync
# ssh node2 '/etc/init.d/corosync start'
注:启动node2需要在node1上使用如上命令进行,不要在node2节点上直接启动
(5)查看集群节点的启动状态
由上述信息可知,两节点以正常启动。
4、为集群添加集群资源。(本实验在node1上设置)
(1)配置集群属性
#crm configure property stonith-enabled=fals //禁用stonith #crm configure property no-quorum-policy=ignore //当投票数不足时设置忽略策略 #crm configure rsc_defaults resource-stickiness=100 //设置资源粘性
查看配置:
(2)添加资源
将VIP定义为高可用资源 #crm configure primitive vip ocf:heartbeat:IPaddr params ip=172.16.19.1 将NFS定义为高可用资源 #crm configure primitive mynfs ocf:heartbeat:Filesystem params device='192.168.0.100:/sharedata' directory='/data/sqldata' fstype="nfs" op start timeout=60 op stop timeout=60 //这里的两个op选项必须设置 定义mysqld服务 #crm configure primitive mysqld lsb:mysqld
(3)定义约束
#crm configure colocation mysql_with_mynfs inf: mynfs mysqld vip 定义次序 #crm configure order mynfs_befrore_mysql madatory: mynfs mysqld:start #crm configure order myip_befrore_mysql madatory: vip mysqld:start
此时资源已经添加成功,而且都被定义在了node1上。
5、测试
(1)集群是否自动挂载数据
查看集群信息发现,此时可知共享资源定义在了node1上,那么查看挂载数据目录是否有数据。
之前创建的数据库testdb依然存在。集群挂载数据成功。
(2)测试远程用户
进入mysql命令,授权用户 grant all to *.* on root@‘%’ identified by '123456'; flush privileges;
此时便可以使用远程的root用户访问数据库。
到此,基于corosync/openais的MYSQL的高可用便配置完成。
本文出自 “仙人掌叶子” 博客,请务必保留此出处http://yuan00.blog.51cto.com/5126136/954074
相关文章推荐
- 基于Corosync/openais和NFS服务器实现MySQL的高可用
- 基于NFS和corosync实现mysql高可用
- Corosync/openais和NFS服务器实现MySQL的高可用
- 基于corosync和NFS服务器实现mysql的高可用
- 基于corosync/openais和NFS服务器实现LNMP的高可用
- 基于Corosync/openais和ldirectord实现LVS(DR)中的Director的高可用
- corosync+heartbeat+mysql+nfs实现mysql高可用 推荐
- 基于corosync和NFS服务器实现LNMP的高可用
- Heartbeat(基于crm)+NFS+Mysql实现mysql的高可用 推荐
- corosync/openais+pacemaker+nfs提供mysql高可用
- 基于drbd&&corosync实现高可用mysql
- corosync+heartbeat+mysql+nfs实现mysql高可用
- corosync与pacemaker实现nfs作为共享存储的Mysql高可用!
- 基于Corosync + LNMP + NFS 服务实现高可用
- 基于corosync/openais和ldirectord实现LVS(DR)的高可用
- 技术实战:基于 MHA 方式实现 MySQL 的高可用
- lvs+ldirectord+pacemaker+corosync+mysql实现高可用负载均衡(一)
- 基于MHA和Galera Cluster实现MySQL高可用
- corosync(openais)+drbd+pacemaker实现mysql服务器的高可用性群集
- corosync + pacemaker + nfs 构建高可用mysql集群