菜鸟学Linux 第090篇笔记 corosync+drbd+mysql
内容总览
上节回顾
DRBD (Distributed Replicated Block Device) 分布式复制块设备
配置drbd
配置drbd+corosync的高可用mysql
上节回顾
heartbeat-ldirectord该rpm包 是用来做lvs高可用而且不用再手动写脚本来进行后台的
realserver是否工作正常,此包自己包含
corosync + ldirectord 与上述相同
再次强调 (自行配置安装)
(rsync|sersync) + inotify
PAE 内核显示PAE
Physical Address Extention
DRBD (Distributed Replicated Block Device) 分布式复制块设备
DRBD是一个类似raid的一个硬盘复制功能,而raid只支持本地的两块硬盘进行存储相同的数据,
而drbd可以将两个基于tcp/ip协议将电脑硬盘进行数据同步扩大到可以在两台互联网的电脑进行
硬盘数据同步。
drbd 工作在内核中 是内核的一个模块
主从架构(防止文件系统崩溃)
primary 可执行读,写操作
secondary 文件系统不能挂载
主从互相切换
DRBD也有双主模型
把drbd做成ha
DLM (Distributed Lock Manager)
集群文件系统
GFS2 OCFS2
只允许两个节点
硬盘高度器 disk schedule (未必适用于固态硬盘)
合并读请求,合并写请求
nic network interface card
数据协议 protocol
A Async 异步
B semi sync 半同步
C sync 同步
drbd source DRBD资源
Resource name (不可包含空白字符任意ASCII)
DRBD device /dev/drbd0 /dev/drbd1... 主设备号为147
Disk Configuration 双方节点上,各自提供的设备
Network configuration 双方数据同步时所使用的网络属性
User space administration
drbdadm
drbdsetup
drbdmeta
配置drbd
1. 首先配置两个电脑
主机名hosts
时间同步
ssh互信通信
2. 安装drbd 软件包
drbd
先将rpm包下载到本地 以下这种方式是第三台电脑 此电脑已经和两个节点建立互信关系
# for I in {1..2}; do ssh node$I 'rpm -ivh /root/drbd/*.rpm'; done
# rpm -ql drbd
3. drbd的配置
在两个节点上都新建要进行做成drbd的分区 分区大小相同 但不要格式化
我这里两个节点都是/dev/sdb1
定义drbd的资源信息
resource name: mydrbd
drbd device: /dev/drbd0
disk configuration: /dev/sdb1
Network configuration:
drbd的配置文件
/etc/drbd.conf
/etc/drbd.d/global_common.conf
/etc/drbd.d/resource.d
# cp /usr/share/doc/drbd83-8.3.15/drbd.conf /etc/
# vim /etc/drbd.com
注销此项 # usage-count yes;
将以下几项启用handlers
pri-on-incon-degr
pri-lost-after-sb
local-io-error
disk下添加如下内容
on-io-error detach;
net下添加
cram-hmac-alg "sha1";
syncer下添加
rate 200M
保存退出
4. 定义资源
创建在/etc/drbd.d/下.res结尾的资源文件
vim /etc/drbd.d/mydrbd.res
添加内容如下
resource mydrbd {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
on node1 {
address 192.168.11.111:7789;
}
on node2 {
address 192.168.11.112:7789;
}
}
最后将此文件和global_common.conf复制到另一个节点
# scp -r /etc/drbd.* node2:/etc/
5. 初始化资源
# for I in {1..2}; do ssh node$I 'drbdadm create-md mydrbd'; done
注意此种方式适合是复制过去的配置文件这样操作,,如果不是的话 两边出错可能不同
6. 启动drbd
# service drbd start (两个节点都得执行)
7. 查看drbd启动状态
# service drbd status
# cat /proc/drbd
# drbd-overview
由此可看出两个节点都是secondary
8. 切换其中一台为主节点
# drbdadm -- --overwrite-data-of-peer primary mydrbd
# drbdadm primary mydrbd
(以上为两种方式)
查看其同步过程
# watch 1 'drbd-overview'
同步完成后就会显示当前节点为主节点
primary/secondary
9. 挂载并创建文件系统
# mkdir /mydata
# mke2fs -j /dev/drbd0
# mount /dev/drbd0 /mydata
# cp /etc/inittab /mydata
10. 再次切换主从drbd
(注意要切换主从时,先将主设置为从节点,再将原先为从的设置为主,即可完成主从切换)
主节点先切换为从
# umount /mydata
# drbdadm secondary mydrbd
从节点切换为主
# mkdir /mydata
# drbdadm primary mydrbd
# mount /dev/drbd0 /mydata
(到此,drbd基本已经建立完成)
配置drbd+corosync的高可用mysql
1. 准备工作
首先将drbd的主节点挂载移除mount
将主节点也切换为从节点 drbdadm
然后两个节点drbd服务停止 service
确保其开机后drbd服务不会自己启动 chkconfig
2. 安装corosync + pacemaker 此处前边已经讲过 这里不再细说
# crm configure
verify
property stonish-enabled=false
verify
commit
property no-quorum-policy=ignore
verify
commit
rsc_defaults resource-stickiness=100
commit
show
3. 配置drbd资源
# crm configure
primitive mysqldrbd ocf:heartbeat:drbd params drbd_resource=mydrbd op
start timeout=240 op stop timeout=100 op monitor role=Master interval=10s
timeout=20s op monitor role=Slave interval=20s timeout=20 (一行命令)
help ms
ms ms_mysqldrdb mysqldrdb meta master-max=1 master-node-max=1 clone-max=2
clone-node-max=1 notify=true (一行命令)
verify
commit
挂载drbd filesyste
# crm configure
primitive mystore ocf:heartbeat:Filesystem params device=/dev/drbd0
directory=/mydata fstype=ext3 op start timeout=60 op stop timeout=60
verify
限制其要跟mysqldrbd:master 在同一台主机上运行,并且定义其启动顺序
colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master
order mystore_after_ms_mysqldrbd mandatory: ms_mysqldrbd:promote mystore:startr
verify
commit
4. 测试主从drbd切换
# crm node standby
# crm status
# crm node online
# crm status
5. 安装和配置mysql服务并将其安装目录设置在drbd所挂载的目录里(注意要在主节点完成)
测试其可正常运行 主节点测试完成后,
将drbd节点切换到另一台的主节点 此时不需要进行初始化,只需要配置my.cnf里的
innodb-file-per-table
datadir = /mydata/data
测试没有问题后在crm里配置其mysql资源
6. 配置mysql资源
# crm configure
primitive mysqld lsb:mysqld
verify
colocation mysqld_with_mystore inf: mysqld mystore
show xml
order mysql_after_mystore mandatory: mystore mysqld
show xml
commit
primitive myip ocf:heartbeat:IPaddr params ip=192.168.11.120 nic=eth0
cidr_netmask=255.255.255.0
verify
colocation myip_with_ms_mysqldrbd inf: ms_mysqldrbd:Master myip
show xml
commit
(至此 mysqld + drbd + corosync 配置完成)
转载于:https://blog.51cto.com/winthcloud/1894995