zoukankan      html  css  js  c++  java
  • GlusterFS分布式文件系统部署

      GlusterFS是一个可伸缩的网络文件系统,使用常见的现成的硬件,您可以创建大型分布式存储流媒体解决方案、数据分析、和其他数据相关的任务。GlusterFS是自由和开源软件。

    详细参考官网:https://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/

    一、部署环境
    1、系统环境:
    fedora操作系统(xfs文件系统)

    2、硬件规划
    主机名称 IP地址
    compute4 192.168.141.24
    compute5 192.168.141.24
    3、其它硬件要求
    a、一块网卡
    b、每台主机至少两块硬盘,一块用于安装OS,其他用于Gluster storage

    4、注意事项:
    GlusterFS默认地把动态生成的配置数据存放于/var/lib/glusterd目录下,日志数据存放于/var/log下,请确保它们所在的分区空间足够多,避免因磁盘满而导致GlusterFS运行故障而服务宕机。

    5、配置域名解析 (备注:两个节点相同配置)
    vi /etc/hosts
    10.10.0.24 compute4
    10.10.0.25 compute5

    6、分区准备 (备注:二台服务器,各准备一块480G硬盘)
    Disk /dev/sdb: 446.6 GiB, 479559942144 bytes, 936640512 sectors

    Device Boot Start End Sectors Size Id Type
    /dev/sdb1 2048 936640511 936638464 446.6G 83 Linux

    #自动分区脚本 (备注:两台服务器相同操作)
    [root@compute4 ~]# cat fdisk_sdb.sh
    #!/bin/bash
    echo "n
    p
    1


    w
    " | fdisk /dev/sdb
    partprobe

    #格式化 (备注:两台服务器相同操作)
    [root@compute4 ~]# mkfs.xfs /dev/sdb1 -f
    meta-data=/dev/sdb1 isize=512 agcount=4, agsize=29269952 blks
    = sectsz=512 attr=2, projid32bit=1
    = crc=1 finobt=1, sparse=0, rmapbt=0, reflink=0
    data = bsize=4096 blocks=117079808, imaxpct=25
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=1
    log =internal log bsize=4096 blocks=57167, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0

    #设置开机自启动 (备注:两台服务器相同操作)
    [root@compute4 ~]# echo "/dev/sdb1 /mnt xfs defaults 0 0" >>/etc/fstab

    #查看 (备注:两台服务器相同操作)
    [root@compute4 ~]# cat /etc/fstab
    /dev/mapper/fedora00-root / xfs defaults 0 0
    UUID=31323eb2-0fba-46c3-aa9f-9373490a63bd /boot ext4 defaults 1 2
    /dev/mapper/fedora00-swap swap swap defaults 0 0
    /dev/sdb1 /mnt xfs defaults 0 0

    #挂载 (备注:两台服务器相同操作)
    [root@compute4 ~]# mount -a

    #查看挂载是否到/mnt目录 (备注:两台服务器相同操作)
    [root@compute4 ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    devtmpfs 79G 0 79G 0% /dev
    tmpfs 79G 12K 79G 1% /dev/shm
    tmpfs 79G 1.3M 79G 1% /run
    tmpfs 79G 0 79G 0% /sys/fs/cgroup
    /dev/mapper/fedora00-root 100G 3.3G 97G 4% /
    tmpfs 79G 0 79G 0% /tmp
    /dev/sda3 976M 135M 775M 15% /boot
    tmpfs 16G 0 16G 0% /run/user/0
    /dev/sdb1 447G 488M 446G 1% /mnt

    二、glusterfs部署
    1、glusterfs软件安装 (备注:两台服务器相同操作)
    [root@compute4 ~]# dnf install glusterfs-server -y

    2、配置防火墙 (备注:两台服务器相同操作)
    清空iptables
    [root@compute4 ~]# iptables -F
    或配置防火墙规则
    节点上的gluster进程需要能够相互通信。为了简化此设置,请将每个节点上的防火墙配置为接受来自其他节点的所有流量。
    iptables -I INPUT -p all -s <ip-address> -j ACCEPT

    3、启动服务 (备注:两台服务器相同操作)
    [root@compute4 ~]#systemctl start glusterd
    [root@compute4 ~]#systemctl status glusterd
    [root@compute4 ~]# systemctl enable glusterd
    Created symlink /etc/systemd/system/multi-user.target.wants/glusterd.service → /usr/lib/systemd/system/glusterd.service.

    #启动服务

    [root@compute4 ~]#systemctl start glusterfsd

    [root@compute4 ~]#systemctl enable glusterfsd

    [root@compute4 ~]#systemctl status glusterfsd

    4、配置可信池
    注意:使用主机名时,需要从另一台服务器ping通其主机名
    [root@compute4 ~]# ping compute5
    PING compute4 (10.10.0.24) 56(84) bytes of data.
    64 bytes from compute5 (10.10.0.24): icmp_seq=1 ttl=64 time=0.393 ms

    [root@compute5 ~]# ping compute4
    PING compute4 (10.10.0.24) 56(84) bytes of data.
    64 bytes from compute4 (10.10.0.24): icmp_seq=1 ttl=64 time=0.393 ms

    #在compute4上面操作
    [root@compute4 ~]# gluster peer probe compute5
    peer probe: success.

    #在compute5上面操作
    [root@compute5 ~]# gluster peer probe compute4
    peer probe: success. Host compute4 port 24007 already in peer list

    5、检查状态
    #在compute4上面操作
    [root@compute4 ~]# gluster peer status
    Number of Peers: 1
    Hostname: compute5
    Uuid: a1d42adb-0207-459a-abfb-73c53efd2689
    State: Peer in Cluster (Connected)

    #在compute5上面操作
    [root@compute5 ~]# gluster peer status
    Number of Peers: 1
    Hostname: compute4
    Uuid: 091f6810-9cac-4415-8077-6a9fba708013
    State: Peer in Cluster (Connected)

    6、建立一个GlusterFS卷(两个节点都要执行)
    GlusterFS卷共有三种基本类型,分别是Distributed(分布式存储)、Striped(将一个文件分成多个固定长度的数据,分布存放在所有存储块,相当于RAID0)、Replicated(镜像存储,相当于RAID1).
    基于striped和replicated,结合使用distributed后,又可以扩展出分布式分片存储卷和分布式镜像存储卷两种新的类型。而后两种扩展类型并没有新的命令格式仅是通过设置数据冗余分数和添加
    进逻辑卷的bricks数量动态定义的

    #创建一个GlusterFS Replicated卷(两个节点都要执行)
    [root@compute5 ~]# mkdir -p /mnt/brick1/gv0

    #(备注:在任意一个节点操作)
    [root@compute4 gv0]# gluster volume create gv0 replica 2 compute4:/mnt/brick1/gv0 compute5:/mnt/brick1/gv0
    volume create: gv0: success: please start the volume to access data

    #其它命令
    #启动卷
    [root@compute4 gv0]# gluster volume start gv0
    volume start: gv0: success

    #停止卷
    # gluster volume stop gv0

    #查看卷信息
    [root@compute4 gv0]# gluster volume info
    Volume Name: gv0
    Type: Replicate
    Volume ID: 297db7f2-099f-40f8-962a-bb8b918afcb6
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 1 x 2 = 2
    Transport-type: tcp
    Bricks:
    Brick1: compute4:/mnt/brick1/gv0
    Brick2: compute5:/mnt/brick1/gv0
    Options Reconfigured:
    transport.address-family: inet
    nfs.disable: on

    #删除卷
    gluster volume delete gv0

    #在gv0卷中增加一个存储块comoute6:/data
    gluster volume add-brick gv0 comoute6:/data
    gluster rebalance gv0 start

    #在gv0卷中删除一个存储块comoute6:/data
    gluster volume remove-brick gv0 comoute6:/data
    gluster rebalance gv0 start
    #如果以上操作票遇到报错,请查看/var/log/gluster下的日志,以定位排错

    三、测试GlusterFS卷
    1、安装挂载 (备注:客户端操作)
    # yum install centos-release-gluster38
    # yum install -y glusterfs glusterfs-fuse
    # mkdir /heboan_data
    # mount -t glusterfs server1:/gv0 /heboan_data/ (挂载任一节点即可)

    2、测试文件 (备注:客户端执行)
    # echo "this is a test file" >/heboan_data/test.txt
    在sever1、server2可以查看到test文件
    # cat /data/brick1/gv0/test.txt

    3、宕机测试
    #将其中一个节点停止存储服务
    # systemctl stop glusterd
    # systemctl stop glusterfsd

    4、在客户端删除test.txt,新建test2.txt
    # rm -f /heboan_data/test.txt
    # echo "this is a test2 file" >/heboan_data/test2.txt

    此时查看服务被停止的节点上的文件还是test.txt,另一个节点则变成test2.txt

    此时启动服务
    # systemctl start glusterd

    5、文件恢复同步
    #创建Distributed逻辑卷
    # gluster volume create gv1 server1:/data server2:/data
    # gluster volume info
    # gluster volume start gv1

    #创建Striped逻辑卷
    创建一个名字为gv2,包含两个存储块,使用TCP协议的Striped逻辑卷:
    # gluster volume create gv2 stripe 2 transport tcp server1:/data server2:/data
    # gluster volume info
    # gluster volume start gv2

    #迁移卷
    将server2的数据迁移到server3
    先将server3加入集群
    # gluster peer probe server3
    迁移
    # gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 start
    查看迁移状态
    # gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 status
    数据迁移完毕后提交
    # gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 commit
    如果机器server1出现故障已经不能运行,执行强制提交然后要求gluster马上执行一次同步
    # gluster volume replace-brick gv0 server2:/data/brick1/gv0 server3:/data/brick1/gv0 commit -force
    # gluster volume heal gv0 full

    更多用法参考:

    https://www.cnblogs.com/sxchengchen/p/7805667.html

    分布式文件系统MFS、Ceph、GlusterFS、Lustre的比较:

    http://blog.csdn.net/dipolar/article/details/50154349

     

  • 相关阅读:
    jQuery下拉菜单演示
    乐易拍电子商务系统(asp.net+extjs)版本1.1 统计实例(拖动选择统计选项)
    乐易拍电子商务系统(asp.net+ extjs)
    浅析JavaScript的原型链
    AMQP协议
    开源.net进销存管理系统源码
    RabbitMQ学习笔记
    乐易拍在线考试模仿驾校考试
    show 一下我的在线考试系统
    cxf 生成 wsdl 缺陷!!!!!
  • 原文地址:https://www.cnblogs.com/nulige/p/8569727.html
Copyright © 2011-2022 走看看