部署GlusterFS及Heketi-程序员宅基地

技术标签: 运维  json  

一、前言及环境

  在实践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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34281537/article/details/93427253

智能推荐

PL/SQL数组 二-程序员宅基地

文章浏览阅读51次。使用字符串索引的关联数组的一个有趣的特性是它们自动地通过当前的国际语言支持(NLS)设置排序。FIRST和LAST函数返回数组中以字典序排列的第一个和最后一个健值。NEXT和PRIOR允许你以字典序获取下一个和前一个键。  ...

WPF编程,Live Charts使用说明(32)——可滚动图表_livecharts 增加数据自动滚动-程序员宅基地

文章浏览阅读3.8k次,点赞3次,收藏8次。本事例中使用了增强类后台处理类:using System;using System.Collections.Generic;using System.ComponentModel;using LiveCharts.Defaults;using LiveCharts.Geared; namespace Geared.Wpf.Scrollable{ public cla..._livecharts 增加数据自动滚动

DateTime用法大全_datetime.now.add-程序员宅基地

文章浏览阅读6.8k次。//今天 DateTime.Now.Date.ToShortDateString(); //昨天,也就是今天的日期减一 DateTime.Now.AddDays(-1).ToShortDateString(); //明天,同理,加一 DateTime.Now.AddDays(1).ToShortDateString(); //本周(要知道本周第一天就得先知道今天_datetime.now.add

无法读取方案文档 'http://www.springframework.org/schema/beans/spring-beans.xsd'问题解决-程序员宅基地

文章浏览阅读5.6k次,点赞3次,收藏4次。找到xml文件中的xsi:schemaLocation(本地仓库)"http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.1.xsd“有这样子的东西他会提示你找不到beans文件之类的,其他文件也同理具体解决办法如下:下载dtd文件到某个...

2021-02-08_toasset-程序员宅基地

文章浏览阅读244次。合成大西瓜自动部署上线自动裁切图片实现了,但是居然没人用,突发奇想,做个自动上线的总该有人用了吧。重构合成大西瓜:思路:(1)服务器上存储一份源文件(2)复制源文件到melon/目录下,以时间戳命名。(3)接收用户上传的图片,进行修改裁切,存放至时间戳下\res\raw-assets目录下开整!1、接收上传的图片:// 接收图片if(!empty($file = $_FILES)){ // 图片校验:数量、格式 foreach ($file as $f) { _toasset

Tomcat基线检查_基线检查文档-程序员宅基地

文章浏览阅读1.6k次。既无权访问非必须的文件,又不能执行非必须的程序威胁等级:High规则描述缺省情况下,Java运行时根据运行它的用户授予安全权限。当Tomcat以系统管理员身份或作为系统服务运行时,Java运行时取得了系统用户或系统管理员所具有的全部权限。这样一来,Java运行时就取得了所有文件夹中所有文件的全部权限。并且Servlets(JSP在运行过程中要转换成Servlets)取得了同样的权限。所以Java代码可以调用Java SDK中的文件API列出文件夹中的全部文件,删除任何文件,最大的危险在于以系统权限运行_基线检查文档

随便推点

程序缘 Flex AIR之旅 --软件安装_flexair安装过程-程序员宅基地

文章浏览阅读954次。1. 软件安装以XP为例,第一步:修改host安装前找到系统盘下windows/system32/drivers/etc,用记事本打开文件"hosts"在下面加入127.0.0.1activate.adobe.com127.0.0.1practivate.adobe.com127.0.0.1ereg.adobe.com127.0.0.1activate_flexair安装过程

VisualStudio中调用SGI版STL的方法_visual studio 使用其它版本stl-程序员宅基地

文章浏览阅读3.2k次。SGISTL是SGI公司发布的一种STL版本,如果看侯捷老师的<>的话,其中就用的是这个版本,不过大部分人可能用的VisualStudio或者VC编译器,其自带的STL是PJ版本,那么如果希望更好地理解书中的源码,或者实践的话,就需要使用SGISTL了.不过STLport是为了让SGISTL转接到不同的编译器上的移植项目,我们希望使用SGI版本的话最好下载STLport然后移植到你的VS_visual studio 使用其它版本stl

C#界面闪烁问题解决方案_c# 闪烁-程序员宅基地

文章浏览阅读6.4k次。C#界面闪烁问题解决方案_c# 闪烁

【AD】如何画双层PCB板,双层PCB板布线规则_ad双层板怎么画-程序员宅基地

文章浏览阅读5w次,点赞48次,收藏261次。转载自:http://www.iot-online.com/m2m/tech/2017083075558_2.html双层PCB,意思是在一块PCB板子的顶层和底层都画导线。双面板解决了单面板中因为布线交错的难点,即正反两面都有布线,元器件可以焊接在正面,也可以焊接在反面,双层线路板这种电路板的两面都有元器件和布线,不容质疑,设计双层PCB板的难度要高更多板。如何画双层PCB板双层PC_ad双层板怎么画

使用echarts柱状图横坐标文字过长放不下,文字会被隐藏_echarts 横坐标文字过长-程序员宅基地

文章浏览阅读1w次。今天在使用echarts中使用了柱状图,因为横坐标的文字过长,导致了显示不全,便去百度学习了一番总结下。1、可以设置字体倾斜实现效果(我用的就是这个)上图这是在xAxis: 中加入了axisLabel: { interval: 0, rotate: 20},interval:间隔 每个坐标之间的间隔,正常显示设置 0 就可以了。rotate:偏移,也可以说是倾斜。值是number类型但是这样可能会有新的问题,就是左右边距不..._echarts 横坐标文字过长

css3 flex布局九宫格,css3 flex 布局-程序员宅基地

文章浏览阅读549次。今天做一个小实战,需要让一个登录框始终保持水平和垂直居中,第一个想到的就是通过定位(要想让一个div居中,采用定位可以解决,示例),然后开始接触flex布局,学完感觉真的好用,现把知识点记录一下,以便自己日后查看(学习教程:阮大师的教程),笔记开始:传统的布局:围绕盒子模型(border、margin、padding) 定位(position)、浮动(float)等。flex布局又叫弹性布局 ..._九宫格 flex