共计 4815 个字符,预计需要花费 13 分钟才能阅读完成。
这篇文章将为大家详细讲解有关 DRBD 和 Corosync 如何实现高可用 MySQL,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
(1) 节点之间需要传递事务信息,节点之间识别节点是通过节点名称实现,所以需要 DNS 解析,将相应 IP 对应节点名称,但是如果依赖 DNS 服务器时,高可用集群服务又增大了风险,为了避免 DNS 服务器存在的隐患,配置解析时直接使用本地 /etc/hosts 配置文件定义
(2) 节点名称必须要与‘uname–n’命令显示的名称一致
(3) 高可用集群节点的管理,比如停止某一节点时,是不能在自身这个节点停止其服务,需要在一个运行正常的节点上停止其他节点;所以,提供 ssh 互信通信(配置每个节点基于密钥的方式与节点进行通信)
(4) 时间需要同步
节点之间网络通信配置
test1 节点 IP 配置
test2 节点 IP 配置
配置完成重启网络服务
各节点节点名称配置
test1 节点名称配置
# vim /etc/sysconfig/network
# hostname test1.magedu.com
test2 节点名称配置
# vim /etc/sysconfig/network
# hostname test2.magedu.com
配置完成重新登录一下终端
主机名解析配置
RS1 主机名解析配置
# vim /etc/hosts
RS2 主机名解析配置
# vim /etc/hosts
节点之间的 ssh 互信功能配置
节点 test1(简称)配置
# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P
# ssh-copy-id -i .ssh/id_rsa.pub root@test2.magedu.com
测试一下
节点 test2 配置
# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P
# ssh-copy-id -i .ssh/id_rsa.pub root@test1.magedu.com
测试
时间同步
配置一台主机为时间服务器,进行时间同步,这里直接使用的是实验提供的时间服务器,没有做其他配置
节点 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/
启动 corosync
查看节点状态信息
开始 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
全局资源配置信息查看
资源配置
(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
状态信息查看
主从转换验证
crm(live)# node
crm(live)node#standby
crm(live)node#online test1.magedu.com
配置资源,通过 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
节点状态信息查看
在节点 test2 上查看是否成功挂载
主备节点切换验证
crm(live)# node
crm(live)node#standby test2.magedu.com
状态信息查看
查看 test1 节点上 Filesystem 是否成功挂载
准备 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
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
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
节点状态信息查看
test2 上 mysql 服务启动状态查看
主从节点切换测试
crm(live)# node
crm(live)node#standby test2.magedu.com
crm(live)node#online test2.magedu.com
查看状态信息
查看 test1 节点是否成功运行 mysql 服务
到这里一个基于 drbd 与 corosync 实现的高可用 mysql 就完成了,希望能为大家提供一些帮助
关于“DRBD 和 Corosync 如何实现高可用 MySQL”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。