Gluster 简介

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gluster 简介相关的知识,希望对你有一定的参考价值。

参考技术A Gluster 是一种可扩展的分布式文件系统,可将来自多个服务器的磁盘存储资源聚合到一个全局命名空间中。

GlusterFS 体系结构将计算,存储和 I/O 资源聚合到一个全局命名空间中。 每台服务器加上存储设备(配置为直连存储,JBOD 或使用存储区域网络)被视为节点。 通过添加其它节点或向每个节点添加额外存储来扩展容量。 通过在更多节点之间部署存储来提高性能。 通过在节点之间复制数据来实现高可用性。

GlusterFS 通过以太网或 Infiniband RDMA 互连将各种存储服务器聚合到一个大型并行网络文件系统中。 GlusterFS 基于可堆叠的用户空间设计。

GlusterFS 有一个客户端和服务器组件。服务器通常部署为 storage bricks,每个服务器运行 glusterfsd 守护程序以将本地文件系统导出为 volume。 glusterfs 客户端进程通过 TCP/IP,InfiniBand 或套接字直接协议连接到具有自定义协议的服务器,使用可堆叠转换器从多个远程服务器创建复合虚拟卷。默认情况下,文件是整体存储的,但也支持跨多个远程卷分割文件。然后,客户端主机可以通过 FUSE 机制使用自己的本机协议,使用内置服务器转换器的 NFS v3 协议或通过 libgfapi 客户端库访问 volume。

GlusterFS 的大多数功能都实现为转换器,包括基于文件的镜像和复制,基于文件的条带化,基于文件的负载均衡,卷故障转移,调度和磁盘缓存,存储配额以及具有用户可维护性的卷快照(自 GlusterFS 3.6 版本以来 )。

GlusterFS 服务器有意保持简单:它按原样导出现有目录,将其留给客户端转换器来构建存储。客户端本身是无状态的,不相互通信,并且期望具有彼此一致的转换器配置。 GlusterFS 依赖于弹性散列算法(elastic hashing algorithm),而不是使用集中式或分布式元数据模型。使用 GlusterFS 3.1 及更高版本,可以动态添加,删除或迁移卷,有助于避免配置一致性问题,并允许 GlusterFS 通过避免通常会影响更紧密耦合的分布式文件系统的瓶颈,在商用硬件上扩展到几PB 。

GlusterFS 通过各种复制选项提供数据可靠性和可用性:复制卷和地理复制。复制卷确保每个文件至少存在一个副本,因此如果一个文件出现故障,仍然可以访问数据。地理复制提供了主从模式的复制, volume 会跨不同的地理位置进行复制。这是异步发生的,在发生故障时备份数据非常有用。

https://docs.gluster.org/en/latest/Administrator%20Guide/GlusterFS%20Introduction/
https://en.wikipedia.org/wiki/Gluster

text gluster RHEL7

    Executar todos os passos no nó gluster-0.example.com
    
    subscription-manager register --username user-mmagnani --password senha    
    subscription-manager attach --pool=ssssssssssssssssssssss
    subscription-manager repos --enable=rhel-7-server-rh-common-rpms
    subscription-manager repos --disable=* --enable=rhel-7-server-rpms --enable=rh-gluster-3-for-rhel-7-server-rpms
    yum install ntp -y
    systemctl enable ntpd
    systemctl start ntpd
    yum install redhat-storage-server
    firewall-cmd --zone=public --add-port=24007-24008/tcp --permanent
    firewall-cmd --zone=public --add-port=24009-24010/tcp --permanent
    firewall-cmd --zone=public --add-service=nfs --add-service=samba --add-service=samba-client --permanent
    firewall-cmd --zone=public --add-port=111/tcp --add-port=139/tcp --add-port=445/tcp --add-port=965/tcp --add-port=2049/tcp --add-port=38465-38469/tcp --add-port=631/tcp --add-port=111/udp --add-port=963/udp --add-port=49152-49251/tcp  --permanent
    firewall-cmd --reload
    systemctl enable glusterd
    yum update -y
    firewall-cmd --zone=public --add-port=8080/tcp --permanent
    firewall-cmd --reload
    yum install heketi heketi-client -y
    ssh-keygen -f /etc/heketi/heketi_key -t rsa -N ''
    chown heketi:heketi /etc/heketi/heketi_key*
    ssh-copy-id -i /etc/heketi/heketi_key.pub root@gluster-0.example.com

    Editar o  vi /etc/heketi/heketi.json e deixar o bloco sshexec como abaixo:
    
    "sshexec": {
    "keyfile": "/etc/heketi/heketi_key",
    "user": "root",
    "port": "22",
    "fstab": "/etc/fstab",
    "gluster_cli_timeout": 600

    systemctl restart heketi
    systemctl enable heketi
    curl http://$(hostname):8080/hello
    
    export HEKETI_CLI_SERVER=http://gluster-0.example.com:8080
    
    Criar a topologia: topology.json
     
{
    "clusters": [{
        "nodes": [{
                "node": {
                    "hostnames": {
                        "manage": [
                            "gluster-0.example.com"
                        ],
                        "storage": [
                            "10.0.0.123"
                        ]
                    },
                    "zone": 1
                },
                "devices": [
                    "/dev/sdb",
                    "/dev/sdc"
                ]
            }
        ]
    }]
}

 heketi-cli topology load --json=topology.json
 heketi-cli cluster list

Gluster finalizado!

No openshift com um usuario cluster-admin basta criar o storageClass

oc create -f  glusterfs-storage-class.yaml 

#######
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: gluster-fs
provisioner: kubernetes.io/glusterfs
parameters:
  resturl: "http://gluster-0.example.com:8080"
  restauthenabled: "false"
  volumetype: none
#######

Torne o storeClass default: 

oc patch storageclass gluster-fs -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

Voce pode testar criando um projeto e na opção storage criar um novo volume utilizando o storageClass gluster-fs






    
    
    

以上是关于Gluster 简介的主要内容,如果未能解决你的问题,请参考以下文章

Gluster vs Ceph:开源存储领域的正面较量

text gluster RHEL7

text Gluster EasyWp

gluster分布式文件系统

CentOS7配置本地镜像及安装gluster服务

分布式储存_gluster