侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

linux DRBD编译安装与配置方法

linux  /  管理员 发布于 7年前   153

DRBD介绍

DRBD是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。 DRBD Logo数据镜像:实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回)。DBRD的核心功能通过Linux的内核实现,最接近系统的IO栈,但它不能神奇地添加上层的功能比如检测到EXT3文件系统的崩溃。DBRD的位置处于文件系统以下,比文件系统更加靠近操作系统内核及IO栈。

DRBD编译安装

安装所需依赖: 

yum -y install gcc kernel-devel kernel-headers flex

开始安装drbd,下载地址:http://oss.linbit.com/drbd/

安装用户空间工具:

cd /tmpwget http://oss.linbit.com/drbd/8.4/drbd-8.4.1.tar.gztar xzf drbd-8.4.1.tar.gzcd drbd-8.4.1./configure --prefix=/usr/local/drbd --with-kmmake KDIR=/usr/src/kernels/2.6.18-274.18.1.el5-i686/make installmkdir -p /usr/local/drbd/var/run/drbdcp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.dchkconfig --add drbdchkconfig drbd on

安装drbd模块:

cd drbd make clean make KDIR=/usr/src/kernels/2.6.18-274.18.1.el5-i686/ cp drbd.ko /lib/modules/`uname -r`/kernel/lib/ depmod

注:usr/src/kernels/2.6.18-274.18.1.el5-i686/这个内核源码树路径需要根据自己的系统修改。

DRBD配置

建立分区

假如现在有第二块硬盘hdb,两个node都要分区。

#fdisk /dev/hdb      //准备为 hdb 建立分区 The number of cylinders for this disk is set to 20805. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs   (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): n          //键入 n 表示要建立分区 Command action    e   extended    p   primary partition (1-4) p        //键入 p 表示建立主要分区 Partition number (1-4): 1        //键入 1 为此主要分区代号 First cylinder (1-20805, default 1):         //开始磁柱值,按下 enter 即可 Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-20805, default 20805): //结束磁柱值,按下 enter 即可 Using default value 20805 Command (m for help): w          //键入 w 表示确定执行刚才设定 The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@node1 yum.repos.d]# partprobe          //使刚才的 partition table 变更生效

建立分区完成后使用指令 fdisk -l 确定 partition talbe 状态

#fdisk -l Disk /dev/hda: 21.4 GB, 21474754560 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes    Device Boot      Start         End      Blocks   Id  System /dev/hda1   *           1          13      104391   83  Linux /dev/hda2  14        2610    20860402+  8e  Linux LVM Disk /dev/hdb: 10.7 GB, 10737377280 bytes 16 heads, 63 sectors/track, 20805 cylinders Units = cylinders of 1008 * 512 = 516096 bytes    Device Boot      Start         End      Blocks   Id  System /dev/hdb1   1       20805    10485688+  83  Linux

建立分区完成后请建立 /db 目录。 (Node1 及 Node2 都必须建立)

#mkdir /db

建立Drbd配置文件

主要定义两块global和resource。

vi /usr/local/drbd/etc/drbd.conf
写入:include "drbd.d/global_common.conf";include "drbd.d/*.res";vi /usr/local/drbd/etc/drbd.d/global_common.conf写入global {  usage-count yes;}common {  net {    protocol C;  }}vi /usr/local/drbd/etc/drbd.d/r0.res写入resource r0 {  on node1 {    device    /dev/drbd1;    disk      /dev/hdb1;    address   192.168.1.101:7789;    meta-disk internal;  }  on node2 {    device    /dev/drbd1;    disk      /dev/hdb1;    address   192.168.1.103:7789;    meta-disk internal;  }

设置Hostname

根据上面的resource配置文件,需要对192.168.1.101和192.168.1.103分别设置hostname为node1和node2,设置方法如下:

vi /etc/sysconfig/network修改HOSTNAME为node1
vi /etc/hosts写入192.168.1.101 node1192.168.1.103 node2

使node1 hostnmae临时生效

hostname node1

node2机器设置类似。

设置Resource

以下操作需要在node1和node2操作。

#modprobe drbd//载入 drbd 模块#lsmod|grep drbd          //确认 drbd 模块是否载入 drbd      228528  0 #dd if=/dev/zero of=/dev/hdb1 bs=1M count=100     //把一些资料塞到 hdb  (否则 create-md 时有可能会出现错误) #drbdadm create-md r0     //建立 drbd resource #drbdadm up r0          //启动 resource r0

查看node1和node2的状态应该类似下面的:

cat /proc/drbdversion: 8.4.1 (api:1/proto:86-100)GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by [email protected], 2012-02-12 06:05:36 m:res  cs         ro       ds p  mounted  fstype 0:r0   Connected  Secondary/Secondary  Inconsistent/Inconsistent  C

表明现在已经启动服务,但还没有设置同步(即需要设置Primary Node)

设置Primary Node

以下操作仅在node1执行。

设置node1为primary node:


drbdadm primary --force r0

drbdadm primary --force r0

再次查看node1的状态:

#cat /proc/drbdversion: 8.4.1 (api:1/proto:86-100)GIT-hash: 91b4c048c1a0e06777b5f65d312b38d47abaea80 build by [email protected], 2012-02-12 06:47:37  1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----    ns:52892 nr:0 dw:0 dr:52892 al:0 bm:10 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

我们看到状态已经变成Primary/Secondary,即设置primary node成功。

创建DRBD文件系统

以下操作仅在node1执行。

上面已经完成了/dev/drbd1的初始化,现在来把/dev/drbd1格式化成ext3格式的文件系统。

#mkfs.ext3 /dev/drbd1

然后将/dev/drbd1挂载到之前创建的/db目录。

#mount /dev/drbd1 /db

现在你只要把数据写入/db目录,drbd即会立刻把数据同步到备机192.168.1.103的/dev/hdb1分区上。

Drbd同步测试

当在备机node2启动drbd时,它是无法挂载/dev/hdb1分区的,我们可以尝试写些数据到node1的目录/db上,然后停止node2的drbd。

drbdadm down r0

之后就可以把node2的/dev/hdb1挂载到目录/db

mount -t ext3 /dev/hdb1 /db

我们就可以查看node2的/db目录是否有node1的数据。

手动切换主备机

我们可以把node1改变为备机,而node2改变为主机。

在node1上操作:

umount /dev/drbd1drbdadm secondary r0

在node2上操作:

drbdadm primary r0

此时应该已经切换成功。


  • 上一条:
    Linux Kernel 4.10第5个候选版本RTM版发布 2月12日发布正式版
    下一条:
    Linux系统下查看网卡实时流量软件Nload安装使用方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在Linux系统中使用Iptables实现流量转发功能流程步骤(0个评论)
    • vim学习笔记-入门级需要了解的一些快捷键(0个评论)
    • 在centos7系统中实现分区并格式化挂载一块硬盘到/data目录流程步骤(0个评论)
    • 在Linux系统种查看某一个进程所占用的内存命令(0个评论)
    • Linux中grep命令中的10种高级用法浅析(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2017-07
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-03
    • 2022-04
    • 2022-08
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-06
    • 2023-07
    • 2023-10
    • 2023-12
    • 2024-01
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客