基于Drbd的数据库高可用

jhonnli

贡献于2014-11-22

字数:0 关键词:

中华数据库 行业协会 2014中华数据库与运维安全大会 官方网址:www.zhdba.com 基于Drbd的数据库高可用 DRBD+COROSYNC+PACEMAKER+HAP ROXY+KEEPALIVED实现HA和LB、并 实现读写分离 概要 • 一、DRBD介绍 • 1、什么是DRBD • 2、DRBD基础介绍以及特性 • 3、DRBD的复制模式 • 4、DRBD脑裂处理 • 5、DRBD调优 • 二、PACEMAKER和COROSYNC集群软件介绍 • 1、 PACEMAKER重要参数配置 • 2、什么是colocation和order • 三、基于drbd的高可用案列 • 1、原理介绍以及适用场景 • 2、如何实现读写分离和负载均衡 • 3、故障转移如何实现以及如何避免单点故障 • 4、架构的优缺点以及如何改进 什么是DRBD? • file system->buffer cache ->drbd->disk scheduler- >disk drivers DRBD基础介绍以及特性 • 基础介绍: • 定义一个资源: • 资源包括:resouce name, Volumes, DRBD device • Drbd角色:primary<->secondary 特性: • 支持end-to-end数据完整性验证 • 支持在线设备验证 • 磁盘IO错误处理策略 • 过期数据处理策略 • 暂停复制 • 脑裂通知和自动恢复 DRBD基础介绍以及特性(2) • 支持end-to-end数据完整性验证 此特性针对在复制过程中由于网络传输原因导致的数据不一致。DRBD对每个 要复制的块生成一个校验和,用来对peer端数据进行完整性校验,如果接收到的 块的校验和与source端的校验和不一致,将会要求重传。此特性在我们的生产环 境中出现了很大问题要慎用。 • 支持在线设备验证(online device ) 如果我们不在传输过程中对数据进行校验,我们仍然可以采用在线设备验证的方 式,原理同上,我们可以采用定时任务周期性的对 数据进行验证 • 磁盘IO错误处理策略 磁盘出现IO错误时候,我们应该采用何种策略呢?DRBD提供三种策略,分别是: detach 、pass_on 、call-local-io-error .detach的情况下,节点将会处于diskless状态, 所有的对节点的读写将会从对端节点进行,这种情况下虽然性能有所下降,但是 仍然可以提供服务,很明显在高可用的情况下,这个策略使我们的首选。 DRBD基础介绍以及特性(3) • 过期数据处理策略 过期数据不是不一致性数据,只是说secondary不再与priamry同步数据了,secondary相当于是 一个snapshot,这时候如果发生切换,那么可想而知,数据的一致性就会出现问题,我们需要通 过某些策略来防止这种情况的发生:当出现过期数据的时候,drbd的连接状态将会由connect变为 Wfconnection,这时候Pacemaker不会允许过期数据的节点提升为primary • 暂停复制 对于一些网络状态不好的情况,如果我们采用协议C进行复制,那么数据复制延时将会很严重, 这时候我们可以采用暂停复制的策略,这样当网络状况不好的时候,primary端将会暂停复制, primary和secondary将会处于链式的不同步状态,当带宽变为可用的时候,复制将会继续进行。 DRBD复制模式 • 协议A Asynchronous replication protocol. Local write operations on the primary node are considered completed as soon as the local disk write has finished, and the replication packet has been placed in the local TCP send buffer • 协议B Memory synchronous (semi-synchronous) replication protocol. Local write operations on the primary node are considered completed as soon as the local disk write has occurred, and the replication packet has reached the peer node • 协议C Synchronous replication protocol. Local write operations on the primary node are considered completed only after both the local and the remote disk write have been confirmed DRBD脑裂处理 • 自动处理: • 1、Discarding modifications made on the younger primary •--后切换成primary角色的节点数据将会被丢弃 • 2、Discarding modifications made on the older primary •---先切换成primary角色的节点数据将会被丢弃 • 3、Discarding modifications on the primary with fewer changes –哪个节点更改的数据少就丢弃 • 4、Graceful recovery from split brain if one host has had no intermediate changes •--如果有节点根本没有更新数据,就直接恢复 • 手动处理 DRBD调优 • Max-buffers: DRBD为写磁盘分配的缓冲区数量,默认是 2048,对于RAID阵列建议调整为8000 • Max-epoch-size:默认2048,建议修改为8000 • sndbuf-size:tcp发送缓冲去,默认是128,千兆网卡可以设置 为512 • 如果raid卡提供写保护,我们可以关闭,这样可以提高性能 • disk-barrier no; disk-flushes no; PACEMAKER和COROSYNC介绍 • 什么是pacemaker: • 通过corosync或者heartbeat提供的资源信息,pacemaker通过resource agent来管理资源,比如start、stop PACEMAKER重要参数配置 • Pacemaker集群选项: • no-quorum-policy: • What to do when the cluster does not have quorum. Allowed values: •* ignore - continue all resource management •* stop - stop all resources in the affected cluster partition • 当集群已经达不到法定票数的时候怎么办呢?对于我们的drbd来说就 只有两个节点,如果其中的一个节点(secondary)出现问题,那么就 只剩下primary了,这时候就只有1票了,已经不能形成法定票数,如 果no-quorum-policy采用默认值,那么此时primary节点将不能提供服 务了,这肯定不是我们希望看到的,所以我们要修改此参数值为 ignore,这样即使只有一个节点仍然可以提供服务 • stonith-enabled: • 我们不使用stonith设备,split brain问题我们通过其他方式来解决 PACEMAKER重要参数配置 • Pacemaker资源选项 在DRBD中有两个节点A、B,如果A节点出现问题了,这时 候资源会switch到B节点,那么当A节点重新加入集群后,是 否希望资源再切换回A节点呢?,由下面的参数来控制: • 如果我们不希望资源来回切换可以设置这个值为100,值 越大表明越希望停留在当前节点 resource-stickiness Calculated How much does the resource prefer to stay where it is? Defaults to the value of resource- stickiness in the rsc_defaults section 什么是COLOCATION和ORDER • 在DRBD中,资源之间是有些约束条件的,这些约束条件我们分为两类: colocation和order • Colocation:资源之间的位置关系 • Order: 资源之间的启动,停止等的顺序关系 • DRBD中需要定义的colocation和order为: • 1、DRBD和文件之间的依赖关系: • colocation myfs_with_ms_mysqldrbd inf: p_fs_mysql ms_drbd_mysql:Master • order mysqldrbd_before_myfs mandatory: ms_drbd_mysql:promote p_fs_mysql:start • 2、文件系统和MYSQL的依赖关系: • colocation mysql_with_myfs inf: p_mysql p_fs_mysql • order myfs_before_mysql mandatory: p_fs_mysql:start p_mysql:start • 3、vip和mysql的依赖关系: • colocation myvip_with_mysql inf: p_ip_mysql p_mysql • order myvip_before_mysql mandatory: p_mysql p_ip_mysql 什么是COLOCATION和ORDER(2) • LOCATION: • Order: drbd:promote fs:startmysql:startvip 基于drbd的高可用案列 • 原理介绍: • 根据CAP理论,我们的架构实现CA • 一致性: DRBD通过协议 C保证数据的一致性,任何数据必须 成 功写入(write-back仍然有可能丢失数据)对端磁盘本 地才能开始写入 • 可用性: 通过pacemaker监控整个集群状态在节点出现问题的 时候,资源会重新分配并按照定义的规则来启动,不 需要人工参与,保证了数据库的高可用 基于drbd的高可用案列 • 适用场景: • 对数据的一致性要求较高 • 能接受5-10S的切换时间,切换过程中SLAVE不受影响对带 宽稳定性要求较高 • 数据库参数:innodb-flush-log-at-trx-commit = 1、 sync- binlog = 1,数据库将不能使用组提交 • 并不适应于并发在3000以上的业务环境 如何实现读写分离和负载均衡 • 读写分离: 由于我们在DRBD上采用协议C来进行复制, 所以任何时刻两个节点的数据都是一直的, 我们通过在DRBD的基础上配置Master-Slave来 实现读写分离 如何实现读写分离和负载均衡 • 负载均衡 如何实现读写分离和负载均衡 • 故障转移如何实现以及如何避免 单点故障 • Pacemaker是集群管理软件 • PACEMAKER会根据配置规则启动和关闭MYSQL以及 进行自动的切换 • 启动顺序:drbd->fs->mysql->ip • Pacemaker会监控MYSQL的状态,出现问题是会实现 自动切换 • primitive p_mysql lsb:mysqld \ • op start timeout="120s" interval="0" \ • op stop timeout="120s" interval="0" \ • op monitor interval="20" timeout="20" on- fail="restart" 架构的优缺点以及如何改进 在这个集群架构中我们没有有效的脑裂处理机制,我们没使用专 门的fence设备,这样可能在出现脑裂时数据不一致,我们采用了 下面的方法来尽量减少脑裂的产生,但是这并没有实际上解决问 题,我们会在后续考虑其他方案。 • 我们采用下面的方式来减少脑裂发生的概率: (1)、DRBD:手动处理脑裂,并且在发生脑裂的时候disconnect (2)、Server:通过使用单独的网卡,使用双网卡绑定,通过直连线 进行心跳检测 (3)、corosync之间的心跳检测和drbd之间的数据传输采用不同的 网卡,这样即使corosync之间的心跳出现问题,只要DRBD之间的 网络连接正常,仍然能够保证数据的一致性,不过这时候失效的节 点会一直重启服务 架构的优缺点以及如何改进 • 改进方法: • 增加slave节点到集群中,这样就存在至少三个节点,即使 其中的任何一个节点失效,集群仍然可以提供服务,但是 这时候要考虑的问题是,所有资源:DRBD\FS\MYSQL\VIP都 不能运行在SLAVE节点上,SLAVE节点只是为了防止脑裂发 生,我们使用location来限制资源是否可以运行在某个节点 上: • location p_drbd_mysql_loc p_drbd_mysql -inf: mysql02 • 其中mysql02(是slave服务器的)新增加的节点,由于我 们已经指定了资源的colocation,所以其他所有的资源都不 会在mysql02这个节点上运行了 案例—Drbd配置详解 案例—crm配置详解 案例—Haproxy配置(1) 案例—Haproxy配置(2) KEEPALIVED配置 2014年11月中华架构师大会预告 演讲主题 演讲嘉宾 公司名称 职位/职称 待定 朱超 360 中间件研发负责人 TFS技术架构及运维 张友东 阿里云 TFS研发负责人 待定 黄俊 国药集团 常务副总经理 golang实时消息推送架构实战 毛剑 金山网络 移动游戏技术经理 MyCAT之前世今生 吴治辉 惠普中国 系统架构师 雪球的架构实践 王栋 雪球财经 CTO 待定 刘建平 热璞科技 技术总监 中华数据库 行业协会 中华数据库行业协会 官方网站:www.zhdba.com 官方微信平台:zhdba2014 官方微博:中华数据库行业协会ZHDBA 技术交流QQ群:91596001

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档