DRBD-8.4.6_Heartbeat-3.0.4_Mysql-5.6.24 高可用

1、简单拓扑图

2、安装环境


系统环境


操作系统


CentOS 6.6最小化安装


系统位数


64


内核版本


2.6.32


软件环境


软件名称


版本


DRBD


8.4.6


drbd-utils


8.9.2


Heartbeat


3.0.4


Mysql


5.6.24


网络环境


主机名


IP地址


镜像硬盘分区


VIP:由heartbeat虚拟


10.0.0.110


Mysql_1


eth0:10.0.0.101


/dev/VG/lv_data


Mysql_2


eth0:10.0.0.102


/dev/VG/lv_data

3、部署前准备

1)约定目录

源代码存放路径:/usr/local/src

软件编译安装路径:/usr/local

Mysql数据库存放路径:/data

2)设置/etc/hosts文件添加

10.0.0.101  Mysql_1

10.0.0.102  Mysql_2

3)关闭防火墙

# /etc/rc.d/init.d/iptables stop

# chkconfig iptables off

4)关闭selinux

#setenforce 0

#sed -i ‘s/SELINUX=enforcing/#SELINUX=enforcing/g‘ /etc/selinux/config

#sed -i ‘s/SELINUXTYPE=targeted/#SELINUXTYPE=targeted/g‘ /etc/selinux/config

#sed -i ‘$a SELINUX=disabled‘ /etc/selinux/config

5)同步时间

#ntpdate time.windows.com

6)设置yum源:这里笔者选择阿里云的epel yum源,用默认yum源也可以。

#mkdir –p /etc/yum.repos.d/repo_bak

#mv /etc/yum.repos.d/* /etc/yum.repos.d/repo_bak

#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

#yum clean all

#yum makecache

4、安装部署

1)DRBD的安装部署

(1)部署前说明:从DRBD 8.4.5开始的版本发生了变化,不再和以前一样只安装DRBD软件包就可以了,笔者推测可能是从liunx 内核 2.6.33 开始DRBD模块被集成到内核中去了,所以从DRBD 8.4.5开始需要编译安装的软件为drbd和drbd-utils。drbd用于编译安装模块,drbd-utils用于管理drbd模块,并提供配置文件。

(2)DRBD的安装

官网下载:

#wget http://oss.linbit.com/drbd/8.4/drbd-8.4.6.tar.gz-P /usr/local/src/

#tar -zxf /usr/local/src/drbd-8.4.6.tar.gz -C /usr/local/src

安装依赖软件,注意:如果内核版本有变,安装kernel会更新内核,可能导致其他软件不能正常运行,如果不想更新内核,可以找与本机内核对应的软件(kernel-devel kernel-headers),安装完成后记得重启计算机(重要),否则会出错。

#yum install -y kernel kernel-devel kernel-headers gcc flex libxslt

安装成功后会出现下面目录,记下之,下面要用

#ll -d /usr/src/kernels/2.6.32-504.16.2.el6.x86_64

开始编译安装drbd,和8.4.5之前版本有所不同,这里不用./configure,直接make就可以了

# cd/usr/local/src/drbd-8.4.6

# makeKDIR=/usr/src/kernels/2.6.32-504.16.2.el6.x86_64/

#make install

编译成功模块安装位置

# drbd.ko//lib/modules/2.6.32-504.16.2.el6.x86_64/updates

加载模块

# modprobedrbd

#lsmod | grep drbd

drbd                 365803  0                看到这个加载成功

libcrc32c              1246  1 drbd

(3)drbd-utils的安装

#wget http://oss.linbit.com/drbd/drbd-utils-8.9.2.tar.gz-P /usr/local/src/

# tar-zxf /usr/local/src/drbd-utils-8.9.2.tar.gz -C /usr/local/src

# cd/usr/local/src/drbd-utils-8.9.2

开始编译安装drbd-utils,这里用了--without-83support,因为笔者安装的是8.4以上版本

#./configure --prefix=/usr/local/drbd-utils-8.9.2 --without-83support

#make

#make install

在make install过程中出现了很多下面内容,但最后echo $? 结果为0的运行中暂没发现有问题

../shared_prereqs.mk:18:  xxxxxx  No such file or directory

安装成功后drbd相关的工具(drbdadm,drbdsetup)被安装到/sbin目录下

#cp /usr/local/drbd-utils-8.9.2/etc/rc.d/init.d/drbd /etc/rc.d/init.d/

# chkconfig--add drbd

#chkconfigdrbd on

(4)设置drbd.conf配置文件

本次编译安装配置文件位置:/usr/local/drbd-utils-8.9.2/etc/drbd.conf

配置文件主要分为三个部分:global、common、resource

# cat/usr/local/drbd-utils-8.9.2/etc/drbd.conf

# You can find an example in /usr/share/doc/drbd.../drbd.conf.example

include "drbd.d/global_common.conf";

include "drbd.d/*.res";

可看到,配置文件drbd.conf的配置指向了drbd.d目下的文件

global_common.conf一般用于配置global、common,*.res用于配置resource部分

如果配置资源比较少的也可以将全部内容写到drbd.conf,当配置资源多的时候写到相应文件上更有利于管理,不容易混乱

因为本示例比较简单,所以全部写到drbd.conf下

#include"drbd.d/global_common.conf";   注释掉

#include "drbd.d/*.res";                注释掉

global {

usage-count no;是否参加DRBD 使用者统计,默认参加

}

common {

syncer { rate 200M; }  设置主用节点和备用节点同步时的网络速率最大值,单位是字节

}

resource r0 {  资源名字为r0

protocol C;使用DRBD 的第三种同步协议(A B C),大多数用C,表示收到远程主机的写入确认后认为写入完成

startup {

wfc-timeout 120;在启用DRBD块时,初始化脚本drbd会阻塞启动进程的运行,直到对等节点的出现。该选项就是用来限制这个等待时间的,默认为0,即不限制,永远等待。

degr-wfc-timeout 120;也是用于限制等待时间,只是作用的情形不同:它作用于一个降级集群(即那些只剩下一个节点的集群)在重启时的等待时间。

}

disk {

on-io-error detach;策略:发生I/O错误的节点将放弃底层设备,以diskless mode继续工作

}

net{

timeout 60;如果搭档节点没有在此时间内发来应答包,那么就认为搭档节点已经死亡

connect-int 10;如果无法立即连接上远程DRBD设备,系统将断续尝试连接

ping-int 10;如果连接到远程DRBD设备的TCP/IP的空闲时间超过此值,系统将生成一个keep-alive包来检测对等节点是否还存活

max-buffers 2048;该选项设定一个由drbd分配的最大请求数,单位是页面大小(PAGE_SIZE),大多数系统中,页面大小为4KB。这些buffer用来存储那些即将写入磁盘的数据。最小值为32(即128KB)。这个值大一点好。

max-epoch-size 2048;该选项设定了两次write barriers之间最大的数据块数。如果选项的值小于10,将影响系统性能。大一点好。

cram-hmac-alg "sha1";该选项设定内核支持的一个算法,用于网络上的用户数据的一致性校验。通常的数据一致性校验,由TCP/IP头中所包含的16位校验和来进行,而该选项可以使用内核所支持的任一算法。该功能默认关闭。

shared-secret "Mysql-abcD";用来设定在对待节点授权中使用的密码,最长64个字符。

}

on Mysql_1 {  每个主机的说明以on 开头,后面是hostname

device /dev/drbd0;drbd设备名称

disk   /dev/VG/lv_data;/dev/drbd0使用的磁盘分区是/dev/VG/lv_data

address 10.0.0.101:6666;设置DRBD的监听端口,用于与另一台主机通信

meta-disk internal;DRBD的元数据存放方式

}

on Mysql_2 {

device /dev/drbd0;

disk   /dev/VG/lv_data;

address 10.0.0.102:6666;两台主机端口必须一致

meta-disk internal;

}

}

讲以上配置复制都两台主机相应目录下即可,更多参数说明,可以man drbd.conf

官方参考资料:

用户手册:http://drbd.linbit.com/users-guide-8.4/

语法及详解参数:http://drbd.linbit.com/users-guide-emb/re-drbdconf.html

(5)镜像硬盘设置

笔者用的LVM,分别在两台主机上创建一个5G的lv_data分区,两主机分区容量最好保持一致。怎么分区在这里就不详说了

如果用的是以使用分区,可以跳过创建分区这一步

# lvcreate-L 5G -n lv_data VG

#  mke2fs -t ext4 /dev/VG/lv_data  格式化分区

用dd写入点数据,不然可能会出错

#dd if=/dev/zero of=/dev/VG/lv_data bs=1M count=1

创建 drbd resource 名字要对应配置文件中的resource r0 参数

# drbdadmcreate-md r0

过程中会可能会出现应当问题,直接yes ,到最后出现下列信息表示成功

Newdrbd meta data block successfully created.

如果出现下列错误:

‘r0‘ not defined in your config (for this host).检查是否设置hosts文件和配置文件主机名是否一致

Exclusive open failed. Do it anyways  检查是否已经打开drbd服务,先关闭

启动两台主机的drbd服务

# /etc/rc.d/init.d/drbdstart

查看节点的状态:

# /etc/rc.d/init.d/drbdstatus 或 cat /proc/drbd

最终同步后的状态:

version: 8.4.6 (api:1/proto:86-101)

GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build [email protected]_1, 2015-05-14 00:00:27

0: cs:Connectedro:Secondary/Secondary ds:UpToDate/UpToDate C r-----

ns:5128124 nr:0 dw:0 dr:5128124 al:0 bm:0lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

cs:表示连接状态

ro: 表示主从关系 上面的表示都为从

ds:硬盘状态信息 上面表示已经实时同步中,Inconsistent:不一致

同步成功后两台主机会创建出设备/dev/drbd0

设置主从第一次执行

# drbdadm-- --overwrite-data-of-peer primary all

0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate Cr-----

之后平时可以执行

drbdadmprimary all

格式化/dev/drbd0

mke2fs-t ext4 /dev/drbd0

镜像创建完成

(6)挂载并同步测试

创建数据库目录

# mkdir/data

在主节点上进行挂载

# mount/dev/drbd0 /data

测试数据同步

在主节点创建数据

# ddif=/dev/zero of=/data/test.tmp bs=1M count=200

#ll /data

-rw-r--r--1 root root 209715200 5月  14 19:51 test.tmp

停止主节点drbd服务

#/etc/rc.d/init.d/drbd stop

在从节点上进行挂载

#drbdadm primary all

# mount/dev/drbd0 /data

#ll /data

-rw-r--r--1 root root 209715200 5月  14 19:51 test.tmp

测试成功

2)Mysql的安装部署

# wgethttp://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.24.tar.gz-P /usr/local/src/

#tar –zxf /usr/local/src/mysql-5.6.24.tar.gz –C /usr/local/src

#yum install -y gcc-c++ ncurses-devel cmake

创建用户和用户组

#groupadd mysql

#useradd -g mysql mysql -s /bin/false –M

开始编译安装

# cd/usr/local/src/mysql-5.6.24

# mv/etc/my.cnf /etc/my.cnf.bak

编译参数

# cmake. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.24

-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.24/mysql.sock

-DEXTRA_CHARSETS=all

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci

-DENABLED_LOCAL_INFILE=1

-DMYSQL_USER=mysql

-DMYSQL_TCP_PORT=3306

-DMYSQL_DATADIR=/data/mysql

-DSYSCONFDIR=/etc/

#make

#make install

设置访问权限

chown-R mysql:mysql /usr/local/mysql-5.6.24

初始数据库 主节点初始化,从节点不用

# /usr/local/mysql-5.6.24/scripts/mysql_install_db-basedir=/usr/local/mysql-5.6.24 -datadir=/data/mysql -user=mysql

设置配置文件my.cnf 主从主机配置文件一致一般数据库初始化生成次文件,如果没拷贝一份到从主机上即可

修改/usr/local/mysql-5.6.24/my.cnf

datadir=/data/mysql

basedir=/usr/local/mysql

#ln –s /usr/local/mysql-5.6.24/my.cnf /etc/my.cnf

设置启动服务

# cp/usr/local/mysql-5.6.24/support-files/mysql.server  /etc/rc.d/init.d/mysql

测试是否启动成功

# /etc/rc.d/init.d/mysqlstart

# /etc/rc.d/init.d/mysqlstatus

下面来配置heartbeat实现故障自动切换并挂载

3)heartbeat的安装部署

(1)hearteat的安装

这样笔者选择了yum安装,比较方便快捷

注意:如一开始配置了默认yum源的需要先下载三个文件

# wgethttp://mirrors.aliyun.com/epel/6/x86_64/heartbeat-3.0.4-2.el6.x86_64.rpm-P /usr/local/src/

# wgethttp://mirrors.aliyun.com/epel/6/x86_64/heartbeat-devel-3.0.4-2.el6.x86_64.rpm-P /usr/local/src/

# wgethttp://mirrors.aliyun.com/epel/6/x86_64/heartbeat-libs-3.0.4-2.el6.x86_64.rpm-P /usr/local/src/

然后安装heartbeat的必要组件,注意必须写一行安装不然出错

# yum-y install cluster-glue resource-agents pacemaker PyXML

#rpm -ivh heartbeat-3.0.4-2.el6.x86_64.rpm heartbeat-devel-3.0.4-2.el6.x86_64.rpmheartbeat-libs-3.0.4-2.el6.x86_64.rpm

如果选用了文章开头的epel yum 源执行下面操作

yuminstall heartbeat

(2)配置heartbeat

主备节点两端的配置文件(ha.cf authkeys haresources)完全相同

hearbeat配置文件目录为 /etc/ha.d/ 脚本存放目录:/etc/ha.d/resource.d/

cp/usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources} /etc/ha.d/

authkeys :通信认证方式,3种crc md5 sha1从左到右安全性越来越高,但消耗的资源也越多。

# vim /etc/ha.d/authkeys  这里用第一种

auth 1

1 crc

#chmod 600 /etc/ha.d/authkeys

ha.cf /etc/ha.d/ha.cf

修改部分去掉注释

logfile/var/log/ha-log   日志设置

logfacility     local0

keepalive2               心跳检测时间

ucasteth0 192.168.1.2    采用单播方式从哪个网卡接口检测对方的IP

auto_failbackon          当主节点Primary发生故障切换到Secondary后Primary恢复后是否进行切回操作

nodeMysql_1

nodeMysql_2

haresources  /etc/ha.d/haresources

添加下列行 注意:这里是一行写完的不要分两行写,不然会报错

Mysql_1    IPaddr::10.0.0.110/24/eth0 drbddisk::r0Filesystem::/dev/drbd0::/data::ext4 mysqld

解析:主主机名   设置VIP脚本::VIP::子掩码::网卡接口  设置DRBD主从脚本::resource名

主节点资源挂载卸载脚本::挂载设备::要挂载的目录::挂载的文件类型  数据库启动脚本

注意:新版本heartbeat不再提供drbddisk脚本,现在由drbd-utils提供

脚本位置:/root/soft/drbd-utils-8.9.2/scripts/drbddisk

(3)调整脚本

# cp/root/soft/drbd-utils-8.9.2/scripts/drbddisk /etc/ha.d/resource.d/

# ln-s /etc/rc.d/init.d/mysql /etc/ha.d/resource.d/mysqld

(4)测试heartbeat

[[email protected]_1~]# /etc/rc.d/init.d/heartbeat status

heartbeatOK [pid 1254 et al] is running on mysql_1 [mysql_1]...

[[email protected]_1~] ip addr|grep eth1

inet 10.0.0.101/24 brd 10.0.0.255 scopeglobal eth0

inet 10.0.0.110/24 brd 10.0.0.255 scopeglobal secondary eth0:0

(5)设置开机启动DRBD HeartBeat Mysql

设置DRBD启动脚本:chkconfig: - 70 08

设置HeartBeat启动脚本:chkconfig: - 75 05

设置Mysql启动脚本:chkconfig mysql off

由于要启动HeartBeat前要先启动DRBD,本方法利用了服务的开机和关机优先值进行设置,数字越小优先权越高,这样设置可以达到先开机启动BDRB的目的,关闭先关闭HeartBeat,这个正是我们想要的。其实这里默认就可以,官方已经给我们想好了。这里mysql不启动,由HeartBeat进行控制

也可以另外写脚本来实现

5、模拟故障测试(这里就不详细演示)

(1)停掉主节点的heartheat看看是否能正常切换。

(2)启动主节点的heartbeat看看是否能正常切换回来。

(3)停掉主节点的网络或者直接将master系统shutdown,看看能否正常切换。

(4)重新启动主节点看看能否切换正常。

(5)停掉主节点上的mysql,看看是否切换(因为heartheat不检查服务的可用性,因此需要通过而外的脚本来实现)。

(6)停掉主节点上的drbd,看看是否切换(因为heartheat不检查服务的可用性,因此需要通过而外的脚本来实现)

时间: 2024-10-10 17:07:42

DRBD-8.4.6_Heartbeat-3.0.4_Mysql-5.6.24 高可用的相关文章

Redis 3.0.7基于Sentinel的高可用安装及配置

在生产场景下都必须做到高可用,否则出现问题就会造成服务停止.这里介绍下Redis的Sentinel功能实现的高可用,当然也有Redis提供的cluster功能. 1.Redis的安装 wget http://download.redis.io/releases/redis-3.0.7.tar.gz tar zxf redis-3.0.7.tar.gz cd redis-3.0.7 make cd src mkdir -p /usr/local/redis3.0.7/{sbin,data,conf

最新Hadoop-2.7.2+hbase-1.2.0+zookeeper-3.4.8 HA高可用集群配置安装

Ip 主机名 程序 进程 192.168.128.11 h1 Jdk Hadoop hbase Namenode DFSZKFailoverController Hamster 192.168.128.12 h2 Jdk Hadoop hbase Namenode DFSZKFailoverController Hamster 192.168.128.13 h3 Jdk Hadoop resourceManager 192.168.128.14 h4 Jdk Hadoop resourceMan

DRBD+Heartbeat+Mysql 高可用实战

实验环境:Centos 6.7_64位 服务器: Master节点:dm1 IP地址:10.0.0.61(eth0) 192.168.3.150(eth1,心跳) Slave节点:dm2  Ip地址:10.0.0.62(eth0) 192.168.3.160(eth1,心跳) VIP地址:192.168.0.180 一.DRBD环境搭建 DRBD(DistributedReplicatedBlockDevice)是一个基于块设备级别在远程服务器直接同步和镜像数据的软件,用软件实现的.无共享的.服

15、 Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节

15. Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 参考自:http://oldboy.blog.51cto.com/2561410/1240412 heartbeat和keepalived应用场景及区别 很多网友说为什么不使用keepalived而使用长期不更新的heartbeat,下面说一下它们之间的应用场景及区别: 1.对于web,db,负载均衡(lvs,haproxy,nginx)等,heartbeat和keepalived都可以实现 2.lvs最好和keepa

Corosync+Pacemaker+DRBD实现MariaDB的高可用集群

Corosync简介 Corosync是高可用集群中基础事务层 (Messaging Layer)的一个实现方案与heartbeat的功能类似,主要用来传递集群的事务信息,但是Corosync的功能更加强大,正在逐渐地取代heartbeat.Corosync在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等. Pacemaker简介 Pacemaker是一个集群资源管理器,从heartbeat v3版本中分裂出来,功能强大.它利用集群事务层提供的组件对各节点进行资源管理及监控

mfs3.0.85+heartbeat+drbd集群高可用实现

mfs集群部署文档 1.内容简介 MFS有元数据服务器(mfsmaster).元数据日志存储服务器(mfsmetalogger).数据存储服务器(mfschunkserver).客户端(clients)组成. 目前MFS元数据服务器存在单点问题,因此我们可以通过DRBD提供磁盘及时同步,通过HeartBeat提供Failover,来达到高可用.实现高可用后,不使用mfsmetalogger. 2.机器分配: 角色 软件版本 ip地址 操作系统 硬盘 网卡 mfsmaster moosefs3.0

CoroSync + Drbd + MySQL 实现MySQL的高可用集群

Corosync + DRBD + MySQL 构建高可用MySQL集群 节点规划: node1.huhu.com172.16.100.103 node2.huhu.com172.16.100.104 资源名称规划 资源名称:可以是除了空白字符外的任意ACSII码字符 DRBD设备:在双节点上,此DRBD设备文件,一般为/dev/drbdN,主设备号147 磁盘:在双方节点上,各自提供存储设备 网络配置:双方数据同步所使用的网络属性 DRBD从Linux内核2.6.33起已经整合进内核 1.配置

Mysql+DRBD+Heartbeat 实现mysql高可用的双击热备(DRBD篇)

DRBD官方tar包下载地址:   http://oss.linbit.com/drbd/ 环境介绍: 系统版本:CentOS 6.4 (64位) 内核版本  2.6.32-358.el6.x86_64 软件版本:drbd-8.4.3.tar.gz 主:10.0.0.1   从:10.0.0.2 两台机器上的hosts都需要修改: [[email protected] ~]# vim /etc/hosts 10.0.0.1    node1 10.0.0.2    node2 两台服务器双网卡,

Mysql+DRBD+Heartbeat 实现mysql高可用的双机热备(mysql+heartbeat篇)

*************************************部署MYSQL******************************************* yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake bison* useradd mysql -d /usr/loc