阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

505次阅读
没有评论

共计 9603 个字符,预计需要花费 25 分钟才能阅读完成。

前提:

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

因为我们

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

 

如何定义主从资源?

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

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

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

————————————– 分割线 ————————————–

 

相关阅读

Linux 高可用(HA)集群之 DRBD 详解 http://www.linuxidc.com/Linux/2013-08/89035.htm

DRBD 中文应用指南 PDF http://www.linuxidc.com/Linux/2013-08/89034.htm

CentOS 6.3 下 DRBD 安装配置笔记 http://www.linuxidc.com/Linux/2013-06/85600.htm

基于 DRBD+Corosync 实现高可用 MySQL http://www.linuxidc.com/Linux/2013-05/84471.htm

CentOS 6.4 下 DRBD 安装配置 http://www.linuxidc.com/Linux/2013-09/90536.htm

————————————– 分割线 ————————————–

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

[root@node1 ~]# 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

[root@node1 ~]# 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

 

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

[root@node1 ~]# umount /drbd/

[root@node1 ~]# drbdadm secondary mystore1

[root@node1 ~]# service drbd stop

[root@node1 ~]# chkconfig drbd off

[root@node1 ~]# ssh node2.ja.com ‘service drbd stop;chkconfig drbd off’

 

 

 

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

[root@node1 corosync]# cp corosync.conf.example corosync.conf

 

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

[root@node1 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

}

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-05/101304p2.htm

DRBD 的详细介绍:请点这里
DRBD 的下载地址:请点这里

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

[root@node1 corosync]# mv /dev/random /dev/h

[root@node1 corosync]# ln /dev/urandom /dev/random

[root@node1 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.

[root@node1 corosync]# rm -rf /dev/random

[root@node1 corosync]# mv /dev/h /dev/random

[root@node1 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

[root@node1 corosync]# scp -p authkey corosync.conf node2.ja.com:/etc/corosync/

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

[root@node1 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 服务

[root@node1 corosync]# service corosync start

[root@node1 corosync]# ssh node2.ja.com ‘service corosync start’

 

现在就一切正常了

[root@node1 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]

 

[root@node2 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]

 

 

 

[root@node1 ~]# 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

 

[root@node1 ~]# 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

[root@node2 ~]# 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 设备名, 以及 drbd 设备的挂载点都要与对端节点保持一致;

因为我们

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

 

如何定义主从资源?

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

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

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

————————————– 分割线 ————————————–

 

相关阅读

Linux 高可用(HA)集群之 DRBD 详解 http://www.linuxidc.com/Linux/2013-08/89035.htm

DRBD 中文应用指南 PDF http://www.linuxidc.com/Linux/2013-08/89034.htm

CentOS 6.3 下 DRBD 安装配置笔记 http://www.linuxidc.com/Linux/2013-06/85600.htm

基于 DRBD+Corosync 实现高可用 MySQL http://www.linuxidc.com/Linux/2013-05/84471.htm

CentOS 6.4 下 DRBD 安装配置 http://www.linuxidc.com/Linux/2013-09/90536.htm

————————————– 分割线 ————————————–

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

[root@node1 ~]# 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

[root@node1 ~]# 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

 

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

[root@node1 ~]# umount /drbd/

[root@node1 ~]# drbdadm secondary mystore1

[root@node1 ~]# service drbd stop

[root@node1 ~]# chkconfig drbd off

[root@node1 ~]# ssh node2.ja.com ‘service drbd stop;chkconfig drbd off’

 

 

 

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

[root@node1 corosync]# cp corosync.conf.example corosync.conf

 

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

[root@node1 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

}

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-05/101304p2.htm

DRBD 的详细介绍:请点这里
DRBD 的下载地址:请点这里

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计9603字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994148
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...