Linux内核2.6.33之后版本才支持,之前的版本得重新编译内核,启用brdb功能。
test1: 192.168.10.161 centos6.8 主机名:test1
ha:vip:192.168.10.27
test2:192.168.10.162 centos6.9 主机名:test2
test3:192.168.10.163 centos6.9 主机名:test3
一、test2、test3新建一个大小一样的分区(/dev/sda5),这里使用扩展分区。分区过程略。

二、crmsh 、corosync、pacemaker安装
2.1、corosync、pacemaker安装
#yum install corosync pacemaker -y
配置corosync
[root@test2 corosync]# vim corosync.conf
compatibility: whitetank
totem {
version: 2
secauth: on
threads: 0
interface {
ringnumber: 0
bindnetaddr: 192.168.10.0
mcastaddr: 239.255.1.91
mcastport: 5405
ttl: 1
}
}
logging {
fileline: off
to_stderr: no
to_logfile: yes
logfile: /var/log/cluster/corosync.log
to_syslog: no
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
#pacemaker以插件的形式使用
service {
ver: 0
name: pacemaker
use_mgmtd: yes
}
aisexec {
user: root
group: root
}
生成密钥
[root@test2 corosync]# corosync-keygen
将corosync.conf、authkey发给test3节点
[root@test2 corosync]# scp -p corosync.conf authkey test3:/etc/corosync/
2.2、crmsh安装crmsh-1.2.6-0.rc2.2.1.x86_64.rpm
pssh-2.0-1.el6.rf.noarch.rpm
下载地址:
http://rpm.pbone.net/index.php3/stat/4/idpl/23861008/dir/RedHat%C2%A0EL%C2%A06/com/crmsh-1.2.6-0.rc2.2.1.x86_64.rpm.html
http://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/pssh-2.0-1.el6.rf.noarch.rpm
#rpm -ivh *.rpm
三、drbd安装
1、下载地址:http://ftp.colocall.net/pub/elrepo/elrepo/el6/x86_64/RPMS/
下载安装包:
kmod-drbd84-8.4.7-1_1.el6.elrepo.x86_64.rpm
drbd84-utils-8.9.8-1.el6.elrepo.x86_64.rpm
2、test2、test3安装drbd84、kmod安装包
[root@test2 ~]# rpm -ivh drbd84-utils-8.9.8-1.el6.elrepo.x86_64.rpm
kmod-drbd84-8.4.7-1_1.el6.elrepo.x86_64.rpm
三、配置drbd
1、全局配置
[root@test2 ~]# cd /etc/drbd.d/
[root@test2 drbd.d]# vim global_common.conf
global {
usage-count no;
}
disk {
on-io-error detach;
}
net {
cram-hmac-alg "sha1";
shared-secret "mydrbdshare123";
}
syncer {
rate 500M;
}
其他内容保持默认不变。
2、资源定义
[root@test2 drbd.d]# vim mystore.res
resource mystore {
device /dev/drbd0;
disk /dev/sda5;
meta-disk internal;
on test2 {
address 192.168.10.162:7789;
}
on test3 {
address 192.168.10.163:7789;
}
}

将global_common.conf 、mystore.res发给test3
[root@test2 drbd.d]# scp -p global_common.conf mystore.res test3:/etc/drbd.d

3、在test2、test3节点初始化
# drbdadm create-md mystore

4、启动drbd
[root@test2 ~]# service drbd start
[root@test3 ~]# service drbd start
5、将test2设置为主节点
[root@test2 ~]# drbdadm primary –force mystore
设置为从节点的命令:
drbdadm secondary 资源名
或者:
drbdadm — –overwrite-data-of-peer primary 资源名
查看状态:[root@test2 ~]# cat /proc/drbd

或者使用drbd-overview命令

6、主节点格式化/dev/drbd0
[root@test2 ~]# mkfs.ext4 /dev/drbd0
然后停止drbd服务
7、drbd配置资源
[root@test2 ~]# crm configure
定义基本资源:
crm(live)configure# primitive mysql_drbd ocf:linbit:drbd params drbd_resource="mystore" op monitor role="Master" interval="10" timeout="20" op monitor role="Slave" interval="20" timeout="20" op start timeout="240" interval="0" op stop timeout="100" interval="0"
crm(live)configure# verify
克隆资源设置:
crm(live)configure# ms ms_mysql_drbd mysql_drbd meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
crm(live)configure# verify
crm(live)configure# commit

配置结果如下:

第二种定义格式:
crm(live)configure# primitive mystor ocf:linbit:drbd params drbd_resource="mystore" op monitor role="Master" interval=10s timeout=20s op monitor role="Slave" interval=20s timeout=20s op start timeout=240s op stop timeout=100s
crm(live)configure# ms ms_mystor mystor meta clone-max="2" clone-node-max="1" master-max="1" master-node-max="1"
crm(live)configure# verify
crm(live)configure# commit


按第一种格式配置资源后,启动资源:
crm(live)configure# cd
crm(live)#
crm(live)# resource
crm(live)resource# start mysql_drbd
crm(live)resource# start ms_mysql_drbd
crm(live)resource#

查看状态,如果有错,可以清理一下资源:
crm(live)resource# cleanup mystor
将test2设为主节点:
[root@test2 ~]# drbdadm primary –force mystore
test2、test3节点重启corosync服务后,资源状态为:

8、文件系统约束
8.1、test2、test3创建保存数据的/mydata目录
[root@test2 ~]# mkdir /mydata && ssh test3 'mkdir /mydata'
8.2、定义文件系统资源(资源名为:mydata)
crm(live)configure# primitive mydata ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/mydata" fstype="ext4" op monitor interval=20s timeout=40s op start timeout=60s op stop timeout=60s
crm(live)configure# verify
8.3、文件系统约束
colocation排列约束:mydata必须跟ms_mysql_drbd状态为master节点在一起
crm(live)configure# colocation mydata_with_ms_mysql_drbd_master inf: mydata ms_mysql_drbd:Master
order顺序约束:ms_mysql_drbd提升为master后,mydata才能启动
crm(live)configure# order mydata_after_ms_mysql_drbd_master Mandatory: ms_mysql_drbd:promote mydata:start
crm(live)configure# verify
crm(live)configure# commit

查看状态:

文件系统资源mydata启动在主节点test3上。
/dev/drbd0挂载在 /mydata目录

test3节点下线后,test2成为主节点。
[root@test3 ~]# crm node standby
[root@test3 ~]# crm node online

四、mariadb数据库安装
(1)test2节点安装mariadb
1、数据库下载
官网下载mariadb数据库(https://downloads.mariadb.org/)
本次使用5.5.57版本http://mirrors.neusoft.edu.cn/mariadb//mariadb-5.5.57/source/mariadb-5.5.57.tar.gz
2、test2、test3节点创建系统用户mysql,用户id、组id必须一样。
[root@test2 ~]# groupadd -r -g 306 mysql ; ssh test3 'groupadd -r -g 306 mysql'
[root@test2 ~]# useradd -r -g 306 -u 306 mysql ; ssh test3 'useradd -r -g 306 -u 306 mysql'


test2、test3的mysql用户完全一样。
3、创建数据存放目录
前面已经创建了/mydata目录,在/mydata目录中创建data目录
[root@test2 ~]# mkdir /mydata/data
修改目录属主、属组:
[root@test2 ~]# chown -R mysql.mysql /mydata/data/
4、数据库安装包解压
因为test2是主节点,所以在test2上安装配置数据库
解压到/usr/local/目录
[root@test2 ~]# tar xf mariadb-5.5.57.tar.gz -C /usr/local/
[root@test2 ~]# cd /usr/local/
[root@test2 local]# ln -sv mariadb-5.5.57/ mysql
`mysql' -> `mariadb-5.5.57/'
[root@test2 local]# cd mysql/
修改属组:
[root@test2 mysql]# chown -R root.mysql ./*

5、数据库初始化
[root@test2 mysql]# scripts/mysql_install_db –user=mysql –datadir=/mydata/data/
查看一下安装目录:
[root@test2 ~]# ll /mydata/data/

安装成功。
6、复制服务文件到/etc/rc.d/init.d目录中,文件名为mysqld。
[root@test2 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@test2 mysql]# chkconfig –add mysqld
[root@test2 mysql]# chkconfig mysqld off

7、数据配置文件
[root@test2 mysql]# mkdir /etc/mysql
[root@test2 mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf

修改配置文件,[root@test2 mysql]# vim /etc/mysql/my.cnf
配置文件添加以下三行内容:
datadir = /mydata/data
innodb_file_per_table = on
skip_name_resolve = on

8、创建日志文件(/var/log/mysqld.log):
[root@test2 ~]# touch /var/log/mysqld.log
[root@test2 ~]# chown mysql.mysql /var/log/mysqld.log
启动mysqld服务:
[root@test2 ~]# service mysqld start
9、数据库授权
[root@test2 ~]# /usr/local/mysql/bin/mysql
MariaDB [(none)]> GRANT ALL ON *.* TO 'root'@'%' IDENTOFY BY '123456';
MariaDB [(none)]> FLUSH PRIVILEGES;
为root用户授权后,停止数据库服务
[root@test2 ~]# service mysqld stop
(2)test3节点安装mariadb
1、test2下线,让test3成为主节点
[root@test2 ~]# crm node standby
[root@test2 ~]# crm node online
2、创建数据库配置文件目录/etc/mysql
[root@test3 ~]# mkdir /etc/mysql
将test2的数据库配置文件复制到test3的/etc/mysql中
[root@test2 ~]# scp /etc/mysql/my.cnf test3:/etc/mysql/
3、test3下载marindb5.5.57过程略,解压数据库到/usr/local/目录
[root@test3 ~]# tar xf mariadb-5.5.57-linux-x86_64.tar.gz -C /usr/local/
[root@test3 ~]# cd /usr/local/
[root@test3 local]# ln -sv mariadb-5.5.57-linux-x86_64/ mysql
`mysql' -> `mariadb-5.5.57-linux-x86_64/'

修改数据库文件的属主、属组:
[root@test3 local]# cd mysql/
[root@test3 mysql]# chown -R mysql.mysql ./*
4、服务文件设置
[root@test3 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@test3 mysql]# chkconfig –add mysqld
[root@test3 mysql]# chkconfig mysqld off

创建日志文件:
[root@test3 ~]# touch /var/log/mysqld.log
[root@test3 ~]# chown mysql.mysql /var/log/mysqld.log
启动mysqld服务:
[root@test3 ~]# service mysqld start

3306端口已监听
停止mysql服务:service mysqld stop
注意:test3节点不需要初始化数据库。
五、将数据库添加到HA资源
1、vip:192.168.10.27资源配置:
crm(live)configure# primitive myip ocf:heartbeat:IPaddr params ip="192.168.10.27" op monitor interval=10s timeout=20s
2、数据库资源配置:
crm(live)configure# primitive mysql lsb:mysqld op monitor interval=20s timeout=20s

暂时不需要提交(commit)
3、资源约束
colocation排列约束:
ip必须跟ms_mysql_drbd:Master在同一节点
crm(live)configure# colocation myip_with_ms_mysql_drbd_master inf: myip ms_mysql_drbd:Master
数据库服务必须跟存储在同一节点
crm(live)configure# colocation mysql_with_mydata inf: mysql mydata
order顺序约束:
先启动存储,再启动mysql
crm(live)configure# order mysql_after_mydata Mandatory: mydata mysql
先启动ip,在启动mysql
crm(live)configure# order mysql_after_myip Mandatory: myip:start mysql:start
crm(live)configure# verify
设置完成之后,提交
crm(live)configure# commit

查看状态:

资源运行在test3节点上。
远程连接mysql:
[root@test1 ~]# mysql -uroot -h192.168.10.27 -p123456

连接成功。。。