• DRBD 实验


    跨主机的块设备镜像系统,工作在内核中完成
    drbd工作原理:客户端发起一个写操作的系统调用给文件系统,写请求再到达内核缓冲区,最到达DRBD模块,此时drbd会复制写入磁盘的数据,且进行两步操作,第一步操作是调用磁盘驱动,将数据写入本地的磁盘设备,第二部是通过网卡设备将数据发送给备用节点,备用节点的网卡接受到数据之后,将数据再发送给drbd模块,DRBD模块再调用磁盘驱动将数据写入磁盘。这就实现了数据写入的高可用.
    高可用集群都需要时间同步、主机名相互通信、ssh免密码登入(node1、node2两个节点已经ok)

    • 安装DRBD(在node1,node2上都需要安装)
    1:配置yum仓库
    vi /etc/yum.repos.d/drbd.repo
    [network_drbd]
    name=drbd
    baseurl=http://elrepo.org/linux/elrepo/el7/x86_64/
    gpgcheck=0
    enabled=1
     
    2:安装drbd内核模块、DRBD管理工具
    yum install -y drbd84-utils kmod-drbd84
     
    3:给node1、node2添加一个虚拟磁盘,且分区5G
    [root@node2 ~]# fdisk -l
     
    设备 Boot Start End Blocks Id System
    /dev/sdb1 2048 41945087 20971520 83 Linux
     
    4:编辑/etc/drbd.d/global_common.conf文件,修改如下配置即可
    global {
    # 指定不被DRBD官方纳入调研对象
    usage-count no;
    # 指定udev策略
    udev-always-use-vnr; # treat implicit the same as explicit volumes
    }
    common {
    handlers {
    }
    startup {
    }
    options {
    }
    disk {
    # 指定磁盘io出现错误的时候,拆除磁盘
    on-io-error detach;
    }
    net {
    # 指定数据在drbd节点通信时,使用的加密算法
    cram-hmac-alg "sha1";
    # 指定密钥
    shared-secret "UzcHlMYSw5o";
    }
    # 指定drbd节点通信时,所使用的带宽
    syncer {
    rate 1000M;
    }
    }
     
    5:编辑/etc/drbd.d/mariadb.res,创建drbd的工作方式,已经使用的资源
    resource mysql {
     
    # 指定drbd存储设备名称
    device /dev/drbd0;
     
    # 指定实际的drbd使用的磁盘分区
    disk /dev/sdb1;
     
    # 指定元数据存放值磁盘上
    meta-disk internal;
     
    # 指定主节点
    on node1 {
     
    address 192.168.43.10:7789;
     
    }
     
    # 指定从节点
    on node2 {
     
    address 192.168.43.11:7789;
     
    }
    }
     
    6:将node1的配置文件拷贝一份到node2
    scp -pr /etc/drbd.d/global_common.conf /etc/drbd.d/mariadb.res node2:/etc/drbd.d/
     
    7:在node1和node2上分别执行资源初始化(如果数据资源初始化不成功,可以尝试重启系统)
    drbdadm create-md mysql
     
    8:在node1和node2上启动DRBD
    systemctl start drbd.service
     
    9:查看节点同步情况
    drbd-overview
     
    10:让node1成为主节点 ,开始同步
    drbdadm primary --force mysql
     
    11:再次查看node1和node2节点数据同步情况
    drbd-overview
     
    12:等待同步完成之后,可以在node1节点直接在/dev/drbd0上创建文件系统,且挂载
    mkfs -t ext4 /dev/drbd0
    mount /dev/drbd0 /mnt
     
    13:向/mnt目录拷贝文件,卸载挂载点,让后将node1切换为从节点
    cp /etc/fstab /mnt
    umount /dev/drbd0
    drbdadm secondary mysql
     
    14:在node2上执行命令,让node2为主, 挂载/mnt,查看是否在/mnt目录下存在/etc/fstab
    drbdadm primary mysql
    mount /dev/drbd0 /mnt
    • 高可用Mariadb + DRBD
    需求分析:配置一个Mariadb的高可用集群,且Mariadb的数据目录由DRBD存储提供
     
    1:分别在node1、node2中停止DRBD服务
    systemctl stop drbd.service
     
    2:如果想将drbd作为集群中的资源,那么drbd将不能开机自启,分别在node1、node2中让drbd禁止开机自启,
    systemctl disable drbd.service
     
    3:查看资源代理,这里的linbit为drbd代理的提供者
    crm(live)ra# list ocf linbit
    drbd
     
    4:查看ocf中drbd代理的使用帮助
    crm(live)ra# info ocf:drbd
     
    5:定义drbd在集群中的组资源
    primitive storage ocf:drbd params drbd_resource=mysql op monitor role=Master interval=15s timeout=20s op monitor role=Slave interval=10s timeout=20s
     
    6:将drbd资源设置为主从模式
    ms drbd_storage storage meta clone-max=2 clone-node-max=1 master-max=1 master-node-max=1
  • 相关阅读:
    内网其他服务器节点连接Mysql数据库很慢的解决方案
    MongoDB分片技术原理和高可用集群配置方案
    Hive事务原理和Datax同步事务表问题解决
    Mysql使用存储过程创建测试数据
    Hive的原生部署方式
    ByteArray的操作总结(复制、打印、位运算)
    句柄
    C# 使用指针将不同值类型赋值到字节数组中
    对象、字节流转换
    ASP.NET Core学习日志1
  • 原文地址:https://www.cnblogs.com/liu1026/p/7783414.html
Copyright © 2020-2023  润新知