Linux内核2.6.33之后版本才支持,之前的版本得重新编译内核,启用brdb功能。

test1:  192.168.10.161   centos6.8  主机名:test1

ha:vip192.168.10.27

test2192.168.10.162   centos6.9   主机名:test2

test3192.168.10.163   centos6.9   主机名:test3

一、test2test3新建一个大小一样的分区(/dev/sda5,这里使用扩展分区。分区过程略。

blob.png

二、crmsh corosyncpacemaker安装

2.1corosyncpacemaker安装

#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.confauthkey发给test3节点

[root@test2 corosync]# scp -p corosync.conf  authkey test3:/etc/corosync/

2.2crmsh安装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

2test2test3安装drbd84kmod安装包

[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;

     }

}

blob.png

global_common.conf mystore.res发给test3

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

blob.png

3、在test2test3节点初始化

# drbdadm create-md mystore

blob.png

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

blob.png

或者使用drbd-overview命令

blob.png

6、主节点格式化/dev/drbd0

[root@test2 ~]# mkfs.ext4 /dev/drbd0

然后停止drbd服务

7drbd配置资源

[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

blob.png

配置结果如下:

blob.png

第二种定义格式:

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

blob.png

blob.png

按第一种格式配置资源后,启动资源:

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#

blob.png

查看状态,如果有错,可以清理一下资源:

crm(live)resource# cleanup mystor

test2设为主节点:

[root@test2 ~]# drbdadm primary –force mystore

test2test3节点重启corosync服务后,资源状态为:

blob.png

8、文件系统约束

8.1test2test3创建保存数据的/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

blob.png

查看状态:

blob.png

文件系统资源mydata启动在主节点test3上。

/dev/drbd0挂载在 /mydata目录

blob.png

test3节点下线后,test2成为主节点。

[root@test3 ~]# crm node standby

[root@test3 ~]# crm node online

blob.png

四、mariadb数据库安装

1test2节点安装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

2test2test3节点创建系统用户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'

blob.png

blob.png

test2test3mysql用户完全一样。

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 ./*

blob.png

5、数据库初始化

[root@test2 mysql]# scripts/mysql_install_db –user=mysql –datadir=/mydata/data/

查看一下安装目录:

[root@test2 ~]# ll /mydata/data/

blob.png

安装成功。

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

blob.png

7、数据配置文件

[root@test2 mysql]# mkdir /etc/mysql

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

blob.png

修改配置文件,[root@test2 mysql]# vim /etc/mysql/my.cnf

配置文件添加以下三行内容:

datadir = /mydata/data

innodb_file_per_table = on

skip_name_resolve = on

blob.png

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

2test3节点安装mariadb

1test2下线,让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/

3test3下载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/'

blob.png

修改数据库文件的属主、属组:

[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

blob.png

创建日志文件:

[root@test3 ~]# touch /var/log/mysqld.log

[root@test3 ~]# chown mysql.mysql /var/log/mysqld.log

启动mysqld服务:

[root@test3 ~]# service mysqld start

blob.png

3306端口已监听

停止mysql服务:service mysqld stop

注意:test3节点不需要初始化数据库。

五、将数据库添加到HA资源

1vip192.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

blob.png

暂时不需要提交(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

blob.png

查看状态:

blob.png

资源运行在test3节点上。

远程连接mysql

[root@test1 ~]# mysql -uroot -h192.168.10.27 -p123456

blob.png

连接成功。。。

分类: Linux服务架构