zoukankan      html  css  js  c++  java
  • 部署GlusterFS及Heketi

    一、前言及环境

      在实践kubernetes的StateFulSet及各种需要持久存储的组件和功能时,通常会用到pv的动态供给,这就需要用到支持此类功能的存储系统了。在各类支持pv动态供给的存储系统中,GlusterFS的设定比较简单,且数据安全性比较有保障,相较于ceph和NFS。

    环境(gluster-server之间互信):

    二、部署GlusterFS

    1.分别在三个节点上安装glusterfs-server程序包,并启动服务
    [root@gluster-server01 ~]# yum clean all && yum makecache fast
    [root@gluster-server01 ~]# yum install centos-release-gluster -y
    [root@gluster-server01 ~]# yum --enablerepo=centos-gluster*-test install glusterfs-server -y
    [root@gluster-server01 ~]# systemctl enable glusterd && systemctl start glusterd
    [root@gluster-server01 ~]# systemctl status glusterd #确保服务器启动成功

    #其他两个节点相同操作

    2.在任意一节点发现其他节点,组成GlusterFS集群
    [root@gluster-server01 ~]# gluster peer probe gluster-server02
    peer probe: success. 
    [root@gluster-server01 ~]# gluster peer probe gluster-server03
    peer probe: success. 
    [root@gluster-server01 ~]# gluster peer status
    Number of Peers: 2
    
    Hostname: gluster-server02
    Uuid: 82a98899-550b-466c-80f3-c56b85059e9a
    State: Peer in Cluster (Connected)
    
    Hostname: gluster-server03
    Uuid: 9fdb08a3-b5ca-4e93-9701-d49e737f92e8
    State: Peer in Cluster (Connected)

    三、部署Heketi(gluster-server01上)

    Heketi提供了一个RESTful管理界面,可以用来管理GlusterFS卷的生命周期。 通过Heketi,就可以像使用OpenStack Manila,Kubernetes和OpenShift一样申请可以动态配置GlusterFS卷。Heketi会动态在集群内选择bricks构建所需的volumes,这样以确保数据的副本会分散到集群不同的故障域内。同时Heketi还支持任意数量的ClusterFS集群,以保证接入的云服务器不局限于单个GlusterFS集群。
    1.安装Heketi服务
    [root@gluster-server01 ~]# yum install heketi heketi-client  -y
    2.配置heketi用户能够基于SSH秘钥认证的方式连接至GlusterFS集群各节点
    [root@gluster-server01 ~]# ssh-keygen -f /etc/heketi/heketi_key -t rsa -N ''
    [root@gluster-server01 ~]# chown heketi:heketi  /etc/heketi/heketi*
    [root@gluster-server01 ~]# for host in {01..03};do ssh-copy-id -i /etc/heketi/heketi_key.pub root@gluster-server${host}  done
    3.heketi的主配置文件/etc/heketi/heketi.json,定义服务监听的端口、认证及连接Gluster存储集群的方式
    [root@gluster-server01 ~]# cp /etc/heketi/heketi.json /etc/heketi/heketi.json-bak
    [root@gluster-server01 ~]# cat /etc/heketi/heketi.json
    {
      "port": "8080",
      "use_auth": false,  #若要启动连接Heketi的认证,则需要将user_auth改为true,并在jwt{}段为各用户设置相应的密码,用户名和密码都可以自定义
    
      "jwt": {
        "admin": {
          "key": "My Secret"
        },
        "user": {
          "key": "My Secret"
        }
      },
    
      "glusterfs": {
        "executor": "ssh",
        "sshexec": {
          "keyfile": "/etc/heketi/heketi_key",
          "user": "root",
          "port": "22",
          "fstab": "/etc/fstab"
        },
        "db": "/var/lib/heketi/heketi.db",
        "loglevel" : "debug"
      }
    }
    4.启动heketi服务
    [root@gluster-server01 ~]# systemctl enable heketi && systemctl start heketi
    [root@gluster-server01 ~]# systemctl status heketi
    5.向heketi发起测试请求
    [root@gluster-server01 ~]# curl http://gluster-server01:8080/hello
    Hello from Heketi

    四、设置Heketi系统拓扑

    拓扑信息用于让Heketi确认可以使用的节点、磁盘和集群,管理员必须自行确定节点的故障域。故障域是赋予一组节点的整数值,这组节点共享相同的交换机、电源或其他任何会导致它们同时失效的组件。管理员必须确认哪些节点构成一个集群,Heketi使用这些信息来确保跨故障域中创建副本,从而提供数据冗余能力,Heketi支持多个Gluster存储集群
    1、使用客户端加载预定义的集群拓扑(注意客户端的版本要与服务端保持一致)

    示例:根据当前Gluster集群的实际环境将gluster-server01、gluster-server02、gluster-server03三个节点定义在同一个集群中,并指明各节点用于提供存储的设备

    [root@gluster-server01 heketi]# cat topolgy_demo.json 
    {
      "clusters": [
        {
          "nodes": [
             {
               "node": {
                   "hostnames": {
                       "manage": [
                          "192.168.1.107"
                        ],
                       "storage": [
                       "192.168.1.107"
                        ]
                   },
              "zone": 1
             },
             "devices": [
                "/dev/sdb"
                  ]
               },
    
             {  "node": {
                   "hostnames": {
                       "manage": [
                          "192.168.1.108"
                        ],
                       "storage": [
                       "192.168.1.108"
                        ]
                   },
              "zone": 1
             },
             "devices": [
                "/dev/sdb"
                  ]
               },
             { "node": {
                   "hostnames": {
                       "manage": [
                          "192.168.1.109"
                        ],
                       "storage": [
                       "192.168.1.109"
                        ]
                   },
              "zone": 1
             },
             "devices": [
                "/dev/sdb"
                  ]
               }     
            ]
         }
       ]
    }

    加载拓扑信息,并添加各节点生成的随机ID号

    [root@gluster-server01 heketi]# echo "export HEKETI_CLI_SERVER=http://gluster-server01:8080" > /etc/profile.d/heketi.sh
    [root@gluster-server01 heketi]# source /etc/profile.d/heketi.sh
    [root@gluster-server01 heketi]# echo $HEKETI_CLI_SERVER
    http://gluster-server01:8080
    [root@gluster-server01 heketi]# heketi-cli topology load --json=topolgy_demo.json 
    Creating cluster ... ID: 34be103e76c2254779d3c0dbd029acbd
        Allowing file volumes on cluster.
        Allowing block volumes on cluster.
        Creating node 192.168.1.107 ... ID: 389b66793f41ed74ab30109e8d1faf85
            Adding device /dev/sdb ... OK
        Creating node 192.168.1.108 ... ID: d3bffc39419abfe1a04d2c235f9720f3
            Adding device /dev/sdb ... OK
        Creating node 192.168.1.109 ... ID: 45b7db6cd1cb0405f07ac634a82b9fc9
            Adding device /dev/sdb ... OK
    2.根据生成的随机Cluster ID号查看集群状态信息
    [root@gluster-server01 heketi]# heketi-cli cluster info 34be103e76c2254779d3c0dbd029acbd  #注意是第一行的cluster ID
    Cluster id: 34be103e76c2254779d3c0dbd029acbd
    Nodes:
    389b66793f41ed74ab30109e8d1faf85
    45b7db6cd1cb0405f07ac634a82b9fc9
    d3bffc39419abfe1a04d2c235f9720f3
    Volumes:
    
    Block: true
    
    File: true
    3.创建一个测试使用的存储卷
    [root@gluster-server01 heketi]# heketi-cli volume create --size=5
    Name: vol_9f2dde345a9b7566f8134c3952251d7a
    Size: 5
    Volume Id: 9f2dde345a9b7566f8134c3952251d7a
    Cluster Id: 34be103e76c2254779d3c0dbd029acbd
    Mount: 192.168.1.107:vol_9f2dde345a9b7566f8134c3952251d7a   #客户端挂载的地址
    Mount Options: backup-volfile-servers=192.168.1.109,192.168.1.108
    Block: false
    Free Size: 0
    Reserved Size: 0
    Block Hosting Restriction: (none)
    Block Volumes: []
    Durability Type: replicate
    Distributed+Replica: 3
    4.存储客户端安装glusterfs客户端程序并挂载测试存储卷(如果有k8s集群,也可以使用k8s来测试)
    [root@gluster-client01 ~]# yum clean all && yum makecache fast
    [root@gluster-client01 ~]# yum install centos-release-gluster -y
    [root@gluster-client01 ~]# yum --enablerepo=centos-gluster*-test install glusterfs glusterfs-fuse -y
    [root@gluster-client01 ~]# mount -t glusterfs 192.168.1.107:vol_9f2dde345a9b7566f8134c3952251d7a /mnt  #创建volume信息中的Mount信息
    [root@gluster-client01 ~]# df -h
    文件系统                                            容量  已用  可用 已用% 挂载点
    /dev/mapper/cl-root                                  17G  2.0G   15G   12% /
    devtmpfs                                            330M     0  330M    0% /dev
    tmpfs                                               341M     0  341M    0% /dev/shm
    tmpfs                                               341M  4.8M  336M    2% /run
    tmpfs                                               341M     0  341M    0% /sys/fs/cgroup
    /dev/sda1                                          1014M  139M  876M   14% /boot
    tmpfs                                                69M     0   69M    0% /run/user/0
    192.168.1.107:vol_9f2dde345a9b7566f8134c3952251d7a  5.0G   84M  5.0G    2% /mnt
    5.测试完成删除存储卷命令
    [root@gluster-server01 heketi]# heketi-cli volume delete  9f2dde345a9b7566f8134c3952251d7a  #创建信息中的Volume Id

    转载于:https://www.cnblogs.com/panwenbin-logs/p/10231859.html

  • 相关阅读:
    TCP报文指针解释,IP地址
    Linux基本操作及安装(部分)
    Windows cmd用语
    三次握手,四次挥手
    Linux命令(部分)
    Linux系统命令。
    三层交换配置流程
    网络基本内容(部分)
    20192020学期20192404《网络空间安全专业导论》第三周学习总结
    201920201学期 20192404 《网络空间安全导论》第二周学习总结
  • 原文地址:https://www.cnblogs.com/twodog/p/12135352.html
Copyright © 2011-2022 走看看