MySQL迁移到Azure上后,由于云的特性,在自建数据中心的MySQL的HA的方法在云上很多都不能部署。

这主要是因为,目前Public Cloud不支持:1. 共享存储;2. Multicast;3. VIP。

  1. 共享存储,Azure File Service可以部分解决这个问题,但考虑到性能的问题,本方案没有采用File Service;
  2. 需要组播的主要原因是集群软件需要组播进行同步;
  3. VIP在Cluster的解决方案中,可以解决前段应用连接字符串的问题。Cloud不支持组播和广播,所以ARP类似的协议都不支持,使得传统的VIP模式都不能采用。

本方案中通过DRBD、Corosync、Pacemaker、Azure ILB几个软件解决了上面3个HA部署中的问题,实现MySQL在Azure上的HA部署。

  1. 具体设计方案

整体架构如上图,

  1. Azure ILB:WEB前端可以通过MySQL客户端访问Azure ILB的固定IP地址10.1.1.200端口3306,ILB会把MySQL的请求转发给相应的MySQL服务器。不管MySQL的服务迁移到任何一台服务器上,前端不需要更改连接字符串。用这种方式实现on-premise环境中VIP相同的效果。
  2. DRBD:DRBD相当于网络级别的RAID1,在DRBD主节点上写入任何数据,都会通过网络马上同步到副节点。通过DRBD的功能,可以实现两边数据的同步,实现类似共享存储的功能。
  3. Corosync:Corosync和Pacemaker是Heartbeat的升级版。Corosync进行底层Message层,Pacemaker进行集群的选举和服务的编排。传统的Corosync是采用Multicast实现多台Cluster服务器的message 通讯。但在新版本中支持Full Mesh的UDP Unicast,解决Azure不支持组播的问题。
  4. Pacemaker:Pacemaker是整个集群的大脑,它决定做什么,以及何时做。这个集群的服务通过一个叫CRM的软件进行对Pacemaker的编排。在本方案中,Pacemaker需要做:
    1. 选择DRBD的Master节点,
    2. 挂载DRBD的分区到指定目录,
    3. 启动MySQL的服务
    4. 保证DRBD、File、MySQL三个服务在同一台Master服务器上
    5. 保证DRBD、File、MySQL三个服务按顺序启动

正常情况下,Pacemaker把编排好的各种服务在Master上启动后,在Master上MySQL进行任何的数据插入,都会通过DRBD更新到Slave服务器的DRBD Secondary磁盘上。由于在Slave服务器上的MySQL服务不启动,其3306端口不对外提供服务。Azure ILB认为这台服务器是没有提供服务的,负载均衡集中不包含这台服务器。因此Aure ILB只把MySQL的请求发送到Master上。其结构如下:

当10.1.1.6服务器出现故障或重启的动作时,Corosync和Pacemaker会把Master迁移到10.1.1.7上。Pacemaker在10.1.1.7上启动之前编排的各种服务。MySQL在10.1.1.7上启动。由于10.1.1.7提供了3306端口的服务,Azure ILB会把10.1.1.7加入到负载均衡集中,前端MySQL的请求都会发到这台服务器上。具体如下:

10.1.1.6和10.1.1.7两台机器任意一台机器出现故障,整个系统都不需要人工参与,系统会自动迁移到available的服务器上,对外提供服务。

二、防止脑裂问题

由于Cluster中最需要避免的问题是脑裂问题,脑裂甚至比Out-of-service带来的危害更大。因此,需要最大程度的防止脑裂的发生。

在前面提到的方案中,防止脑裂的方式只通过DRBD、Corosync和Pacemaker软件自身实现的。

由于采用了Azure的ILB,可以采用对ILB进行配置的方式实现防止脑裂的方案。

当Pacemaker选择一台服务器作为Master时,在Pacemaker服务的编排中,加入对Azure ILB的控制,把另外一台服务器从ILB中移除,把自己加入到ILB中。结构如下:

极端情况,两台服务器都自认为是Master的情况,后一台启动Pacemaker的服务器会把另外一台服务器从ILB中移除。从而在ILB中只有一台VM,保证前端服务器通过ILB只能访问到一台MySQL服务器。

MySQL on Azure高可用性设计 DRBD - Corosync - Pacemaker - CRM (一)的更多相关文章

  1. MySQL on Azure高可用性设计 DRBD - Corosync - Pacemaker - CRM (二)

    在上一篇文章中描述了MySQL HA on Azured 设计思路,本篇文章中将描述具体的部署,每个组件的安装和配置. 整体的设计架构如下: 下面将是所有组件的安装配置过程,所有的虚拟机是CentOS ...

  2. Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群

    大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...

  3. 【原】ubuntu下Mysql的HA(corosync+pacemaker+drbd)

    一.前提准备: 1.OS:ubuntu 12.04 2.cat /etc/hosts: 127.0.0.1 localhost 192.168.153.154 ha1 192.168.153.155 ...

  4. Centos 7 下 Corosync + Pacemaker + DRBD + psc + crmsh 实现 mysql 服务高可用

    一.介绍 高可用,大家可能会想到比较简单的Keepalived,或者更早一点的 heartbeat,也可能会用到 Corosync+Pacemaker,那么他们之间有什么区别. Heartbeat到了 ...

  5. 基于corosync+pacemaker+drbd+LNMP做web服务器的高可用集群

    实验系统:CentOS 6.6_x86_64 实验前提: 1)提前准备好编译环境,防火墙和selinux都关闭: 2)本配置共有两个测试节点,分别coro1和coro2,对应的IP地址分别为192.1 ...

  6. CentOS 6.5环境实现corosync+pacemaker实现DRBD高可用

    DRBD (Distributed Replicated Block Device)分布式复制块设备,它是 Linux 平台上的分散式储存系统,通常用于高可用性(high availability, ...

  7. 使用 Load Balancer,Corosync,Pacemaker 搭建 Linux 高可用集群

    由于网络架构的原因,在一般虚拟机或物理环境中常见的用 VIP 来实现双机高可用方案,无法照搬到 Azure 平台.但利用 Azure 平台提供的负载均衡或者内部负载均衡功能,可以达到类似的效果. 本文 ...

  8. Corosync+Pacemaker+crmsh构建Web高可用集群

    一.概述: 1.1 AIS和OpenAIS简介 AIS应用接口规范,是用来定义应用程序接口(API)的开放性规范的集合,这些应用程序作为中间件为应用服务提供一种开放.高移植性的程序接口.是在实现高可用 ...

  9. corosync+pacemaker实现高可用(HA)集群

    corosync+pacemaker实现高可用(HA)集群(一)     重要概念 在准备部署HA集群前,需要对其涉及的大量的概念有一个初步的了解,这样在实际部署配置时,才不至于不知所云 资源.服务与 ...

随机推荐

  1. html checkbox的checked属性问题和value属性问题

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Springboot整合日志时候出现的问题

    上图是问题,按照路径去找下,发现其实是jar包重复导致的! 在对应的项目上,右键--->属性(Properties)--->JavaBuild Path  然后选择Libraries 页签 ...

  3. [闲来无事,从头再来][C51篇]导读

    目       的:  通过学习C51,熟悉单片机,熟悉C语言,熟悉单片机系统的外部电路. 方       法:  通过看书和使用板子做实验来进行学习 参考资料: <新概念51单片机C语言教程& ...

  4. spark的若干问题

    问题1:SPARK与HADOOP之间的关系? spark是一种高效处理hadoop分布式数据的处理引擎.借助hadoop的yarn框架,spark就可以运行在hadoop集群中.同时spark也可以处 ...

  5. HDU - 5695 Gym Class 【拓扑排序】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5695 思路 给定一些关系 进行拓扑排序 但是有一个要求 对于哪些没有确切的位置的点 要按照ID大小 I ...

  6. 《程序员代码面试指南》第三章 二叉树问题 判断t1 树中是否有与t2 树拓扑结构完全相同的子树

    题目 判断t1 树中是否有与t2 树拓扑结构完全相同的子树 java代码 package com.lizhouwei.chapter3; /** * @Description: 判断t1 树中是否有与 ...

  7. CSS3环形动画菜单

    在线演示 本地下载

  8. 51nod 1196

    题目 神犇题解:见题目讨论区曹鹏神犇的讲解. 跪烂..倒地不起.. 对于每一个合法解,我们都可以将其唯一地分解成若干个“链”.所谓链是指由那些小于n/2的字符组成的,并且最后一个字符满足2*i> ...

  9. HttpContext.Current为NULL

    总结:HttpContext.Current是基于System.Runtime.Remoting.Messaging.CallContext这个类,子线程和异步线程都无法访问到主线程在CallCont ...

  10. Linux课程---1、VMWare安装CentOS虚拟机(安装重要注意)

    Linux课程---1.VMWare安装CentOS虚拟机(安装重要注意) 一.总结 一句话总结: 可以先去百度搜一篇对应系统的安装教程:比如 CentOS 7 安装 1.安装VMWare之后,打开w ...