DRBD和Corosync如何实现高可用MySQL

发布时间:2021-11-02 17:20:08 作者:小新
来源:亿速云 阅读:145

这篇文章将为大家详细讲解有关DRBD和Corosync如何实现高可用MySQL,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

(1)节点之间需要传递事务信息,节点之间识别节点是通过节点名称实现,所以需要DNS解析,将相应IP对应节点名称,但是如果依赖DNS服务器时,高可用集群服务又增大了风险,为了避免DNS服务器存在的隐患,配置解析时直接使用本地/etc/hosts配置文件定义

(2)节点名称必须要与‘uname–n’命令显示的名称一致

(3)高可用集群节点的管理,比如停止某一节点时,是不能在自身这个节点停止其服务,需要在一个运行正常的节点上停止其他节点;所以,提供ssh互信通信(配置每个节点基于密钥的方式与节点进行通信)

(4)时间需要同步

节点之间网络通信配置

test1节点 IP配置

DRBD和Corosync如何实现高可用MySQL

test2节点 IP配置

DRBD和Corosync如何实现高可用MySQL

配置完成重启网络服务

各节点节点名称配置

test1节点名称配置

# vim /etc/sysconfig/network

DRBD和Corosync如何实现高可用MySQL

# hostname test1.magedu.com

test2 节点名称配置

# vim /etc/sysconfig/network

DRBD和Corosync如何实现高可用MySQL

# hostname test2.magedu.com

配置完成重新登录一下终端

主机名解析配置

RS1 主机名解析配置

# vim /etc/hosts

DRBD和Corosync如何实现高可用MySQL

RS2 主机名解析配置

# vim /etc/hosts

DRBD和Corosync如何实现高可用MySQL

节点之间的ssh互信功能配置

节点 test1(简称)配置

# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

# ssh-copy-id -i .ssh/id_rsa.pub root@test2.magedu.com

测试一下

DRBD和Corosync如何实现高可用MySQL

节点 test2配置

# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

# ssh-copy-id -i .ssh/id_rsa.pub root@test1.magedu.com

测试

DRBD和Corosync如何实现高可用MySQL

时间同步

配置一台主机为时间服务器,进行时间同步,这里直接使用的是实验提供的时间服务器,没有做其他配置

节点test1与test2同时同步

# ntpdate 172.16.0.1

计划任务制定

定义一条计划任务,时刻同步着时间

# crontab –e

*/5 * * * * ntpdate 172.16.0.1 >/dev/null

本次实验中在节点test1与test2需要安装的rpm包列表

cluster-glue-1.0.6-1.6.el5.i386.rpm

cluster-glue-libs-1.0.6-1.6.el5.i386.rpm

corosync-1.4.5-1.1.i386.rpm

corosynclib-1.4.5-1.1.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

openais-1.1.3-1.6.el5.i386.rpm

openaislib-1.1.3-1.6.el5.i386.rpm

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

在节点test1上的操作配置

准备配置文件

# cd /etc/corosync/

# cp corosync.conf.example corosync.conf

# vim corosync.conf

修改内容如下

totem {

secauth:on

interface{

bindnetaddr:172.16.0.0

mcastaddr:239.151.51.51

添加的内容

service {

ver: 0

name: pacemaker

}

aisexec {

user: root

group: root

}

创建日志文件目录

# mkdir /var/log/cluster

# ssh test2 'mkdir /var/log/cluster'

生成一对密钥

# corosync-keygen

复制密钥文件与配置文件到test2节点

# scp -p authkey corosync.conf test2:/etc/corosync/

启动corosyncDRBD和Corosync如何实现高可用MySQL

查看节点状态信息
 

开始crm配置

说明:因为没有stonith设备并且只有两个节点所以需要禁用stonith功能,并更改节点默认属性

crm(live)configure#property stonith-enabled=false

crm(live)configure#verify

crm(live)configure#property no-quorum-policy=ignore

crm(live)configure#verify

crm(live)configure#commit

定义资源粘性,配置在当前节点test1粘性

crm(live)configure#rsc_defaults resource-stickiness=100

crm(live)configure#verify

crm(live)configure#commit

全局资源配置信息查看

DRBD和Corosync如何实现高可用MySQL

资源配置

(1)将drbd配置为基本资源

(2)将drbd配置为克隆类资源

资源代理查看

crm(live)# ra

crm(live)ra#providers drbd

查看元数据信息

crm(live)ra# metaocf:heartbeat:drbd

定义一个主资源与一个主从类资源

crm(live)#configure

crm(live)configure#primitive mydrbdservice ocf:heartbeat:drbd params drbd_resource=mydrbd op starttimeout=240 op stop timeout=100 op monitor role=Master interval=20 timeout=30op monitor role=Slave interval=30 timeout=30

crm(live)configure#ms ms_mydrbd mydrbdservice meta master-max=1 master-node-max=1 clone-max=2clone-node-max=1 notify=true

crm(live)configure#verify

crm(live)configure#commit

状态信息查看

DRBD和Corosync如何实现高可用MySQL

主从转换验证

crm(live)# node

crm(live)node#standby

crm(live)node#online test1.magedu.com

DRBD和Corosync如何实现高可用MySQL

配置资源,通过NFS使其能够实现自动挂载

Filesystem资源添加

crm(live)configure#primitive mystore ocf:heartbeat:Filesystem params device=/dev/drbd0directory=/mydata fstype=ext3 op start timeout=60 op stop timeout=60

定义排列colocation使Filesystem必须跟主节点在一起

crm(live)configure#colocation mystore_with_ms_mydrbd inf: mystore ms_mydrbd:Master

定义排列order约束

crm(live)configure#order mystore_after_ms_mydrbd mandatory: ms_mydrbd:promote mystore:start

节点状态信息查看

DRBD和Corosync如何实现高可用MySQL

在节点test2上查看是否成功挂载

DRBD和Corosync如何实现高可用MySQL

主备节点切换验证

crm(live)# node

crm(live)node#standby test2.magedu.com

状态信息查看

DRBD和Corosync如何实现高可用MySQL

查看test1节点上Filesystem是否成功挂载

DRBD和Corosync如何实现高可用MySQL


准备mysql服务

现在的主节点是test1,首先在节点1上配置mysql服务

创建mysql用户与mysql组

# groupadd -g3306 mysql

# useradd -g 3306-u 3306 -M mysql

准备mysql

# tar xf mysql-5.5.28-linux2.6-i686.tar.gz-C /usr/local/

# ln -sv mysql-5.5.28-linux2.6-i686mysql

准备数据目录

# cd /mydata

# mkdir data

# chownmysql.mysql data -R

更改mysql文件属主属组

# cd/usr/local/mysql

# chown root.mysql/usr/local/mysql/* -R

准备配置文件与服务脚本

# cd/usr/local/mysql

# cpsupport-files/my-large.cnf /etc/my.cnf

# cpsupport-files/mysql.server /etc/init.d/

修改配置文件

# vim /etc/my.cnf

添加以下内容(线程数与datadir目录位置)

thread_concurrency= 2

datadir=/mydata/data

设置mysql服务不能开机启动

# chkconfig --addmysqld

# chkconfigmysqld off

初始化mysql

# cd/usr/local/mysql

#scripts/mysql_install_db --user=mysql --datadir=/mydata/data

启动mysql

DRBD和Corosync如何实现高可用MySQL

test2节点mysql服务配置与test1节点相同,说明流程如下

1 关闭节点test1的 mysql服务

2 把节点test2 转换成Master

crm(live)# node

crm(live)node#standby test1.magedu.com

crm(live)node#online test1.magedu.com

DRBD和Corosync如何实现高可用MySQL

3 开始配置test2的mysql服务流程与test1相同(不执行初始化操作)

 

配置mysql服务为高可用服务

添加mysql为集群资源

crm(live)configure#primitive mysqld lsb:mysqld

crm(live)configure#verify

crm(live)configure#

定义colocation约束(mysql与mystore在一起;即与主节点在一起)

crm(live)configure#colocation mysql_with_mystore inf: mysqld mystore

crm(live)configure#verify

定义order约束(最后启动mysql服务)

crm(live)configure#order mysqld_after_mystore mandatory: mystore mysqld

crm(live)configure#verify

crm(live)configure#commit

节点状态信息查看

DRBD和Corosync如何实现高可用MySQL

test2上mysql服务启动状态查看

DRBD和Corosync如何实现高可用MySQL

主从节点切换测试

crm(live)# node

crm(live)node#standby test2.magedu.com

crm(live)node#online test2.magedu.com

查看状态信息

DRBD和Corosync如何实现高可用MySQL

查看test1节点是否成功运行mysql服务

DRBD和Corosync如何实现高可用MySQL

到这里一个基于drbd与corosync实现的高可用mysql就完成了,希望能为大家提供一些帮助

DRBD和Corosync如何实现高可用MySQL

关于“DRBD和Corosync如何实现高可用MySQL”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. corosync+pacemaker的高可用集群
  2. pacemaker+corosync实现zabbix高可用集群

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

corosync drbd mysql

上一篇:Heartbeat+DRBD如何实现MySQL高可用性

下一篇:Deno会取代NodeJS吗

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》