zoukankan      html  css  js  c++  java
  • kvm-DRBD在虚机中实现

    什么DRBD ?

    DRBD (分布式复制块设备) 时一款基于linux 的开源软件,由内核模块和管理工具组成的,通过网络的块设备来进行数据的同步。当数据写入本地的DRBD 文件系统上时,同时会通过网络发送到另一台server 上,并且以相同的方式将数据写入。确保本地与远程的server都可以实时同步到数据。 

    一般在高可用解决方案中会使用到DRBD ,代替商业存储设备,因为数据保存在本地和远程server 上,需要本地数据坏或者切换时,远程的主机使用它备份的数据可以继续提供服务。 

    DRBD 复制协议的类型:

    协议A: 异步复制。  本地数据写完成功后立即返回,数据放在buffer 中,如果服务器掉电数据可能丢失

    协议B: 内存同步(半同步)复制 。   本地数据写成功将数据发送到远程服务器,发送到对端后立即返回。如果双机掉电数据可能丢失。

    协议C: 同步复制。     本地和远端数据写成功后确认返回。  如果磁盘同时损坏数据可能丢失。 

    DRBD 使用方式: 

    主备模式: 两台存储服务器。1主1备,主故障备顶替主工作,只有一台提供服务,另一台作为backup

    主主模式: 两台存储服务器同时提供服务, 共同分担压力,当一台故障,服务新能会下降,但是服务不会中断。

    搭建基础的DRBD 实现资源数据同步功能

    环境准备的前提: 

    前期这些操作在两台server 上都需要操作。 

    1. 两台server (ubuntu  14.04),双方网络可以互通

    testvm:    10.150.114.97/20      

    test-1:     10.150.112.30/20

    2. 给两台server 准备分区 (我这里是给准备一个5 G 大小的分区)

    我这里给虚机都添加了一块disk 。并且将disk 分了一个主分区,将空间都分配给主分区

    fdisk /dev/sdb  (创建新分区。输入“n" 新建分区,输入”p“ 创建主分区,甚于默认回车,会创建一个主分区将磁盘空间都给主分区配置,输入”w“ 保存配置)

    3. 通过网络源安装drbd ,也可以自己源码安装。 (这里是网络源安装)

    apt-get install -y --force-yes drbd8-utils

    4. 配置drbd 配置文件

    /etc/drbd.conf是主配置文件,主要用来把全局配置文件和各资源配置文件(所有以.res结尾的文件)包含进来的;

    而其它模块配置文件在/etc/drbd.d/下,包括/etc/drbd.d/global_common.conf全局配置文件,下面将会配置的资源配置文件也会放到这里。(test.res 是自己创建的)

    配置全局配置文件

     /etc/drbd.d/global_common.conf

    global {
    usage-count no;        #是drdp 官方给使用drdp的 用户总数统计
    }

    common {
    handlers {

    }

    startup {

    }

    options {
    }

    disk {
    }

    net {
    protocol C;        #设置我们的drdp采用的协议是选择同步复制
    }
    }

    配置DRBD 资源

    每个资源通常定义在一个单独的位于/etc/drbd.d目录中的以.res结尾的文件中

    /etc/drbd.d/test.res
    resource test {         #定义资源名为test
    on testvm {          # 节点信息 testvm 是主机名
    device /dev/drbd1;       #虚拟出drbd 设备名
    disk /dev/sdb1;         #原设备
    address 10.150.114.97:7700;  #server 的地址
    meta-disk internal ;

    }
    on test-1 {                                  #节点信息 test-1 是主机名
    device /dev/drbd1;      #虚拟出drbd 设备
    disk /dev/sdb1;                           #原设备
    address 10.150.112.30:7700;    #server的地址
    meta-disk internal ;

    }
    }

    两台server 要使用一样的global_common.conf 和test.res 文件

    5.启动drbd 

    drbdadm create-md all

    如果有以下报错

    解决: 给sdb 注入一些数据

    dd if=/dev/zero of=/dev/sdb1 bs=1M count=100 

    启动服务        

    service drbd start

    检查启动状态

    在test-1 上操作 

    将test-1 设置为主设备

     drbdadm primary --force test    

     检查虚拟的drbd 设备已存在

     将drbd挂载任意目录上,并在目录下创建文件测试

    将主节点设置解挂载,并且设置为从节点

    umount /dev/drbd1

    drbdadm secondary test

    登陆testvm从节点,将从节点升级为主节点,挂载drbd 设备

    drbdadm primary test

     

     创建挂载点,挂载设备,发现之前在test-1 主节点创建文件还是存在的。 

  • 相关阅读:
    vi常用命令学习
    [Oracle]约束(constraint)
    [Oracle]高水位标记(HWM)
    线性表&顺序线性表
    ERP,ARP瘦身并如何删除。
    Oracle 如何开启归档模式
    oracle9i的erp数据库无法正常关闭的解决方法。
    C语言学习之assert
    ORA-00257 archiver error的处理
    单利与复利
  • 原文地址:https://www.cnblogs.com/yk0625/p/14107628.html
Copyright © 2011-2022 走看看