zoukankan      html  css  js  c++  java
  • drbd -- 数据同步

    数据同步
    drbd
    rsync:两个服务器的实时目录同步
    server1-----server2
    /dir1 /dir2
    drbd:两个服务器的存储(块设备)实时同步
    server1-----server2
    /dev/vdb1 /dev/vdb1
    drbd
    (distributed replicated block device) ,号称“网络raid-1“,开源,由linbit公司开发。
    架构图:
    准备两台虚拟机(centos7.3平台)
    172.16.2.10 172.16.2.11
    本地磁盘 本地磁盘
    /dev/vdb1------- /dev/vdb1
     主 drbd技术 备
       vm1.cluster.com vm2.cluster.com
    第一步:在两台虚拟机上都加一块磁盘 /dev/vdb ,大小自定义(1G大小就ok)
    并使用fdisk /dev/vdb  分一个/dev/vdb1出来,不用去格式化;两边的vdb1最好一样大
    或者不分/dev/vdb1也可以,那么后面就直接对/dev/vdb来做drbd
    第二步:安装前准备
    1,主机名
    # hostnamectl set-hostname --static vm1.cluster.com
    # vim /etc/hosts
    172.16.2.10 vm1.cluster.com
    172.16.2.11 vm2.cluster.com
    2,静态ip
    3,关闭iptables,selinux
    4,时间同步
    5,准备安装包
    如果要配yum源的话,需要配置elrepo源(官网为elrepo.org;本地镜像源,epel源,163源等里面没有相关的包)
    elrepo源的做法:
    如果不使用公网的话,可以直接在我这里下载软件包,路径为
    笔记目录/arch/drbd_soft
    drbd84-utils-8.9.8-1.el7.elrepo.x86_64.rpm
    drbd84-utils-sysvinit-8.9.8-1.el7.elrepo.x86_64.rpm
    kmod-drbd84-8.4.9-1.el7.elrepo.x86_64.rpm
    第三步:
    在两台服务器上安装drbd相关软件包
    # yum install drbd84* kmod-drbd84
    # modprobe drbd
    # lsmod |grep drbd --确认模块存在
    drbd 405376 0
    libcrc32c 12644 2 xfs,drbd
    第四步:
    在两台服务器上配置(两边的配置一样)
    # cat /etc/drbd.conf --此文件保持默认,不用修改
    include "drbd.d/global_common.conf"; --通用选项参数的子配置文件
    include "drbd.d/*.res"; --resource资源子配置文件
    # vim /etc/drbd.d/global_common.conf
    global {
    usage-count no; --用户统一,我们实验而已,改为no;此配置文件其它参数都不改,保持默认就ok
    }
    # vim /etc/drbd.d/r0.res --新建一个资源文件,我这里取名为r0.res,并配置下面的一段(你们复制后改一个主机名,ip,设备名就可以了)
    resource r0 {
    on vm1.cluster.com {
    device /dev/drbd0;
    disk /dev/vdb1;
    address 172.16.2.10:7788;
    meta-disk internal;
    }
    on vm2.cluster.com {
    device /dev/drbd0;
    disk /dev/vdb1;
    address 172.16.2.11:7788;
    meta-disk internal;
    }
    }
    第五步:
    创建meta data,并启动服务
    # drbdadm create-md r0 --两台服务器都要做
    initializing activity log
    NOT initializing bitmap
    Writing meta data...
    New drbd meta data block successfully created.
    # systemctl start drbd.service  --两台服务器要一起启动才能启起来
    # systemctl status drbd.service
    # systemctl enable drbd.service
    # ps -ef |grep drbd |grep -v grep --确认两台服务器上有相关进程
    root 12870 2 0 10:09 ? 00:00:00 [drbd-reissue]
    root 13507 2 0 10:41 ? 00:00:00 [drbd0_submit]
    root 13514 2 0 10:41 ? 00:00:00 [drbd_w_r0]
    root 13518 2 0 10:41 ? 00:00:00 [drbd_r_r0]
    root 13527 2 0 10:41 ? 00:00:00 [drbd_a_r0]
    root 13528 2 0 10:41 ? 00:00:00 [drbd_as_r0]
    # cat /proc/drbd --确认两边磁盘的状态,现在都为Secondary,表示目前没有主从之分
    version: 8.4.9-1 (api:1/proto:86-101)
    GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by akemi@Build64R7, 2016-12-04 01:08:48
    0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
    ns:0 nr:0 dw:0 dr:0 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:1047484
    第六步:
    定义主从磁盘
    在vm1.cluster.com上操作下面这句
    # drbdadm primary r0 --定义为r0资源的主,但报错,那么换下面一句命令
    0: State change failed: (-2) Need access to UpToDate data
    Command 'drbdsetup-84 primary 0' terminated with exit code 17
    # drbdadm -- --overwrite-data-of-peer primary r0
    # cat /proc/drbd --再次在vm1.cluster.com上看到为Primary/Secondary;但在vm2.cluster.com上看到的为Secondary/Primary
    第七步:
    现在可以把主服务器(vm1.cluster.com)的DRBD设备格式化并挂载使用,但是备服务器(vm2.cluster.com)的DRBD设备无法被挂载,因为它是用来接收主机数据的,由DRBD负责操作
    在主(vm1.cluster.com)上的操作
    # mkfs.xfs /dev/drbd0 --只在primary这台服务器上这里格式化就可以了,另一台服务器不用格式化
    # mount /dev/drbd0 /mnt/
    # echo '123' > /mnt/123
    # echo '456' > /mnt/456  --创建两个文件,用于测试
    这时在从(vm2.cluster.com)上操作
    # mount /dev/drbd0 /mnt
    # mount /dev/vdb1 /mnt --这两个操作都不可行;现在版本systemctl stop drbd停掉服务,也不能挂载;验证了做Secondary的服务器是不能挂载使用的
    第8步:
    为了验证上面的两个文件可以同步到secondary从服务器上,需要把原来的primary降级为secondary,把原来的secondary升级primary(实际生产环境可以结合HA高可用集群来实现,下面为了测试,我们手动实现)
    在主(vm1.cluster.com)上的操作
    # umount /mnt/
    # drbdadm secondary r0 --降级
    在从(vm2.cluster.com)上的操作
    # drbdadm primary r0 --升级
    # mount /dev/drbd0 /mnt/
    # ls /mnt --验证两个文件确实同步过来了
  • 相关阅读:
    201671030122杨凡亿《英文文本统计分析》结对项目报告
    201671030122杨凡亿 实验二 词频统计软件项目报告
    201671030122杨凡亿 实验三作业互评与改进报告
    通读《现代软件工程—构建之法》后的疑惑
    201671030126 赵佳平 实验十四 团队项目评审&课程学习总结
    201671030126赵佳平《英文文本统计分析》结对项目报告
    201671030126 词频统计软件项目报告
    201671030126 赵佳平 实验三 作业互评与改进报告
    我的问题
    201671030128周琳 实验十四 团队项目评审&课程学习总结
  • 原文地址:https://www.cnblogs.com/skyzy/p/9201460.html
Copyright © 2011-2022 走看看