LVS部署准备工作-DRBD的部署

本文详细介绍了Linux中软件RAID的创建、管理与故障处理,包括RAID5的搭建、静态IP配置、磁盘分区以及预备磁盘的使用。此外,还探讨了DRBD这一网络RAID技术,解释了其工作原理、特点和管理模式,强调了实时数据同步与透明性的优势。
摘要由CSDN通过智能技术生成

DRDB的部署

一、实验

1、软件raid :mdadm(内置,已提供)

​ Mdadm(Raid5): 通过软件来仿真阵列的任务,可能会损耗比较多的系统资源,比如:CPU资源,I/O总线资源

2、结构图

1、部署过程:raid-->lvs-->iscsi-->nfs
2、Drbd使raid1和raid2同步

3、关于软件raid

Raid0Raid1Raid10Raid5Raid
最少磁盘22434
最大容错盘n/2n/212
数据安全性更好更好比Raid5好,没Raid1和Raid10好
可用容量nn/2n/2n-1n-2
1、CK:chunk raid将磁盘切割出的等量的区块(条带)
2、硬件磁盘阵列:系统中识别为一颗逻辑磁盘,设备名/dev/sd[a-z](针对scsi磁盘)
3、软件磁盘阵列:组合之后也是一块逻辑磁盘 /dev/md0、/dev/md1 …

4、实验要求

1、利用四个分区组成raid5
2、每个分区大小1G
3、利用一块磁盘做预备磁盘(备用,空闲)
4、Chunk:设置为256k
5、Spare disk(预备磁盘)大小同其他磁盘一样
   Spare-disk:预备磁盘
   当故障时,需要拔除故障磁盘,换上新磁盘(修复好的磁盘),会发生重构(rebuild)
   如果不支持热插拔,需要关机更换磁盘
   预备磁盘:在发生故障时,可以实时的主动重建
6、将做好的raid5(/dev/mdX) 挂载到/srv/raid

5、准备工作

(1)部署raid1节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEvvUi5N-1586876916940)(C:\Users\张三儿\Desktop\新建文件夹\捕获16.PNG)]

  • 修改主机名
#hostnamectl set-hostname raid2
  • IP:
ens33: 静态 net模式 能上网  
ens38: 仅主机
  • 修改连接名:
[root@raid2 ~]# nmcli connection show 
NAME                UUID                                  TYPE            DEVICE 
Wired connection 1  c00d95f6-876b-3853-aa75-c6291b9075cc  802-3-ethernet  ens37  
virbr0              cd20cb4a-9d0f-413a-9755-de638e35a767  bridge          virbr0 
ens33               a6604526-92f2-4fd8-8e28-b835180f477a  802-3-ethernet  --     
[root@raid2 ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:c9:bc:a7  txqueuelen 1000  (Ethernet)
        RX packets 263  bytes 16548 (16.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:c9:bc:b1  txqueuelen 1000  (Ethernet)
        RX packets 24  bytes 2414 (2.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 30  bytes 4814 (4.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
...
[root@raid2 ~]# nmcli connection delete 'Wired connection 1'
Connection 'Wired connection 1' (c00d95f6-876b-3853-aa75-c6291b9075cc) successfully deleted.
[root@raid2 ~]# nmcli connection add type ethernet ifname ens37 con-name ens37
Connection 'ens37' (aeaf6fd6-a392-4631-a910-e9f79e430853) successfully added.
[root@raid2 ~]# nmcli connection show 
NAME    UUID                                  TYPE            DEVICE 
ens33   a6604526-92f2-4fd8-8e28-b835180f477a  802-3-ethernet  ens33  
ens37   aeaf6fd6-a392-4631-a910-e9f79e430853  802-3-ethernet  ens37  
virbr0  cd20cb4a-9d0f-413a-9755-de638e35a767  bridge          virbr0 

  • 设置静态地址(NAT):
[root@raid2 ~]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.146.100/24 ipv4.gateway 192.168.146.2 ipv4.dns 192.168.146.2 connection.autoconnect yes
[root@raid2 ~]# nmcli connection up ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
  • 配置第二张网卡(仅主机)
[root@raid2 ~]# nmcli connection modify ens37 ipv4.method manual ipv4.addresses 10.0.0.1/24 connection.autoconnect yes
[root@raid2 ~]# nmcli connection up ens37
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
  • Vmvare下,不关机添加硬盘:
添加一块20G硬盘
[root@raid2 ~]# echo "- - -" > /sys/class/scsi_host/host
bash: /sys/class/scsi_host/host: No such file or directory
[root@raid2 ~]# for i in {0..2}
> do
> echo "- - -" > /sys/class/scsi_host/host${i}/scan
> done
[root@raid2 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  /run/media/root/CentOS 7 x86_64
  • 分区:此处使用gdisk
  1. fdisk MBR 2.2T 四个主分区 最多15个分区

  2. gdisk GPT

    3.parted GPT 可按百分比

[root@raid2 ~]# gdisk /dev/sdb
n  创建分区  
+1G
code 8e00 linux LVM
p   查看
w   写保存
  • 创建Raid5:
[root@raid2 ~]# mdadm --create /dev/md0 --auto=yes --level=5 --chunk=256 --raid-devices=4 --spare-disk=1 /dev/sdb{1,2,3,4,5}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@raid2 ~]# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Tue Apr 14 10:29:31 2020
        Raid Level : raid5
        Array Size : 3139584 (2.99 GiB 3.21 GB)   //整组raid的可用容量
     Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)  //每个设备的容量
      Raid Devices : 4
     Total Devices : 5
       Persistence : Superblock is persistent

       Update Time : Tue Apr 14 10:29:36 2020
             State : clean    //磁盘阵列的使用状态
    Active Devices : 4   //启动的设备数量
   Working Devices : 5   //用于此阵列的设备数
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 256K

Consistency Policy : resync

              Name : raid1:0  (local to host raid1)
              UUID : 04d03a00:c0c4ae43:b42b3d2f:b24521b3
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2
       2       8       19        2      active sync   /dev/sdb3
       5       8       20        3      active sync   /dev/sdb4

       4       8       21        -      spare   /dev/sdb5

-------------------------------------------------------------------------------
mdadm:语法
mdadm  --detail /dev/md0   查看详细信息
mdadm  --create /dev/md0  --auto=yes   --level=[015]  --chunk=Nk –raid-devices=N  --spare-devices=N  /dev/sdX……
选项与参数:
--create:创建raid
-- auto:决定创建后面接的软件磁盘阵列设备  /dev/md0
--chunk:决定这个设备的chunk大小
--raid-devices:使用几块磁盘来组建raid
--spare-devices:使用几块磁盘来做备用磁盘
--level:决定这个磁盘阵列的等级(raid0  1  5)

  • 使用cat来查看磁盘软件阵列的信息:
[root@raid2 ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdb4[5] sdb5[4](S) sdb3[2] sdb2[1] sdb1[0]
      3142656 blocks super 1.2 level 5, 256k chunk, algorithm 2 [4/4] [UUUU]
      
unused devices: <none>
----------------------------------------------------------------------------------
(S):表示备用磁盘
[m/n]  [UUUU]
m:表示这个阵列需要多少设备
n:有多少个设备正常运行
U:表示正常运行
_:表示不正常(设备)
  • 格式化:
[root@raid2 ~]# mkfs.xfs -f -d su=256k,sw=3  -r extsize=768k /dev/md0
  • 挂载使用:
[root@raid2 ~]# mkdir /srv/raid
[root@raid2 ~]# mount /dev/md0 /srv/raid/
[root@raid2 ~]# cd /srv/raid/
[root@raid2 raid]# touch 1.txt
[root@raid2 raid]# ls
1.txt

  • 仿真RAID错误的救援模式:设置/dev/sdb4为出错状态
[root@raid2 raid]# mdadm --manage /dev/md0 --fail /dev/sdb4
mdadm: set /dev/sdb4 faulty in /dev/md0
---------------------------------------------------------------------------
mdadm语法:
mdadm –manage /dev/md0 [--add 设备] [--remove 移除设备] [--fail 设备]
--add: 会将后面的设备加入到这个md中
--remove:将设备从md移除
--fail:将md中的设备设置为出错状态

  • 验证备用磁盘是否能够正常工作:
[root@raid2 ~]# mdadm --detail /dev/md0
Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2
       2       8       19        2      active sync   /dev/sdb3
       4       8       21        3      active sync   /dev/sdb5

       5       8       20        -      faulty   /dev/sdb4
[root@raid1 raid]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdb4[5](F) sdb5[4] sdb3[2] sdb2[1] sdb1[0]
      3139584 blocks super 1.2 level 5, 256k chunk, algorithm 2 [4/4] [UUUU]
      
unused devices: <none>

  • 模拟移除故障磁盘:
[root@raid2 ~]# mdadm --manage /dev/md0 --remove /dev/sdb4
mdadm: hot removed /dev/sdb4 from /dev/md0
[root@raid2 ~]#mdadm --detail /dev/md0
  • 模拟添加新硬盘:
[root@raid2 ~]# mdadm --manage /dev/md0 --add /dev/sdb4
mdadm: added /dev/sdb4
[root@raid2 ~]# mdadm --detail /dev/md0
  • 初始创建时,spare-devices的值为1,此时,再创建一个分区,使用–add,能够添加到阵列md0

  • 开机自动挂载:(man 5 mdadm.conf)

[root@raid2 ~]# mdadm --detail /dev/md0 | grep -i uuid   //查看uuid
              UUID : 04d03a00:c0c4ae43:b42b3d2f:b24521b3
[root@raid2 ~]# vim /etc/mdadm.conf
ARRAY /dev/md0 UUID=04d03a00:c0c4ae43:b42b3d2f:b24521b3
[root@raid2 ~]# blkid /dev/md0
/dev/md0: UUID="f49b612b-5336-4976-880d-65aa6becbd82" TYPE="xfs" 
[root@raid2 ~]# vim /etc/fstab 
UUID=f49b612b-5336-4976-880d-65aa6becbd82 /srv/raid xfs defaults 0 0
  • 关闭软件raid:

先卸载,且删除配置文件内与这个阵列有关的内容

[root@raid2 ~]# umount /dev/md0
[root@raid2 ~]# vim /etc/fstab (删除相关内容)

  • 先覆盖RAID的metadata以及XFS的superblock,再关闭md0
[root@raid2 ~]# dd if=/dev/zero of=/dev/md0 bs=1M count=50
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 0.241286 s, 217 MB/s
[root@raid2 ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@raid2 ~]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=10
[root@raid2 ~]# dd if=/dev/zero of=/dev/sdb2 bs=1M count=10
[root@raid2 ~]# dd if=/dev/zero of=/dev/sdb3 bs=1M count=10
[root@raid2 ~]# dd if=/dev/zero of=/dev/sdb4 bs=1M count=10
[root@raid2 ~]# dd if=/dev/zero of=/dev/sdb5 bs=1M count=10
[root@raid2 ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
unused devices: <none>
  • 为什么要使用dd:

因为raid有一部分相关的数据会存在磁盘中,如果只是将配置移除,并关闭raid,但是分区没有重新格式化,开机后可能会自己重组raid,只不过名字可能不叫md0

二、存储复制解决方案DRBD

1.DRBD简介

网络raid技术(相当于网络raid1)

DRBD是一个基于软件的、无共享、复制存储解决方案,它在主机之间镜像块设备(硬盘、分区、逻辑卷等)的内容。

2.DRBD镜像数据:
  • 实时: 当应用程序修改设备上的数据时,数据的副本更改是连续进行的。
  • 透明: 应用程序不会意识到数据实际上是存储在多台主机上的。
  • 同步 or 异步: 当使用同步镜像数据时,只有在所有(连接上的)主机上都完成写操作后,才会通知应用程序写完成。当使用异步镜像数据时,在本地完成写入时(通常在镜像数据传输到其他节点前),就会通知应用程序写入完成。(nfs中同步用sync,异步用async)
3.DRDB内核模块
  • DRBD的核心功能是通过Linux内核模块实现的

  • 根据定义和Linux内核体系结构的要求,DRBD与上面各层无关。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iHTOafEK-1586876916942)(C:\Users\张三儿\Desktop\新建文件夹\图片5.png)]

    Buffer:缓冲(缓存)  写缓冲  write-buffer
    Cache:缓存(快取)  读缓存  read-cache
    
4.DBDR用户空间管理工具
  • DRBD附带了一组管理工具,这些工具与内核模块通信,以便配置和管理DRBD资源。
  • drbdmanage:作为单独的项目提供,这是在多节点集群中编排DRBD资源的推荐方法。
  • drbdadm:DRBD-utils程序套件的高级管理工具。
  • drbdsetup:配置加载到内核中的DRBD模块。
  • drbdmeta:允许创建、转储、还原和修改DRBD元数据结构。
5.DRBD资源
  • 资源是指特定复制数据集的所有方面的集合术语。

  • 资源名称

    可以是任意的US-ASCII名称,不包含空白字符,用于说明该引用资源。

  • 1.任何资源都是一个复制组,由共享同一复制流的多个 卷 之一组成。

    2.在 drbdadm 级别,可以通过资源名称和卷号将资源中的卷寻址为 resource/volume。

  • 连接

    连接 是共享复制数据集的两台主机之间的通信链路。

  • p资源角色

    在DRBD中,每个resource都有一个角色,该角色可以是 Primary 或 Secondary 。

6.DRBD特征
  • 单一主(Single-primary)模式

    单一主模式下,资源在任何给定的时间仅在一个群集成员上处于主角色。

  • 双主(Dual-primary)模式

​ 双主模式下,资源在任何给定时间都处于两个群集节点上的主角色

  • 复制(Replication)模式

​ I.Protocol A 异步复制协议。

​ II.Protocol B 内存同步(半同步)复制协议。

2.在 drbdadm 级别,可以通过资源名称和卷号将资源中的卷寻址为 resource/volume。

  • 连接

    连接 是共享复制数据集的两台主机之间的通信链路。

  • p资源角色

    在DRBD中,每个resource都有一个角色,该角色可以是 Primary 或 Secondary 。

6.DRBD特征
  • 单一主(Single-primary)模式

    单一主模式下,资源在任何给定的时间仅在一个群集成员上处于主角色。

  • 双主(Dual-primary)模式

​ 双主模式下,资源在任何给定时间都处于两个群集节点上的主角色

  • 复制(Replication)模式

​ I.Protocol A 异步复制协议。

​ II.Protocol B 内存同步(半同步)复制协议。

​ III.Protocol C 同步复制协议。

Re: MySQL 高可用工具 DRBD 实战部署详解 ========================================# DRBD 是什么(用三句话总结) 目的:类似于 rsync + inotify 数据目录(/data)变化时,实现数据同步 功能:类似于本地磁盘阵列 raid-1,保持磁盘或者分区的一致性,但最终的目的是(/data)数据目录的一致性。 原理:类似于MySQL的主从复制,一份写在磁盘中,一份写在二进制日志中;DRBD原理也是一份写在磁盘中,另一份通过DRBD软件,经过tcp/ip协议,基于block变化,传输到远程磁盘中做记录。 # DRBD 的功能 Distributed Replicated Block Divice(缩略:DRBD)(分布式复制块设备) 基于高可用 HA 服务器之间的数据同步解决方案 基于块设备在不同的高可用服务器之间同步和镜像数据的软件,通过它可以实现在网络中的两台服务器之间基于“块”(block)设备级别的实时或异步镜像或同步复制(【原理】:类似MySQL主从复制) # DRBD 的目的 类似于DRBD ≈(rsync + inotify)的架构:单inotify基于文件系统‘上层’,当文件系统中有数据发生变化,就调用 rsync 服务,将文件系统中的文件同步到备库。 但是DRBD是基于文件系统底层(主要区别),即 block 块级别的更‘底层’,而 inotify是在文件系统之上的实际物理文件(文件复制),因此DRBD效率更高(类似克隆方式 GHOST 克隆软件)! 相对而言:(rsync + inotify)工作原理(效率低...)... # DRBD 的应用 heartbeat + DRBD + nfs/mfs/gfs    下章演示... heartbeat + DRBD + mysql    本章演示... heartbeat + DRBD + oracle   甚至放弃 Oracle 原厂 RAC + DataGuard 等标配 HA方案        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值