DRBD安装和测试

1、对10.10.13.7 和 10.10.13.9两台机器进行DRBD重新的安装测试。

          参考:http://www.cnblogs.com/f-ck-need-u/p/8673178.html       

               https://www.cnblogs.com/f-ck-need-u/p/8678883.html

               https://www.cnblogs.com/f-ck-need-u/p/8684648.html

               https://www.cnblogs.com/f-ck-need-u/p/8691373.html

先简单描述一下这次的过程,最后做一下调研结果的总结:

(1)修改了之前的不好记忆的主机名,因为drbd是基于主机名解析的。将其更改为:

 hostnamectl set-hostname drbd1.yzs.com   #10.10.13.7
 hostnamectl set-hostname drbd2.yzs.com   #10.10.13.9

(2)修改hosts文件。将主机名配置成数据同步专用通道eth1的地址。#两台机器都配置

10.10.13.7 drbd1.yzs.com node1
10.10.13.9 drbd2.yzs.com node2

(3)时间同步。#两台机器都运行

ntpdate ntp1.aliyun.com

(4)提供分区。分别在两台上服务器上添加一块硬盘,然后都分为两个区。
注意,作为metadata的分区不要格式化,而用作data的分区格式化后不要挂载。
此处实验分区为/dev/sdb1(metadata区)和/dev/sdb5(数据区)。

for i in /sys/class/scsi_host/*;do echo "- - -" >$i/scan;done
# 主分区(metadata区)/dev/sdb1:100G,扩展分区/dev/sdb2,逻辑分区(data区)/dev/sdb5:100G
parted /dev/sdb mklabel msdos
parted /dev/sdb mkpart p 1 100G
parted /dev/sdb "mkpart e 100G -1"
parted /dev/sdb mkpart l 100G 200G
fdisk /dev/sdb
mke2fs -t ext4 /dev/sdb5 

  注:可能出现错误:/dev/sdb5 is apparently in use by the system; will not make a filesystem here!                            解决参考:http://blog.51cto.com/openlinuxfly/1362113

(5)两种安装drbd的方式 :1、yum安装 2、编译安装 。——这次使用的是yum安装

 drbd工具分为两部分:内核模块(kmod-drbd)和用户空间的管理工具(drbd-utils),
 其中内核模块已经整合到了2.6.33版本及以后版本的上游内核中。如果早于这个版本,则需要安装和管理工具相同版本的模块。

 在elrepo源中,可以找到drbd的内核模块和管理工具。  查看:cat /etc/yum.repos.d/elrepo.repo               

 安装drbd90-utils和对应版本的模块kmod-drbd90。安装后装载drbd模块。
yum -y install drbd90-utils kmod-drbd90 
modprobe drbd    
 如果需要开机加载drbd模块,请参考链接1

(6)drbd配置文件。注意:此配置是drbd8.4的,与drbd9版本的配置差别比较大

  drbd的主配置文件/etc/drbd.conf,为了管理的便捷性,在此文件中使用了include指令指定了包含的配置文件段,默认的是在/etc/drbd.d/目录下。在此目录有全局配置文件global_common.conf和其他配置文件*.res文件。

 其中在主配置文件中include全局配置文件的指令只能出现一个,且必须出现在最前面。

 两个节点的配置文件应尽量完全一致。

 global_common.conf 配置内容如下:
   global {
          usage-count no;
          }
   common {
          handlers{   # 定义出现以下问题(如splitbrain或out-of-sync错误)时处理策略
                  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";
                  split-brain "/usr/lib/drbd/notify-split-brain.sh root";
                  out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
                  }
           disk {
                on-io-error detach; # 当发生io错误时,直接拔除备节点设备
                resync-rate 600M;
                }
                protocol C; # 定义使用C协议,即同步复制。可不定义,此为默认
           }  
    再新建一个配置文件data1.res,里面定义资源。
  resource data1 {
            device    /dev/drbd0;
            disk      /dev/sdb5;
            meta-disk /dev/sdb1[0];
            on drbd1.yzs.com {
                           address   10.10.13.7:7788;
            }
            on drbd2.yzs.com {
                           address   10.10.13.9:7788;
            }
   }
     注:在on hostname段中,hostname必须和uname -n一致,因为drbd默认是基于主机名进行解析的。
     但是,drbd支持基于ip地址的解析,这时drbd根据ip地址进行漂移,ip地址在哪个主机上,就解析到哪个主机上。

(7)对两节点都进行初始化。

[root@drbd1 drbd.d]# drbdadm create-md data1
initializing activity log 
NOT initializing bitmap Writing meta data... 
New drbd meta data block successfully created.

注:可能会出现以下问题:
DRBD安装和测试_第1张图片
解决方法:
DRBD安装和测试_第2张图片
初始化成功后,可以使用下面几个命令来获取drbd的metadata区信息。
DRBD安装和测试_第3张图片

DRBD安装和测试_第4张图片
(8)在节点上启动drbd

drbdadm up data1
   注:如果启动报以下错误:0: Failure: (119) No valid meta-data signature found.,
   则可能是因为对metadata进行了格式化。解决方法是将其删除再重新创建但不要格式化。

(9)查看/proc/drbd文件来查看drbd中配置的资源的状态。

    如果角色ro是从/从,则表明配置成功,若有一端是unknown,则表明和对方不能通信,
    可能是主机路由的问题,这样会导致脑裂的问题。

DRBD安装和测试_第5张图片

DRBD安装和测试_第6张图片

(10)实现drbd主从同步

 在需要设置为主机点的机器上执行:drbdadm primary --force data1        
 其中"--force"表示强制升级为primary,这会导致本节点的数据强制同步到对端上。

DRBD安装和测试_第7张图片

可以看到本端已经设置为主节点,且ds的一端是uptodate状态,最后还看到了镜像到对方的进度信息。
当镜像完成后,再查看资源的信息。可以发现两端的ds都变成uptodate状态了。说明镜像完成了。

(11)数据同步和主从角色切换

 现在已经有一端是主节点了。drbd的主从节点中,只有主节点是可以挂载并进行读写的。
 所以在主节点上挂载drbd设备.
 挂载drbd到mnt,然后向其中拷贝一个文件。

 如果对端也有这个文件则说明同步成功了,但是对端是从节点,无法读取数据,所以只能切换主从角色再查看。
 不过在,实验环境下直接把从节点的drbd给down掉,再直接挂载/dev/sdb5也是可以的。

 ---所以首先将主节点切换为从节点,必须先卸载挂载点才行。

DRBD安装和测试_第8张图片

 ---再在从节点上将自己设置为主节点,然后挂载drbd设备,再查看是否有文件同步过来了。    

DRBD安装和测试_第9张图片

  这说明实现了数据同步。但是这样手动切换来切换去的很麻烦,我们可以将其交给heartbeat或者corosync来管理,
  实现drbd的自动切换。

2 – 到目前为止,安装测试,实现单主模式已经完成。相比较昨天的来说,这个比较成功,并且所存在的问题也少

  ----------但是有个蛋疼的现象就是,我yum安装的是drbd-utils包,还有kmod-drbd包都是90 的版本,
            配置是8.4版本的,没出现问题,正常。还有就是我查看状态 cat /proc/drbd 时,显示的version是8.4.5的

DRBD安装和测试_第10张图片

drbd有三种复制协议:同步、半同步、异步。

A协议:异步复制(asynchronous),如上图A标识,指的是当数据写到本地磁盘上,并且复数据已经复制到tcp的send buffer缓冲区以后,此时就认为写入磁盘成功。此复制协议性能好,但可能会丢失一些最近的数据。

B协议:半同步复制(semi sync),也称为内存复制,如上图B标识,指的是数据已经写到本地磁盘上,并且已经被对方的tcp协议栈接收到(即写入到了对方的recv buffer中),此时就认为此次写操作成功。此复制协议性能较好,且只有当两节点都断电时才会丢失最近处于socket buffer中的数据。因此性能和数据可靠性介于协议A和C之间。

C协议:同步复制(sync),如上图C标识,指的是数据已经写入到本地磁盘,也已经写入到远程磁盘上,此时就认为此次写操作成功。此复制协议性能较差,但数据可靠性高。

C复制协议是drbd默认使用的协议。

在drbd构造的集群中,资源具有角色的概念,分别为primary和secondary(主从的概念)。

所有primary的资源将不受限制进行读写操作,可以创建文件系统,可以使用裸设备,可以直接io。而所有secondary的设备中不能挂载,不能读、写。

DRBD安装和测试_第11张图片

DRBD安装和测试_第12张图片

DRBD安装和测试_第13张图片


快捷键

  • 加粗 Ctrl + B
  • 斜体 Ctrl + I
  • 引用 Ctrl + Q
  • 插入链接 Ctrl + L
  • 插入代码 Ctrl + K
  • 插入图片 Ctrl + G
  • 提升标题 Ctrl + H
  • 有序列表 Ctrl + O
  • 无序列表 Ctrl + U
  • 横线 Ctrl + R
  • 撤销 Ctrl + Z
  • 重做 Ctrl + Y

Markdown及扩展

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]

使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。

本编辑器支持 Markdown Extra ,  扩展了很多好用的功能。具体请参考Github.

表格

Markdown Extra 表格语法:

项目 价格
Computer $1600
Phone $12
Pipe $1

可以使用冒号来定义对齐方式:

项目 价格 数量
Computer 1600 元 5
Phone 12 元 12
Pipe 1 元 234

###定义列表

Markdown Extra 定义列表语法:
项目1
项目2
: 定义 A
: 定义 B

项目3

定义 C

定义 D

定义D内容

代码块

代码块语法遵循标准markdown代码,例如:

@requires_authorization
def somefunc(param1='', param2=0):
    '''A docstring'''
    if param1 > param2: # interesting
        print 'Greater'
    return (param2 - param1 + 1) or None
class SomeClass:
    pass
>>> message = '''interpreter
... prompt'''

###脚注
生成一个脚注1.

目录

[TOC]来生成目录:

文章目录

    • 快捷键
    • Markdown及扩展
      • 表格
      • 代码块
      • 目录
      • 数学公式
      • UML 图:
    • 离线写博客

数学公式

使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.

  • 行内公式,数学公式为: Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN
  • 块级公式:

x = − b ± b 2 − 4 a c 2 a x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} x=2ab±b24ac

更多LaTex语法请参考 这儿.

UML 图:

可以渲染序列图:

张三 李四 嘿,小四儿, 写博客了没? 李四愣了一下,说 : 忙得吐血,哪有时间写。 张三 李四

或者流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 序列图 语法,参考 这儿,
  • 关于 流程图 语法,参考 这儿.

离线写博客

即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。

用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。

博客发表后,本地缓存将被删除。

用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。

**注意:**虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱

##浏览器兼容

  1. 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
  2. IE9以下不支持
  3. IE9,10,11存在以下问题
    1. 不支持离线功能
    2. IE9不支持文件导入导出
    3. IE10不支持拖拽文件导入


  1. 这里是 脚注内容. ↩︎

你可能感兴趣的:(DRBD战绩)