22.17、heartbeat和drbd整合
1、要确保master-db和slave-db的drbd服务和heartbeat服务都已经停止了;
2、heartbeate设置:
修改master-db和slave-db的'/etc/ha.d/haresource'配置文件如下:
master-db IPaddr::172.16.1.26/24/eth1 drbddisk::data Filesystem::/dev/drbd0::/master-db::ext4
#######################################################################
#1、master-db #主机名,表示初始状态会在master-db主机上绑定IP;
#2、IPaddr::172.16.1.26/24/eth1 #表示使用IPaddr脚本创建浮动ip在eth1网卡上,相当于执行
#/etc/ha.d/resource.d/IPaddr 172.16.1.26/24/eth1 start/stop命令;相当于
#ip addr add 172.16.1.26/24 dev eth1 label eth0:0、ifconfig down eth0:0;
#3、drbddisk::data #表示使用drbddisk脚本启动drbd中的data资源,相当于执行
#/etc/ha.d/resource.d/drbddisk data star/stop命令;相当于drbdadm primary/secondary data
#Filesystem::/dev/drbd0::/master-db::ext4 #表示使用Filesystem脚本挂载文件系统为
#ext4的'/dev/drbd0'设备到master-db目录;相当于执行
#/etc/ha.d/resource.d/Filesystem /dev/drbd0 /master-db ext4 start/stop;相当于
#mount/umount -t ext4 /dev/drbd0 /master-db
#4、总结:实质是通过心跳判断后哪端接收(start)资源和哪端放弃(stop)资源然后执行
#/etc/ha.d/resource.d/scripts <传参> start/stop的脚本;
#######################################################################
3、启动master-db上的drbd服务:
[root@master-db ~]#drbdadm up data
4、启动master-db上的heartbeat服务:
[root@master-db ~]#/etc/init.d/heartbeat start
5、启动slave-db上的drbd服务:
[root@slave-db ~]#drbdadm up data
6、启动slave-db上的heartbeat服务:
[root@slave-db ~]#/etc/init.d/heartbeat start
7、查看服务:
(1)master-db
1)查看浮动IP地址:
[root@master-db ~]#ip addr
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:5c:f0:d0 brd ff:ff:ff:ff:ff:ff
inet 172.16.1.16/24 brd 172.16.1.255 scope global eth1
inet 172.16.1.26/24 brd 172.16.1.255 scope global secondary eth1
inet6 fe80::20c:29ff:fe5c:f0d0/64 scope link
valid_lft forever preferred_lft forever
2)查看磁盘挂载情况:
[root@master-db ~]#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/drbd0 4.5G 9.4M 4.3G 1% /master-db
3)查看drbd的状态信息:
[root@master-db ~]#cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:4 nr:8 dw:12 dr:685 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
(2)slave-db
1)无浮动ip;没有磁盘挂载;
2)查看drbd的状态信息:
[root@slave-db ~]#cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:8 nr:4 dw:12 dr:685 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
8、停掉master-db的heartbeat服务:
[root@master-db ~]# /etc/init.d/heartbeat stop
Stopping High-Availability services: Done.
(1)master-db
1)无浮动ip;没有磁盘挂载;
2)查看drbd的状态信息:
[root@master-db ~]#cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:8 nr:12 dw:20 dr:685 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
(2)slave-db
1)查看浮动ip地址:
[root@slave-db ~]#ip addr
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:4a:99:4c brd ff:ff:ff:ff:ff:ff
inet 172.16.1.17/24 brd 172.16.1.255 scope global eth1
inet 172.16.1.26/24 brd 172.16.1.255 scope global secondary eth1
inet6 fe80::20c:29ff:fe4a:994c/64 scope link
valid_lft forever preferred_lft forever
2)查看磁盘:
[root@slave-db ~]#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/drbd0 4.5G 9.4M 4.3G 1% /master-db
3)查看drbd的状信息:
[root@slave-db ~]#cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:12 nr:8 dw:20 dr:1386 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
9、总结:
(1)到此heartbeat和drbd的整合就完成了,后面可以做heartbeat+drbd+nfs、heartbeat+drbd+mysql的
高可用都能够轻松的实现了;
(2)注意事项:
在实际的生产环境中heartbeat的心跳线和drbd的数据传输线是分开的,这里为了实验方便,心跳线和数据线
用的是同一条直连线,在生产中这么做可能会因为数据堵塞导致heartbeat的心跳异常;
(3)heartbeat、drbd启动和关闭服务的顺序 :
1)启动:
主(drbd-heartbeat)——>从(drbd-heartbeat)
2)关闭:
从(heartbeat-drbd)——>主(heartbeate-drbd)
3)注意:在关闭主的drbd服务时需要使用'umount /dev/drbd0'命令先卸载drbd0设备;
(4)小结:
1)对于高可用的软件都要设置为开机不自启动,启动时由人工启动和切换,为了防止脑裂,最重要的是vip资源;
2)修改参数需要停止服务;
3)heartbeat通过心跳只能控制drbd的挂载、卸载、至主从的作用,没有关闭drbd和开启drbd的功
能,所以drbd属于最底层的服务,需要手动进行开启和关闭;
启动的时候drbd都是角色都是secondary;
4)切换drbd的时候要看角色是primary/secondary或secondary/secondary后,说明数据时安全
的,可切换;
如果是裂脑(secondary/unknow)的状态,不可切换;
5)drbd有自我保护的功能,不会导致数据的不一致性;
drbd使用的C模式同步时如果有一方drbd掉线,就无法写数据,有助于保证了两边数据的一致性,出现裂脑也不会导致数据丢失;
6)启动过程:
启动服务:主(底层服务-上层服务)——>从(底层服务-上层服务)
关闭服务:从(上层服务-底层服务)——>主(上层服务-底层服务)
7)heartbeat服务器级别的,不能够监控服务,如果当相关的服务停止时需要切换时需要写守护进程
脚本监控相关服务,如果相关服务有异常就杀死heartbeat服务,实现切换;
22.17、heartbeat和drbd整合的更多相关文章
- 22.Java面试学习平台-整合OSS对象存储
SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. ...
- 程序员延寿指南「GitHub 热点速览 v.22.17」
很多人对程序员的固有印象之一便是常加班.易"猝死"!近几年的许多报道似乎也进一步加深了这种印象.应该如何更好地健康地活着.敲喜欢的代码呢?HowToLiveLonger 教你如何从 ...
- java 22 - 17 多线程之等待唤醒机制(接16)
先来一张图,看看什么叫做等待唤醒机制 接上一章的例子. 例子:学生信息的录入和获取 * 资源类:Student * 设置学生数据:SetThread(生产者) * 获取学生数据:GetThread( ...
- 《算法导论》习题解答 Chapter 22.1-7(关联矩阵的性质)
主对角线:出度+入度 其他:arr[i][j]=-n,则i与j之间有n条边. 证明: (原文点此,索引目录.感谢xiazdong君 && Google酱.这里是偶尔做做搬运工的水果君( ...
- Codeforces768B Code For 1 2017-02-21 22:17 95人阅读 评论(0) 收藏
B. Code For 1 time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 从Ecipse中导出程序至apk 分类: H1_ANDROID 2013-10-26 22:17 516人阅读 评论(0) 收藏
若未有数字证书: 1. 2. 3. 4. 5. 若已有数字证书: 上面的后3步改为 版权声明:本文为博主原创文章,未经博主允许不得转载.
- 【22.17%】【codeforces718B】 Efim and Strange Grade
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- 23、mysql高可用实践
23.1.mysql高可用业务需求: 23.2.mysql高可用架构图(单主热备模式): 23.6.部署drbd.heartbeat.mysql的主从同步: 1.部署heartbeat:参考" ...
- 1 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之DRBD的搭建
preface 近来公司利润上升,购买了10几台服务器,趁此机会,把mysql的主从同步的架构进一步扩展,为了适应日益增长的流量.针对mysql架构的扩展,先是咨询前辈,后和同事探讨,准备采用Mysq ...
随机推荐
- [Qt] 事件机制(四)
滚轮事件:滚动滚轮实现窗口大小缩放 widget.h中增加: protected: void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE; void ...
- Canal和Otter讨论二(原理与实践)
上次留下的问题 问题一: 跨公网部署Otter 参考架构图 解析 a. 数据涉及网络传输,S/E/T/L几个阶段会分散在2个或者更多Node节点上,多个Node之间通过zookeeper进行协同工 ...
- linux patch中的p0和p1的区别
命令patch的主要作用是生成diff文件和应用diff文件.举个例子来讲,当发现某个程序出现bug需要打补丁时,patch便是一个好工具. diff文件头: [root@localhost kern ...
- linux基础之用户及用户组管理
本节内容 用户管理 1. 为什么需要用户? 1.linux是一个多用户系统 2.权限管理(权限最小化) 2. 用户相关文件 /etc/passwd -->用户基本信息 /etc/shadow - ...
- STM32 SWD下载口无法下载的原因和解决办法
1.SWD的下载口在程序中被禁用,IO口被设置为普通IO口 2.芯片被锁,原因有可能是程序执行了不正确的访问导致芯片被锁 3.供电不正常 4.SWD烧了 解锁原因: 在下载程序的时候有时候会发生错误导 ...
- Lua学习高级篇
Lua学习高级篇 之前已经说了很多,我目前的观点还是那样,在嵌入式脚本中,Lua是最优秀.最高效的,如果您有不同的观点,欢迎指正并讨论,切勿吐槽.这个系列完全来自于<Programming in ...
- ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心
作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...
- React-setState的那些事儿
关于setState,使用过react的人应该再熟悉不过了,在hooks还不那么普及的时候,除了使用函数式组件,我们使用最多的应该就是类创建react的组件了,而在类组件中我们通常会使用state来管 ...
- CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状
CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状 ROI-10D: Monocular Lifting of 2D Detection to 6D Pose and Metric Sha ...
- TensorFlow创建DeepDream网络
TensorFlow创建DeepDream网络 Google 于 2014 年在 ImageNet 大型视觉识别竞赛(ILSVRC)训练了一个神经网络,并于 2015 年 7 月开放源代码. 该网络学 ...