采用Heartbeat+DRBD+mysql高可用方案,配置两个节点的高可用集群

配置各节点互相解析

gb07

gb06

配置各节点时间同步

gb07

[root@gb07 ~]# ntpdate 10.10.102.7

 

gb06

[root@gb06 ~]# ntpdate 10.10.102.7

各节点关闭SELinux

修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。

Corosync 安装与配置(两节点上都要安装配置)

  • 安装Corosync

gb07

[root@gb07 ~]# yum install -y corosync

gb06

[root@gb06 ~]# yum install -y corosync

  • .配置Corosync

[root@gb07 ~]# cd /etc/corosync/

[root@gb07 corosync]# mv corosync.conf.example corosync.conf

[root@gb07 corosync]# vim corosync.conf

compatibility: whitetank

totem {                                                                     #心跳信息传递层

version: 2                                    #版本

secauth: on                                                                  #认证信息  一般on

threads: 0                                                           #线程

interface {                                                           #定义心跳信息传递的接口

ringnumber: 0

bindnetaddr: 10.10.0.0                       #绑定的网络地址,写网络地址

mcastaddr: 226.94.1.1                                          #多播地址

mcastport: 5405                                           #多播的端口

ttl: 1                                                                           #生存周期

}

}

logging {                             #日志

fileline: off

to_stderr: no                 #是否输出在屏幕上

to_logfile: yes               #定义自己的日志

to_syslog: no                 #是否由syslog记录日志

logfile: /var/log/cluster/corosync.log  #日志文件的存放路径

debug: off

timestamp: on                 #时间戳是否关闭

logger_subsys {

subsys: AMF

debug: off

}

}

amf {

mode: disabled

}

service {

ver: 0

name: pacemaker       #pacemaker作为corosync的插件进行工作

}

aisexec {

user: root

group: root

}

[root@gb07 corosync]#  scp corosync.conf gb06:/etc/corosync/

  • 认证文件

[root@gb07 corosync]# corosync-keygen

Corosync Cluster Engine Authentication key generator.

Gathering 1024 bits for key from /dev/random.

Press keys on your keyboard to generate entropy (bits = 152).

#遇到这个情况,表示电脑的随机数不够,可以不停的随便敲键盘生成随机数

[root@gb07 corosync]# scp authkey gb06:/etc/corosync/

#把认证文件也复制到gb06主机上

l  Pacemaker配置与安装(两节点上都要安装配置)

  • 安装pacemaker

gb07

[root@gb07 ~]# yum install -y pacemaker

gb06

[root@gb06 ~]# yum install -y pacemaker

  • 安装crmsh

gb07

[root@gb07 ~]# yum –y install crm

gb06

[root@gb06 ~]# yum –y install crm

安装完成后,启动corosync  service corosync start; 启动pacemaker

service pacemaker start

DRBD 安装与配置(两个节点上都要安装配置)

  • 安装drbd

gb07

[root@gb07 ~]# yum -y install drbd84 kmod-drbd84

gb06

[root@gb06 ~]# yum -y install drbd84 kmod-drbd84

如果yum源找不到包,尝试在网上搜一下drbd安装,下载相应的yum源文件再安装

  • 配置drbd

[root@gb07 ~]# cat /etc/drbd.d/global_common.conf

global {

usage-count no;

# minor-count dialog-refresh disable-ip-verification

}

common {

protocol C;

handlers {

pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";

pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";

local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";

# fence-peer "/usr/lib/drbd/crm-fence-peer.sh";

# split-brain "/usr/lib/drbd/notify-split-brain.sh root";

# out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";

# before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";

# after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;

}

startup {

#wfc-timeout 120;

#degr-wfc-timeout 120;

}

disk {

on-io-error detach;

#fencing resource-only;

}

net {

cram-hmac-alg "sha1";

shared-secret "mydrbdlab";

}

syncer {

rate 1000M;

}

}

[root@gb07 drbd.d]# cat mysql.res #资源配置文件

resource mysql {

on gb07 {

device    /dev/drbd0;

disk      /dev/sda3;     #预留的硬盘分区

meta-disk internal;

address ipv4 10.10.102.7:7700;

}

on gb06 {

device    /dev/drbd0;

disk      /dev/sda3;

meta-disk internal;

address ipv4 10.10.102.6:7700;

}

}

[root@gb07 drbd.d]# scp global_common.conf mydata.res gb06:/etc/drbd.d/

 

  • 初始化drbd的资源并启动

DRBD元数据的初始化和将元数据的初始设置写入 /dev/data/mysql,必须两个节点上都完成

创建/ dev/drbd0设备节点,将DRBD设备与本地存储设备相连,必须在两个节点上都完成

使初始设备同步,让设备成为主要的角色(可写和可读)。查看DRBD资源的主要角色和次要角色更详细的说明请参考DRBD用户指南。只能完成一个节点,就是你将继续创建文件系统的那个节点

  • 格式化drbd分区(主节点上完成)

mkfs -t xfs /dev/drbd0

mount /dev/drbd0 /mysql

l  将mysql资源加入pacemaker

  • 定义drbd资源

[root@jie2 ~]# crm

crm(live)# configure

crm(live)configure# property stonith-enabled=false

crm(live)configure# property no-quorum-policy=ignore

crm(live)configure# primitive mysqldrbd ocf:linbit:drbd params drbd_resource=mysql op monitor role=Master interval=10 timeout=20  op monitor  role=Slave interval=20 timeout=20 op start timeout=240 op stop timeout=100

crm(live)configure#verify   #检查语法

  • 定义drbd的主从资源

crm(live)configure# ms ms_mysqldrbd mysqldrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true

crm(live)configure# verify

  • 定义文件系统资源和约束关系

crm(live)configure# primitive mystore ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/mysql" fstype="xfs" op monitor interval=40 timeout=40 op start timeout=60 op stop timeout=60

crm(live)configure# verify

crm(live)configure# colocation mystore_with_ms_mysqldrbd inf: mystore ms_mysqldrbd:Master

crm(live)configure# order ms_mysqldrbd_before_mystore mandatory: ms_mysqldrbd:promote mystore:start

crm(live)configure# verify

  • 定义vip资源、mysql服务的资源约束关系

crm(live)configure# primitive myvip ocf:heartbeat:IPaddr params ip="10.10.42.96" op monitor interval=20 timeout=20 on-fail=restart

crm(live)configure# primitive myserver lsb:mysqld op monitor interval=20 timeout=20 on-fail=restart

crm(live)configure# verify

crm(live)configure# colocation myserver_with_mystore inf: myserver mystore

crm(live)configure# order mystore_before_myserver mandatory: mystore:start myserver:start

crm(live)configure# verify

crm(live)configure# colocation myvip_with_myserver inf: myvip myserver

crm(live)configure# order myvip_before_myserver mandatory: myvip myserver

crm(live)configure# verify

crm(live)configure# commit

commit之后可以查看节点的运行状态,切换节点,看资源是否转移

  • 关闭drbd的服务和关闭mysql的服务

mysqldrbd都是集群的资源,由集群管理的资源开机是一定不能够自行启动的。

[root@gb07 ~]#chkconfig mysqld off

[root@gb07 ~]#chkconfig drbd off

[root@gb06 ~]#chkconfig mysqld off

[root@gb06 ~]#chkconfig drdb off

  • 为高可用Mysql配置Openstack服务

  现在,OpenStack的服务必须指向MySQL配置高可用,虚拟群集IP地址 - 而不是像往常一样的MySQL服务器的物理IP地址。

  对于Openstack中的glance,如果Mysql服务的ip地址是10.10.102.7,将会用到以下几行在OpenStack镜像注册配置文件中(glance-registry.conf):

    sql_connection = mysql://glancedbadmin:<password>@10.10.42.96/glance

l  可能会遇到的问题

  • 脑裂故障

正常状态下,查看集群中drbd资源的连接状态为:

但由于网络或机器的故障可能会出现drbd脑裂故障,集群的drbd资源连接中断:

0:mysql/0  StandAlone Secondary/Unknown UpToDate/-- C r-----

解决办法查看官方链接http://www.drbd.org/users-guide/s-resolve-split-brain.html

  • 集群管理器pacemaker无法启动mysql,启动失败; 控制节点内存要足够,mysql中有个插件innodb,mysqld启动时innodb插件会初始化一个内存缓冲池,约2.3G,如果没有足够的内存,mysqld启动就会失败;
  • 偶尔一个节点挂掉,修复完成后,crm resource list看到该节点的资源状态仍然是stopped,无法start,可能需要重启一下drbd和pacemaker;

OpenStack中MySQL高可用配置的更多相关文章

  1. OpenStack API部分高可用配置(一)

    一.概况与原理  SHAPE  \* MERGEFORMAT 1)所需要的配置组件有:pacemaker+corosync+HAProxy 2)主要原理:HAProxy作为负载均衡器,将对openst ...

  2. OpenStack API部分高可用配置(二)

    一.安装与配置HAProxy 1.调整内核参数,允许绑定VIP: vim /etc/sysctl.conf [内容] net.ipv4.ip_nonlocal_bind=1 sysctl -p 2.安 ...

  3. MySQL高可用配置(主从复制)

    主从复制包含两个步骤: 在 master 主服务器(组)上的设置,以及在 slave 从属服务器(组)上的设置. 环境: MASTER: 192.168.155.101SLAVE: 192.168.1 ...

  4. Lvs+Keepalived实现MySQL高可用

    LVS+Keepalived+MySQL高可用配置 本文所有配置前提是已实现MySQL双主备份(MySQL双主) 安装前的准备: VIP:192.168.0.201 Keepalived: Keepa ...

  5. (5.8)mysql高可用系列——MySQL中的GTID复制(实践篇)

    一.基于GTID的异步复制(一主一从)无数据/少数据搭建 二.基于GTID的无损半同步复制(一主一从)(mysql5.7)基于大数据量的初始化 正文: [0]概念 [0.5]GTID 复制(mysql ...

  6. 【DB宝19】在Docker中使用MySQL高可用之MHA

    目录 一.MHA简介和架构 1.1 MHA简介 1.2 MHA工具包的组成 1.3 MHA架构 二.准备MHA环境 2.1 下载MHA镜像 2.2 编辑yml文件,创建MHA相关容器 2.3 安装do ...

  7. linux中keepalived实现nginx高可用配置

    linux中keepalived实现nginx高可用配置 安装keepalived 运行如下命令即可 tar -zxvf keepalived-2.0.8.tar.gz -C /usr/src cd ...

  8. MySQL+keeplived高可用配置

    MySQL高可用基础环境:基于MySQL互为主从(双主.主主),请现配置 主备两台机器 主的操作1.在keepalived主服务器上安装keepalived yum -y install keepal ...

  9. MySQL高可用方案

    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...

随机推荐

  1. SSIS 你真的了解事务吗?

    事务用于处理数据的一致性,事务的定义是,处于同一个事务中的操作是一个工作单元,要么全部执行成功,要么全部执行失败.把事务的概念应用到在实际的SSIS Package场景中,如何在Package中实现事 ...

  2. Java和C#基本类库的区别

    java.lang java .net Boolean System.Boolean Byte System. Byte Character System.Char Class System.Type ...

  3. 谷歌商店高级搜索 Google play advanced search

    这个问题一直搜索了很久都没有答案,后来在StackOverflow上提问,很久也没人回答. 详见我的SO:https://stackoverflow.com/questions/52939493/ho ...

  4. [Direct2D开发] 从资源加载位图

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 Direct2D使用Windows图像处理组件 (WIC) 来加载位图.从文件加载位图的方法很简单,而且网上的教 ...

  5. 《Pro SQL Server Internals, 2nd edition》的CHAPTER 2 Tables and Indexes中的Clustered Indexes一节(翻译)

    <Pro SQL Server Internals> 作者: Dmitri Korotkevitch 出版社: Apress出版年: 2016-12-29页数: 804定价: USD 59 ...

  6. Google I/O 2018大会小结

    Google I/O 2018大会于北京时间5月9日凌晨1点,在美国山景城Shoreline Amphitheatre(圆形剧场)举办.看了一下录播,字幕延迟,全程靠听,下面对上午的主会进行一个小结. ...

  7. Scrum Meeting day 1

    第一次会议,在这一次的会议中,明确了任务目标,并将任务进行合理分配,并且规划了整个任务的初步计划. No_00:分工情况 姓名 分工   崔强      PM 杜正远 主力工程师 王嘉豪 主力工程师 ...

  8. 课堂讨论 alpha版最后总结

    议时间:组队开发最后总结会议   星期一   下午4:30-5:30 会议地点:学院楼自习室 到会人员:唐野野 胡潘华 王永伟 魏孟 会议概要: 1.展示最后开发成果: 2.交流开发过程心得体会: 会 ...

  9. Locality Sensitive Hashing,LSH

    1. 基本思想 局部敏感(Locality Senstitive):即空间中距离较近的点映射后发生冲突的概率高,空间中距离较远的点映射后发生冲突的概率低. 局部敏感哈希的基本思想类似于一种空间域转换思 ...

  10. 使用VS2013进行C#程序的单元测试

    没有按照预期的那样做出成功的单元测试,磕磕绊绊参照了下面两篇博客大致做出来了,所以很有必要记录一下过程. http://www.cnblogs.com/duasonir/p/5299732.html( ...