且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

菜鸟学Linux 第090篇笔记 corosync+drbd+mysql

更新时间:2022-10-01 21:19:27

菜鸟学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 异步

semi sync 半同步

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 配置完成)

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1894995如需转载请自行联系原作者


Winthcloud