一、前言及环境

  在实践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: Hostname: gluster-server02
Uuid: 82a98899-550b-466c-80f3-c56b85059e9a
State: Peer in Cluster (Connected) Hostname: gluster-server03
Uuid: 9fdb08a3-b5ca-4e93--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 {..};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": "",
"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": "",
"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":
},
"devices": [
"/dev/sdb"
]
}, { "node": {
"hostnames": {
"manage": [
"192.168.1.108"
],
"storage": [
"192.168.1.108"
]
},
"zone":
},
"devices": [
"/dev/sdb"
]
},
{ "node": {
"hostnames": {
"manage": [
"192.168.1.109"
],
"storage": [
"192.168.1.109"
]
},
"zone":
},
"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=
Name: vol_9f2dde345a9b7566f8134c3952251d7a
Size:
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:
Reserved Size:
Block Hosting Restriction: (none)
Block Volumes: []
Durability Type: replicate
Distributed+Replica:
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 .0G 15G % /
devtmpfs 330M 330M % /dev
tmpfs 341M 341M % /dev/shm
tmpfs 341M 4.8M 336M % /run
tmpfs 341M 341M % /sys/fs/cgroup
/dev/sda1 1014M 139M 876M % /boot
tmpfs 69M 69M % /run/user/
192.168.1.107:vol_9f2dde345a9b7566f8134c3952251d7a .0G 84M .0G % /mnt
5.测试完成删除存储卷命令
[root@gluster-server01 heketi]# heketi-cli volume delete  9f2dde345a9b7566f8134c3952251d7a  #创建信息中的Volume Id

部署GlusterFS及Heketi的更多相关文章

  1. 在Kubernetes中部署GlusterFS+Heketi

    目录 简介 Gluster-Kubernetes 部署 环境准备 下载相关文件 部署glusterfs 部署heketi server端 配置heketi client 简介 在上一篇<独立部署 ...

  2. 独立部署GlusterFS+Heketi实现Kubernetes共享存储

    目录 环境 glusterfs配置 安装 测试 heketi配置 部署 简介 修改heketi配置文件 配置ssh密钥 启动heketi 生产案例 heketi添加glusterfs 添加cluste ...

  3. CentOS 7.6 部署 GlusterFS 分布式存储系统

    文章目录 GlusterFS简介 环境介绍 开始GlusterFS部署 配置hosts解析 配置GlusterFS 创建文件系统 安装GlusterFS 启动GlusterFS 将节点加入到主机池 创 ...

  4. CentOS 6 部署GlusterFS

    首先需要关闭CentOS的防火墙和selinux,否则glusterfs将可能无法正常工作. /etc/init.d/iptables status 会得到一系列信息,说明防火墙开着. /etc/in ...

  5. Ubuntu Server 12.04下部署glusterfs

    1.安装环境 Linux:Ubuntuserver 12.04.1 LTS 64bit 2台 分布式文件系统:Gluster 测试环境:一台作文件服务器端(192.168.56.133),一台作客户端 ...

  6. glusterfs+heketi为k8s提供共享存储

    背景 近来在研究k8s,学习到pv.pvc .storageclass的时候,自己捣腾的时候使用nfs手工提供pv的方式,看到官方文档大量文档都是使用storageclass来定义一个后端存储服务, ...

  7. 附009.Kubernetes永久存储之GlusterFS独立部署

    一 前期准备 1.1 基础知识 Heketi提供了一个RESTful管理界面,可以用来管理GlusterFS卷的生命周期.Heketi会动态在集群内选择bricks构建所需的volumes,从而确保数 ...

  8. 附010.Kubernetes永久存储之GlusterFS超融合部署

    一 前期准备 1.1 基础知识 在Kubernetes中,使用GlusterFS文件系统,操作步骤通常是: 创建brick-->创建volume-->创建PV-->创建PVC--&g ...

  9. kubernetes实战(九):k8s集群动态存储管理GlusterFS及使用Heketi扩容GlusterFS集群

    1.准备工作 所有节点安装GFS客户端 yum install glusterfs glusterfs-fuse -y 如果不是所有节点要部署GFS管理服务,就在需要部署的节点上打上标签 [root@ ...

随机推荐

  1. 固态硬盘Ghost安装Windows 10无法引导的问题

    机器配置如下: 电脑型号 技嘉 B360M POWER 台式电脑 操作系统 Windows 10 64位 ( DirectX 12 ) 处理器 英特尔 Core i7-8700 @ 3.20GHz 六 ...

  2. wireshark 无线抓包

    1)抓取无线网卡的数据包(类似有线,仅抓取本网卡的数据包,适用与windows,linux) 1.  打开菜单项“Capture”下的子菜单“Capture Options”选项: 2.  找到设置面 ...

  3. c++函数总结

    1.strcpy(char *str1, char *str2) 作用:把str2的字符复制到str1,函数是C风格的函数. 注意事项:strcpy会从源地址一直往后拷贝,直到遇到'\0'为止,所以如 ...

  4. 19.python的序列化

    自定制序列化 import json from datetime import datetime class JsonCustomEncoder(json.JSONEncoder): #自定制序列化类 ...

  5. C# DES加密类,16位的加密。

    这个加密类是与java写的DES加密不同时,自己写的,最后与Java的加密相同了,解决了加密后不同的问题. 可以直接调用里面的加密和解密的方法. using System; using System. ...

  6. windows下配置下burpsuite的小方法。

    1.下载破解版burpsuite和正版burpsuite. 2.安装正版burpsuite(免费版) 3.打开安装路径 4.把破解版的burp拷贝到安装路径下 5.该路径下应该有个burpsuite_ ...

  7. XSS学习(三)挖掘思路

    HTML标签之间 <div id="body"> [输出点] </div> payload:<script>alert(1)</scrip ...

  8. php-fpm重启操作

    启动php-fpm:/usr/local/php/sbin/php-fpm php 5.3.3 以后的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/ph ...

  9. python selenium 处理时间日期控件(十六)

    测试过程中经常遇到时间控件,需要我们来选择日期,一般处理时间控件通过层级定位来操作或者通过调用js来实现. 1.首先我们看一下如何通过层级定位来操作时间控件. 通过示例图可以看到,日期控件是无法输入日 ...

  10. 解决spyder、Jupyter Notebook 打不开

    参考: https://blog.csdn.net/lanchunhui/article/details/72891918 https://stackoverflow.com/questions/49 ...