DRBD+Pacemaker实现DRBD主从角色的自动切换

DRBD+Pacemaker实现DRBD主从角色的自动切换

前提:

drbd设备名,以及drbd设备的挂载点都要与对端节点保持一致;

因为我们

定义资源,使用到设备名及挂载点,所以两端的drbd设备名和设备的挂载点都必须保持一致;

如何定义主从资源?

主从资源是一类特殊的克隆资源;

要成为克隆资源,首先必须定义成主资源;

因此,要想定义成主从资源,首先必须定义成主资源。为保证成为主资源的同时,drdb设备可以同时挂载,还需定义Filesystem

clone-max: 在集群中最多能运行多少份克隆资源,默认和集群中的节点数相同;

clone-node-max:每个节点上最多能运行多少份克隆资源,默认是1;

notify:当成功启动或关闭一份克隆资源,要不要通知给其它的克隆资源,可用值为false,true;默认值是true;

globally-unique: 是否为集群中各节点的克隆资源取一个全局唯一名称,用来描述不同的功能,默认为true;

ordered:克隆资源是否按顺序(order)启动,而非一起(parallel)启动,可用值为false,true;默认值是true;

interleave:当对端的实例有了interleave,就可以改变克隆资源或主资源中的顺序约束;

master-max:最多有多少份克隆资源可以被定义成主资源,默认是1;

master-node-max:每个节点上最多有多少份克隆资源可以被提升为主资源,默认是1;

检查node1,node2是否安装了corosync,pacemaker,crmsh,pssh

[[email protected] ~]# rpm -q corosync pacemaker crmsh pssh

corosync-1.4.1-17.el6.x86_64

pacemaker-1.1.10-14.el6.x86_64

crmsh-1.2.6-4.el6.x86_64

pssh-2.3.1-2.el6.x86_64

[[email protected] ~]# ssh node2.ja.com ‘rpm -q corosync pacemaker crmsh pssh‘

corosync-1.4.1-17.el6.x86_64

pacemaker-1.1.10-14.el6.x86_64

crmsh-1.2.6-4.el6.x86_64

pssh-2.3.1-2.el6.x86_64

若未安装,则执行yum -y install corosync pacemaker crmsh pssh

一旦配置成集群资源,就不能让他们自动启动

[[email protected] ~]# umount /drbd/

[[email protected] ~]# drbdadm secondary mystore1

[[email protected] ~]# service drbd stop

[[email protected] ~]# chkconfig drbd off

[[email protected] ~]# ssh node2.ja.com ‘service drbd stop;chkconfig drbd off‘

[[email protected] ~]# cd /etc/corosync/

[[email protected] corosync]# cp corosync.conf.example corosync.conf

corosync.conf修改后的内容如下所示:

[[email protected] corosync]# egrep -v ‘^$|^[[:space:]]*#‘ /etc/corosync/corosync.conf

compatibility: whitetank

totem {

version: 2

secauth: on

threads: 0

interface {

ringnumber: 0

bindnetaddr: 172.16.16.0

mcastaddr: 226.94.16.15

mcastport: 5405

ttl: 1

}

}

logging {

fileline: off

to_stderr: no

to_logfile: yes

to_syslog: no

logfile: /var/log/cluster/corosync.log

debug: off

timestamp: on

logger_subsys {

subsys: AMF

debug: off

}

}

amf {

mode: disabled

}

service {

name: pacemaker

ver:  0

}

aisexec {

user:  root

group: root

}

使用corosync-keygen生成认证文件的时候,由于熵池的随机数不够用,可能需要等待较长时间,在下面,我们就采取一种简便易行的方法,在生产环境尽量不要这么用,因为不安全。

[[email protected] corosync]# mv /dev/random /dev/h

[[email protected] corosync]# ln /dev/urandom /dev/random

[[email protected] 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.

Writing corosync key to /etc/corosync/authkey.

[[email protected] corosync]# rm -rf /dev/random

[[email protected] corosync]# mv /dev/h /dev/random

[[email protected] corosync]# ll authkey corosync.conf

-r-------- 1 root root 128 Apr 28 17:23 authkey

-rw-r--r-- 1 root root 708 Apr 28 13:51 corosync.conf

[[email protected] corosync]# scp -p authkey corosync.conf node2.ja.com:/etc/corosync/

验证对端认证文件和主配置文件的权限,是否保持不变

[[email protected] corosync]# ssh node2.ja.com ‘ls -l /etc/corosync/{authkey,corosync.conf}‘

-r-------- 1 root root 128 Apr 28 17:23 /etc/corosync/authkey

-rw-r--r-- 1 root root 708 Apr 28 13:51 /etc/corosync/corosync.conf

启动corosync服务

[[email protected] corosync]# service corosync start

[[email protected] corosync]# ssh node2.ja.com ‘service corosync start‘

现在就一切正常了

[[email protected] corosync]# crm status

Last updated: Mon Apr 28 18:20:41 2014

Last change: Mon Apr 28 18:16:01 2014 via crmd on node1.ja.com

Stack: classic openais (with plugin)

Current DC: node2.ja.com - partition with quorum

Version: 1.1.10-14.el6-368c726

2 Nodes configured, 2 expected votes

1 Resources configured

Online: [ node1.ja.com node2.ja.com ]

[[email protected] drbd.d]# crm status

Last updated: Mon Apr 28 06:19:36 2014

Last change: Mon Apr 28 18:16:01 2014 via crmd on node1.ja.com

Stack: classic openais (with plugin)

Current DC: node2.ja.com - partition with quorum

Version: 1.1.10-14.el6-368c726

2 Nodes configured, 2 expected votes

1 Resources configured

Online: [ node1.ja.com node2.ja.com ]

[[email protected] ~]# crm

crm(live)# configure

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

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

crm(live)configure# rsc_defaults resource-stickiness=100

crm(live)configure# verify

crm(live)configure# commit

crm(live)configure# show

crm(live)resource# cd

crm(live)# exit

bye

[[email protected] ~]# crm

crm(live)# ra

crm(live)ra# classes

lsb

ocf / heartbeat linbit pacemaker

service

stonith

crm(live)ra# list ocf heartbeat

CTDB           Dummy          Filesystem     IPaddr         IPaddr2        IPsrcaddr

LVM            MailTo         Route          SendArp        Squid          VirtualDomain

Xinetd         apache         conntrackd     dhcpd          ethmonitor     exportfs

mysql          mysql-proxy    named          nfsserver      nginx          pgsql

postfix        rsyncd         rsyslog        slapd          symlink        tomcat

crm(live)ra# list ocf pacemaker

ClusterMon     Dummy          HealthCPU      HealthSMART    Stateful       SysInfo

SystemHealth   controld       ping           pingd          remote

crm(live)ra# list ocf linbit

drbd

crm(live)ra# meta ocf:linbit:drbd

crm(live)ra# cd

crm(live)# configure

crm(live)configure# primitive mysqlstore2 ocf:linbit:drbd params drbd_resource=mystore1 op monitor role=Master intrval=30s timeout=20s op mointor role=Slave interval=60s timeout=20s op start timeout=240s op stop timeout=100s

crm(live)configure# verify

crm(live)configure# master ms_mysqlstore1 mysqlstore meta master-max=1 master-node-max=1 clone-max=2  clone-node-max=1 notify="True"

crm(live)configure# verify

crm(live)configure# commit

crm(live)configure# show

crm(live)configure# cd

crm(live)# node standby node1.ja.com

此时发现node2自动提升为主的

crm(live)# status

让node1再上线,发现node1,是从的;node2还是主的

crm(live)# node  online node1.ja.com

为主节点定义文件系统资源

# crm

crm(live)# configure

crm(live)configure# primitive WebFS ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/www" fstype="ext3"

crm(live)configure# colocation WebFS_on_MS_webdrbd inf: WebFS MS_Webdrbd:Master

crm(live)configure# order WebFS_after_MS_Webdrbd inf: MS_Webdrbd:promote WebFS:start

crm(live)configure# verify

crm(live)configure# commit

查看集群中资源的运行状态:

crm status

============

Last updated: Fri Jun 17 06:26:03 2011

Stack: openais

Current DC: node2.a.org - partition with quorum

Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87

2 Nodes configured, 2 expected votes

2 Resources configured.

============

Online: [ node2.a.org node1.a.org ]

Master/Slave Set: MS_Webdrbd

Masters: [ node2.a.org ]

Slaves: [ node1.a.org ]

WebFS (ocf::heartbeat:Filesystem): Started node2.a.org

由上面的信息可以发现,此时WebFS运行的节点和drbd服务的Primary节点均为node2.a.org;我们在node2上复制一些文件至/www目录(挂载点),而后在故障故障转移后查看node1的/www目录下是否存在这些文件。

# cp /etc/rc./rc.sysinit /www

下面我们模拟node2节点故障,看此些资源可否正确转移至node1。

以下命令在Node2上执行:

# crm node standby

# crm status

============

Last updated: Fri Jun 17 06:27:03 2011

Stack: openais

Current DC: node2.a.org - partition with quorum

Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87

2 Nodes configured, 2 expected votes

2 Resources configured.

============

Node node2.a.org: standby

Online: [ node1.a.org ]

Master/Slave Set: MS_Webdrbd

Masters: [ node1.a.org ]

Stopped: [ webdrbd:0 ]

WebFS (ocf::heartbeat:Filesystem): Started node1.a.org

由上面的信息可以推断出,node2已经转入standby模式,其drbd服务已经停止,但故障转移已经完成,所有资源已经正常转移至node1。

在node1可以看到在node2作为primary节点时产生的保存至/www目录中的数据,在node1上均存在一份拷贝。

让node2重新上线:

# crm node online

[[email protected] ~]# crm status

============

Last updated: Fri Jun 17 06:30:05 2011

Stack: openais

Current DC: node2.a.org - partition with quorum

Version: 1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87

2 Nodes configured, 2 expected votes

2 Resources configured.

============

Online: [ node2.a.org node1.a.org ]

Master/Slave Set: MS_Webdrbd

Masters: [ node1.a.org ]

Slaves: [ node2.a.org ]

WebFS (ocf::heartbeat:Filesystem): Started node1.a.org

DRBD+Pacemaker实现DRBD主从角色的自动切换,布布扣,bubuko.com

时间: 2024-10-11 22:33:50

DRBD+Pacemaker实现DRBD主从角色的自动切换的相关文章

redis_主从配置以及自动切换

3台虚拟机 192.168.1.52 192.168.1.53 192.168.1.54 上来做这个操作: 1.机器上编译安装(3.0.7版本)redis->wget http://download.redis.io/releases/redis-3.0.7.tar.gz 2.配置: 主机:192.168.1.52  从机:192.168.1.53   192.168.1.54 配置文件(redis.conf): 192.168.1.52: daemonize yes pidfile "/

DRBD主从角色手动切换的实现

主机规划 172.16.16.15  node1.ja.com 172.16.16.16  node2.ja.com 一.准备工作 ======================================================================= 1. 为各主机设置主机名,IP地址,并测试主机连通性 分别为各节点设置主机名 node1: hostname   node1.ja.com node2: hostname   node2.ja.com 确保各主机在重启之后,

pacemaker+corosync+drbd实现自动故障转移集群

1,两台cenots7.0服务器,我是用KVM虚拟机搭建的. 2,互相解析hosts文件 3,关闭iptables和selinux,ssh开启 4,配置yum源,安装pacemaker,corosync,drbd 5,配置drbd,选择procoto C ,复制模式,验证结果 6,配置corosync,基于crm管理VIP,FSsystem,DRBD块设备 7,验证结果,能否发生故障自动切换. 1,drbdAA  eth0 9.111.222.59  eth1 192.168.100.59 dr

corosync+pacemaker+crmsh+DRBD实现数据库服务器高可用集群构建

  DRBD (DistributedReplicated Block Device) 是 Linux 平台上的分散式储存系统.其中包含了核心模组,数个使用者空间管理程式及 shell scripts,通常用于高可用性(high availability, HA)丛集.DRBD 类似磁盘阵列的RAID 1(镜像),只不过 RAID 1 是在同一台电脑内,而 DRBD 是透过网络. DRBD 是以 GPL2 授权散布的自由软件. 实验架构图: 一.高可用集群构建的前提条件 1.主机名互相解析,实现

corosync(pacemaker)+drbd+web(apache)

环境:     vm1-hong:172.16.3.2/16     vm2-ning:172.16.3.10/16     VIP:172.16.3.100/16 一.drbd安装: 案例:配置主从primary/secondary的drbd设备(主从节点在高可用集群中,中从节点切换比较慢) 前提:     1.两节点之间必须时间同步.基于主机名能相互通信     2.准备的磁盘设备必须是同样大小的     3.系统架构得一样    包: drbd-8.4.3-33.el6.x86_64.rp

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

DRBD (Distributed Replicated Block Device)分布式复制块设备,它是 Linux 平台上的分散式储存系统,通常用于高可用性(high availability, HA)集群中.DRBD 类似磁盘阵列的RAID 1(镜像),只不过 RAID 1 一般配置在一台服务器内,而 DRBD 是通过网络. DRBD Resource:DRBD所具有的几种属性: resource name:可以使用除空白字符外的任意ACSII表中的字符: drbd设备:drbd的设备的访

corosync+pacemaker+mysql+drbd 实现mysql的高可用

corosync corosync的由来是源于一个Openais的项目,是Openais的一个子 项目,可以实现HA心跳信息传输的功能,是众多实现HA集群软件中之一,heartbeat与corosync是流行的Messaging Layer (集群信息层)工具.而corosync是一个新兴的软件,相比Heartbeat这款很老很成熟的软件,corosync与Heartbeat各有优势,博主就不在这里比较之间的优势了,corosync相对于Heartbeat只能说现在比较流行. pacemaker

Corosync+Pacemaker+MySQL+DRBD(二)

上接Corosync+Pacemaker+MySQL+DRBD(一)http://9124573.blog.51cto.com/9114573/1768076 ⑶布署corosync+pacemaker ◆安装软件包 pacemaker依赖corosync,安装pacemaker包会连带安装corosync包 yum -y install pacemaker [[email protected] ~]# yum -y install pacemaker;ssh [email protected]

how-to create a high-availability mysql setup with corosync pacemaker and drbd on ubuntu

前言 坑无处不有.对各个组件大家都是仁者见仁智者见智. 各个组件的工作原理适用场景就不在一 一阐述.--待续--环境准备Corosync 安装与配置Pacemaker 安装与配置DRBD 安装与配置MySQL 安装与配置Crm 资源管理 系统结构 环境准备 $cat /etc/issue Ubuntu 14.04.4 LTS \n \l $uname  -r 4.2.0-27-generic [Both] $grep '10\|20' /etc/hosts 172.16.9.10 eva.suz