美文网首页数客联盟
CentOS安装GlusterFS+Heketi

CentOS安装GlusterFS+Heketi

作者: 老陕西 | 来源:发表于2019-05-28 22:37 被阅读13次

    本文讲介绍CentOS7.5下面搭建GlusterFS集群+Heketi的详细部署步骤。

    安装前配置

    本实例安装三台GlusterFS集群和一台Gluster client机器。

    为了在第一台主机上保留yum rpm包,在其它主机离线安装,需要配置yum保留cache:

    sudo sed -i 's/keepcache=0/keepcache=1/g' /etc/yum.conf
    

    安装GlusterFS集群

    Gluster的安装包在centos-release-gluster源里面,CentOS7.5默认带的是GlusterFS 3.11版本,默认版本比较低,如果要安装更高的版本需要安装centos-release-gluster源,这个源中有4,5,6版本的Gluster包。

    yum search  centos-release-gluster
    Loaded plugins: fastestmirror, langpacks
    Determining fastest mirrors
     * base: mirrors.aliyun.com
     * extras: mirror.jdcloud.com
     * updates: mirrors.nwsuaf.edu.cn
    base                                                                                                                                                | 3.6 kB  00:00:00     
    extras                                                                                                                                              | 3.4 kB  00:00:00     
    updates                                                                                                                                             | 3.4 kB  00:00:00     
    (1/4): base/7/x86_64/group_gz                                                                                                                       | 166 kB  00:00:00     
    (2/4): extras/7/x86_64/primary_db                                                                                                                   | 200 kB  00:00:00     
    (3/4): base/7/x86_64/primary_db                                                                                                                     | 6.0 MB  00:00:01     
    (4/4): updates/7/x86_64/primary_db                                                                                                                  | 5.0 MB  00:02:07     
    =================================================================== N/S matched: centos-release-gluster ===================================================================
    centos-release-gluster-legacy.noarch : Disable unmaintained Gluster repositories from the CentOS Storage SIG
    centos-release-gluster40.x86_64 : Gluster 4.0 (Short Term Stable) packages from the CentOS Storage SIG repository
    centos-release-gluster41.noarch : Gluster 4.1 (Long Term Stable) packages from the CentOS Storage SIG repository
    centos-release-gluster5.noarch : Gluster 5 packages from the CentOS Storage SIG repository
    centos-release-gluster6.noarch : Gluster 6 packages from the CentOS Storage SIG repository
    
      Name and summary matches only, use "search all" for everything.
    

    Gluster版本如何选型

    这个需要查看GusterFS的发布计划:
    https://www.gluster.org/community/release-schedule

    image.png

    从这个计划中我们可以看出,EOL是EndOfLife的意思,就是不在维护和支持了,出现bug也不会修改了,所以一般不需要选择EOL的版本,当前已经发布并且维护的版本是4.1和5,其中4.1已经发布并且较长时间,比较稳定,所以本次选择4.1版本安装。

    sudo yum install centos-release-gluster41.noarch -y
    

    然后在第一台机器上安装gluster服务端,注意,要使用我们安装的源需要添加选项--enablerepo=centos-gluster*-test

    sudo yum --enablerepo=centos-gluster*-test install glusterfs-server glusterfs-cli glusterfs-geo-replication -y
    

    关闭防火墙

    sudo systemctl stop firewalld.service
    sudo systemctl disable firewalld.service
    

    启动Gluster服务

    sudo systemctl start glusterd.service
    sudo systemctl enable glusterd.service
    

    第一台Gluster服务器就安装完成,复制yum cache到其它节点:

    scp -r /var/cache/yum/ root@centos3:/var/cache/
    

    在其它节点选择从cache安装并启动

    sudo yum -C -y install centos-release-gluster41.noarch
    sudo yum -C -y --enablerepo=centos-gluster*-test install glusterfs-server glusterfs-cli glusterfs-geo-replication
    
    sudo systemctl stop firewalld.service
    sudo systemctl disable firewalld.service
    
    sudo systemctl start glusterd.service
    sudo systemctl enable glusterd.service
    

    把三个节点的Gluster添加为一个集群

    HOST_NAME_LIST="centos1,centos2,centos3"
    awk 'BEGIN{split('"\"$HOST_NAME_LIST\""',arr,",");for(i in arr){cmd="sudo gluster peer probe "arr[i];print(cmd);system(cmd)}}'
    sudo gluster peer probe centos1
    peer probe: success. Probe on localhost not needed
    sudo gluster peer probe centos2
    peer probe: success. 
    sudo gluster peer probe centos3
    peer probe: success. 
    [root@centos1 cent]# gluster peer status
    Number of Peers: 2
    
    Hostname: centos2
    Uuid: 62f6ecbf-fec4-4004-aa5b-c69d2b792a19
    State: Peer in Cluster (Connected)
    
    Hostname: centos3
    Uuid: dd1e84c4-e9c2-4b0a-8496-55941abb305a
    State: Peer in Cluster (Connected)
    

    安装Heketi

    Heketi的安装包也是随着GlusterFS发布的,所以必须选择一致的Heketi进行安装,同样,我们从centos-gluster41的源中安装Heketi。

    sudo yum --enablerepo=centos-gluster*-test install heketi heketi-client -y
    

    配置Heketi配置文件,配置文件的含义可以去下面链接查看
    https://www.cnblogs.com/netonline/p/10288219.html

    ## /etc/heketi/heketi.json
    sudo echo '
    {
      "_port_comment": "Heketi Server Port Number",
      "port": "8080",
    
      "_use_auth": "Enable JWT authorization. Please enable for deployment",
      "use_auth": true,
    
      "_jwt": "Private keys for access",
      "jwt": {
        "_admin": "Admin has access to all APIs",
        "admin": {
          "key": "a123"
        },
        "_user": "User only has access to /volumes endpoint",
        "user": {
          "key": "a123"
        }
      },
    
      "_glusterfs_comment": "GlusterFS Configuration",
      "glusterfs": {
        "_executor_comment": [
          "Execute plugin. Possible choices: mock, ssh",
          "mock: This setting is used for testing and development.",
          "      It will not send commands to any node.",
          "ssh:  This setting will notify Heketi to ssh to the nodes.",
          "      It will need the values in sshexec to be configured.",
          "kubernetes: Communicate with GlusterFS containers over",
          "            Kubernetes exec api."
        ],
        "executor": "ssh",
    
        "_sshexec_comment": "SSH username and private key file information",
        "sshexec": {
          "keyfile": "/var/lib/heketi/id_rsa",
          "user": "root",
          "port": "22",
          "fstab": "/etc/fstab"
        },
    
        "_kubeexec_comment": "Kubernetes configuration",
        "kubeexec": {
          "host" :"https://kubernetes.host:8443",
          "cert" : "/path/to/crt.file",
          "insecure": false,
          "user": "kubernetes username",
          "password": "password for kubernetes user",
          "namespace": "OpenShift project or Kubernetes namespace",
          "fstab": "Optional: Specify fstab file on node.  Default is /etc/fstab"
        },
    
        "_db_comment": "Database file name",
        "db": "/var/lib/heketi/heketi.db",
    
        "_loglevel_comment": [
          "Set log level. Choices are:",
          "  none, critical, error, warning, info, debug",
          "Default is warning"
        ],
        "_log": "logging to /var/log/message",
        "loglevel" : "warning"
      }
    }
    ' | sudo tee /etc/heketi/heketi.json
    

    定义每个节点上的存储结构topology

    sudo echo '
    {
        "clusters": [
            {
                "nodes": [
                    {
                        "node": {
                            "hostnames": {
                                "manage": [
                                    "centos1"
                                ],
                                "storage": [
                                    "centos1"
                                ]
                            },
                            "zone": 1
                        },
                        "devices": [
                            "/dev/sdb"
                        ]
                    },
                    {
                        "node": {
                            "hostnames": {
                                "manage": [
                                    "centos2"
                                ],
                                "storage": [
                                    "centos2"
                                ]
                            },
                            "zone": 1
                        },
                        "devices": [
                            "/dev/sdb"
                        ]
                    },
                    {
                        "node": {
                            "hostnames": {
                                "manage": [
                                    "centos3"
                                ],
                                "storage": [
                                    "centos3"
                                ]
                            },
                            "zone": 1
                        },
                        "devices": [
                            "/dev/sdb"
                        ]
                    }       
                ]
            }
        ]
    }
    ' | sudo tee /etc/heketi/topology-cluster-1.json
    

    配置SSH免密登录

    sudo ssh-keygen -t rsa -q -f /var/lib/heketi/id_rsa -N ''
    sudo chown heketi:heketi /var/lib/heketi/id_rsa*
    sudo ssh-copy-id -i /var/lib/heketi/id_rsa root@centos1
    sudo ssh-copy-id -i /var/lib/heketi/id_rsa root@centos2
    sudo ssh-copy-id -i /var/lib/heketi/id_rsa root@centos3
    

    启动Heketi服务

    sudo systemctl start heketi.service
    sudo systemctl enable heketi.service
    sudo systemctl status heketi.service
    

    通过Heketi命令初始化GlusterFS各节点的存储

    heketi-cli --user admin --secret a123 --server http://127.0.0.1:8080 topology load --json /etc/heketi/topology-cluster-1.json
    Creating cluster ... ID: 919157039f0aef6126dad5934d3fdb66
            Allowing file volumes on cluster.
            Allowing block volumes on cluster.
            Creating node 192.168.43.88 ... ID: 61b13f9ebce7c382ef9bd43215017374
                    Adding device /dev/sdb ... OK
            Creating node 192.168.43.152 ... ID: 0ff9b39ca465aefb777ad2b196a116a5
                    Adding device /dev/sdb ... OK
    

    这里会生成cluster id,这个后面要用到。
    创建一个2G的3副本的复制卷

    alias heketi-cli='heketi-cli --server "http://127.0.0.1:8080" --user admin --secret a123'
    heketi-cli volume create --size=2  --replica=3 --clusters=919157039f0aef6126dad5934d3fdb66
    
            Name: vol_a34cffc6832123b9ffd795744c3eb2df
            Size: 1
            Volume Id: a34cffc6832123b9ffd795744c3eb2df
            Cluster Id: 919157039f0aef6126dad5934d3fdb66
            Mount: 192.168.43.152:vol_a34cffc6832123b9ffd795744c3eb2df
            Mount Options: backup-volfile-servers=192.168.43.88
            Block: false
            Free Size: 0
            Reserved Size: 0
            Block Hosting Restriction: (none)
            Block Volumes: []
            Durability Type: replicate
            Distribute Count: 1
            Replica Count: 3
    

    Heketi会为每个卷起一个uuid的名字,可以通过heketi-cli volume list查看。
    使用gluster命令也可以create volume,但是默认没有start,需要用gluster start命令启动volume.

    使用Gluster FS存储

    如果需要通过native方式使用GlusterFS,则需要在客户端机器上安装glusterfs-client包

    sudo yum install centos-release-gluster41.noarch -y
    sudo yum --enablerepo=centos-gluster*-test install glusterfs-client -y
    

    通过mount命令就可以挂在GlusterFS的存储卷

    sudo mount -t glusterfs centos1:vol_a34cffc6832123b9ffd795744c3eb2df /gfsmnt/
    

    相关文章

      网友评论

        本文标题:CentOS安装GlusterFS+Heketi

        本文链接:https://www.haomeiwen.com/subject/mlajtctx.html