基于heartbeat v2 crm实现基于nfs的mysql高可用集群

前言

因heartbeat v1内置的资源管理器haresource功能比较简单,且不支持图形化管理,所以heartbeat v2不再支持haresource,转而使用更加强大的资源管理器crm进行集群管理。本文将讲解如何基于heartbeat v2 crm实现基于nfs的mysql高可用集群。

高可用实现

实验拓扑

实验环境

node1:172.16.10.123 mariadb-5.5.36 CentOS6.6

node2:172.16.10.124 mariadb-5.5.36 CentOS6.6

NFS:172.16.10.125 CentOS6.6

Windows环境需安装Xmanager Enterprise 5

配置过程

NFS服务器配置

[[email protected] ~]# vim /etc/exports

/mydata         172.16.0.0/16(rw,no_root_squash)

[[email protected] ~]# service nfs start

安装mysql

#在node1和node2上分别进行如下操作

[[email protected] mysql]# vim /etc/mysql/my.cnf 

datadir = /mydata/data

log-bin=/mydata/binlogs/master-bin

[[email protected] mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

#注意:初始化操作只在一个节点执行即可

启动服务测试一下

同样node2上执行以上操作后也启动测试

测试完成即可卸载共享目录

[[email protected] mysql]# umount /mydata/

#在两个节点分别执行

安全起见,此时可将nfs的no_root_squash选项去掉

[[email protected] ~]# vim /etc/exports 

/mydata         172.16.0.0/16(rw)

[[email protected] ~]# exportfs -arv
exporting 172.16.0.0/16:/mydata

heartbeat配置

时间同步

ntpdate

节点解析通信

[[email protected] ~]# vim /etc/hosts
 
172.16.10.123   node1.scholar.com node1
172.16.10.124   node2.scholar.com node2
 
[[email protected] ~]# vim /etc/sysconfig/network
HOSTNAME=node1.scholar.com
 
[[email protected] ~]# uname -n
node1.scholar.com
 
#两个节点都需如上操作

ssh密钥配置

[[email protected] ~]# ssh-keygen -t rsa -P ‘‘
[[email protected] ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
[[email protected] ~]# ssh-keygen -t rsa -P ‘‘
[[email protected] ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
[[email protected] ~]# date; ssh node2 ‘date‘ #测试
Mon Jun  8 16:33:36 CST 2015
Mon Jun  8 16:33:36 CST 2015

安装所需软件包

#解决依赖关系
[[email protected] ~]# yum install perl-TimeDate net-snmp-libs libnet PyXML -y #需epel源支持
[[email protected] ~]# cd heartbeat2/
[[email protected] heartbeat2]# ls
heartbeat-2.1.4-12.el6.x86_64.rpm             heartbeat-pils-2.1.4-12.el6.x86_64.rpm
heartbeat-gui-2.1.4-12.el6.x86_64.rpm         heartbeat-stonith-2.1.4-12.el6.x86_64.rpm
heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm
[[email protected] heartbeat2]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-
12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-gui-2.1.4-12.el6.x8
6_64.rpm

#两个节点都执行以上操作

准备配置文件

[[email protected] ~]# cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,authkeys} /etc/ha.d
[[email protected] ~]# chmod 600 /etc/ha.d/authkeys

配置算法密钥

[[email protected] ~]# openssl rand -hex 8
4d8fd6cb49d2047b
[[email protected] ~]# vim /etc/ha.d/authkeys
 
auth 2
2 sha1 4d8fd6cb49d2047b

配置主配置文件

#配置文件如下
[[email protected] ~]# grep -v "#" /etc/ha.d/ha.cf |grep -v "^$"
logfile /var/log/ha-log  #日志存放位置
keepalive 2              #指定心跳使用间隔时间
deadtime 30              #指定备用节点接管主节点服务资源超时时间
warntime 10              #指定心跳延迟的时间
initdead 120             #解决网络启动延时
udpport 694              #设置广播通信端口
mcast eth0 225.0.25.1 694 1 0 #定义广播地址
auto_failback on              #定义当主节点恢复后,是否将服务自动切回
node    node1.scholar.com     #主节点
node    node2.scholar.com     #备用节点
ping 172.16.0.1               #仲裁设备
crm on                        #启用crm

将配置文件传给备用节点

启用crm图形界面时需要登录密码,在安装heartbeat-gui时会自动创建一个名为hacluster的用户,在任一节点上设置hacluster的密码即可

启动heartbeat

查看集群状态

[[email protected] ~]# crm_mon

启动gui界面

[[email protected] ~]# hb_gui &

Node:节点列表
Resources:资源列表
Constraints:限制约束
Locations:位置约束,资源对某节点运行的倾向性
Orders:顺序约束,属于同一服务的多个资源运行在同一节点时,其启动及关闭的次序约束
Colocations:排列约束,定义资源彼此间的倾向性(是否在一起)
资源类型:
primitive, native: 主资源,其仅能运行某一节点
group: 组资源,可用于实现限制多个资源运行于同一节点及对此些资源统一进行管理
clone: 克隆资源,一个资源可以运行于多个节点
       应该指定:最大克隆的份数,每个节点最多可以运行的克隆
master/slave: 主从资源,特殊的克隆资源

mysql的高可用需要3个资源:ip,mysqld,nfs,这3个资源都要运行在一个节点上,而且mysqld要在nfs启动之后出能启动,ip地址和mysqld服务之间没有先后关系,服务准备好后再启动ip也是可以的。高可用的httpd服务需要先启动ip,因为服务启动的时候明确需要ip地址的资源,这两类高可用资源之间是不同的。

添加资源

首先定义一个组

添加第一个资源

添加第二个资源

添加第三个资源

添加资源约束

nfs要和mysqld在一个节点

ip要和mysqld在一个节点

定义排列约束后这3个资源会同时运行在同一个节点上,需要注意的是mysqld服务要在nfs挂载之后启动,所以需要定义资源顺序约束

定义好顺序约束之后还可定义位置约束,可定义更倾向运行在哪个节点

添加表达式及对该节点的倾向性

启动所有资源

因为倾向于node1,所以资源运行于node1上,我们在node1授权一个用户测试

在其他客户端测试

此时模拟node1挂掉了,将node1设置为standby模式

再次连接数据库测试

数据没有受到丝毫影响,再次将node1上线,资源会再次回到node1,这里就不再演示了,至此,基于heartbeat v2 crm实现基于nfs的mysql高可用集群完成

The end

本次实验就进行到这里了,实验过程出现问题可以留言交流,后文将会提供另一种高可用方案:mysql + drbd + corosync,有兴趣可以继续关注。以上仅为个人学习整理,如有错漏,大神勿喷~~~

时间: 2024-10-15 07:26:31

基于heartbeat v2 crm实现基于nfs的mysql高可用集群的相关文章

heartbeat v2配置高可用web集群和基于nfs搭建MySQL高可用集群

安装环境:Centos 6.4, httpd2.4,mysql5.5,heartbeat v2 提供两台机器node1和node2,在/etc/hosts文件中添加名称解析,并且主机名称要与节点名称要相同,即uname -n的名称要和hosts定义的名称必须一样. #   IP                         HOSTNAME             ALIAS 10.204.80.79     node1.mylinux.com     node1 10.204.80.80  

heatbeat-gui实现基于nfs的mysql高可用集群

一.简述HA高可用集群 高可用集群就是当集群中的一个节点发生各种软硬件及人为故障时,集群中的其他节点能够自动接管故障节点的资源并向外提供服务.以实现减少业务中断时间,为用户提供更可靠,更高效的服务. 二.基于nfs实现mysql的高可用集群配置 环境准备接上文 heartbeat-gui部署 实验环境: nfs server准备 1.在nfs server准备LVM存储空间 [[email protected] ~]# fdisk /dev/sdb Device contains neither

Linux高可用集群方案之配置heartbeat v2基于crm+hb_gui接口,配置ipvs高可用集群

  基于crm+hb_gui接口配置ipvs高可用集群    基于crm+hb_gui+ldirectored接口配置ipvs高可用集群 

基于Corosync + Pacemaker+DRBD实现MySQL高可用集群

前言 在众多的高可用集群解决方案中,除了Heartbeat之外,Corosync也能提供类似于Heartbeat一样的功能,而且目前RedHat官方提供的高可用集群解决方案的程序包都以Corosync为主,所以在未来的日子Corosync会逐渐取代Heartbeat.本文带来的是基于Corosync + Pacemaker+DRBD的MySQL高可用集群解决方案. 相关介绍 Corosync Corosync是从OpenAIS中分支出来的一个项目,它在传递信息的时候可以通过一个简单的配置文件来定

mysql高可用集群——heartbeat+drbd

heartbeat+drbd+mysql是一种早期的mysql高可用技术. 资料来源:http://www.drbd.org DRBD原理:DRBD是对磁盘块操作的复制,可看做网络raid1.不复制磁盘内容,只复制操作.原理可见下图 架构描述 服务器列表 192.168.1.82 192.168.1.1 3306 主 /dev/drbd0 192.168.1.82 192.168.1.2 3306 备 /dev/drbd0 架构图 安装配置: 配置drbd 1.检查机器名解析: 1.查看解析 s

高可用集群之heartbeat v2--基于CRM实现mysql高可用集群(未完)

实验说明: 本实验基于heartbeat的crm,实现对mysql服务的高可用,并没有高可用mysql的数据. 未完部分:使用hb_gui配置挂载nfs时,指定挂载选项,失败. mysql数据和配置文件放在nfs共享存储上 mysql配置文件使用--default-extra-file指定 mysql用户对nfs共享的有读写权限,nfs服务器和mysql所在服务器的mysql的id号要保持一致 在nfs服务器上 1 修改hostname # vim /etc/sysconfig/network

基于云端虚拟机的LVS/DR+Keepalived+nginx的高可用集群架构配置

最近,公司要我部署一个集群架构,选来选取还是选择了大家都很熟悉的基于DR的LVS+Keepalived做负载分发,然后使用轻量级的nginx做中间代理层,这里呢先暂时实现一个简单web应用功能,对于代理功能和后续的web层部署.数据层安排将择机更新! 首先看一下集群框架:   下面开始我们的集群搭建行程: 一.IP规划: 做一件事情需要想想怎么去做既简单又有条理,我们做项目也应该如此.所以这里一定先做一个简单的规划,对于你后续测试的时候出现不能分发的情况有所解决. 负载均衡层          

# IT明星不是梦 #MySQL高可用集群之基于MyCat部署HaProxy实现高可用

基于MyCat部署HaProxy实现高可用 在实际项目中, Mycat 服务也需要考虑高可用性,如果 Mycat 所在服务器出现宕机,或 Mycat 服务故障,需要有备机提供服务,需要考虑 Mycat 集群. 一.高可用方案 可以使用 HAProxy+Keepalived配合两台MyCat搭起MyCat集群,实现高可用性. HAProxy实现了MyCat多节点的集群高可用和负载均衡,而 HAProxy自身的高可用则可以通过Keepalived来实现. 架构图: 于上一个博客的环境部署(MySQL

Linux高可用集群方案之配置heartbeat v2基于crm+hb_gui接口,配置http+msyql+nfs高可用集群

  基于crm+hb_gui接口配置http+mysql+nfs高可用集群    基于crm+hb_gui接口配置ipvs高可用集群    基于crm+hb_gui+ldirectored接口配置ipvs高可用集群