GlusterFs部署及使用

news2024/11/18 13:35:59

目录

一、部署和使用

1. clusterfs服务器初始化

2. 部署glusterfs

 3.  创建volume

 4. 客户端挂载和使用

 5.  k8s使用glusterfs作为后端存储(静态供给glusterfs存储)

5.1 集群所有节点安装glusterfs客户端

5.2 k8s创建资源对象使用glusterfs存储

5.2.1 创建glusterfs-endpoints

5.2.2 为这些端点创建一个service,以便它们能够持久,不需要标签选择器

5.2.3 创建pv,pvc,pv中定义glusterfs的信息

5.2.4 创建deployment、service

二、Glusterfs扩/缩容

三、故障演练

四、优化

五、线上创建命令


一、部署和使用

1. clusterfs服务器初始化

# 三台机器需要添加hosts
10.1.63.1 a5000-glusterfs-server1                                                                                                                                                       
10.1.63.2 a5000-glusterfs-server2                                                                                                                                                       
10.1.63.3 a5000-glusterfs-server3 

# 将磁盘设置为GPT格式
parted /dev/sdb mklabel gpt

# 将所有磁盘空间都分给sdb1
parted /dev/sdb mkpart primary 0% 100%

# 初始化ext4文件系统
mkfs -t ext4 /dev/sdb1

# 获取sdb1的UUID
blkid  /dev/sdb1

# 设置开机自动挂载
vim /etc/fstab  
/dev/disk/by-uuid/9eb095cb-d9ae-4f03-99c5-98f312aa4e88 /glusterfs  ext4 defaults 0 1

# 创建挂载点
mkdir /glusterfs

# 进行挂载
mount -a 

2. 部署glusterfs

注意:部署过程很简单,只需要安装一个glusterfs-server即可,需要注意的是glusterfs 客户端也需要安装一个客户端工具,并且配置hosts可以解析glusterfs-server的主机名

# 安装软件-属性-通用
apt install software-properties-common

apt install -y glusterfs-server
systemctl enable glusterd --now

# 查看gluster节点状态
gluster peer status

# 增加节点
gluster peer probe a5000-glusterfs-server2

# 删除一个节点
gluster peer detach a5000-glusterfs-server2

# 查看glustrefs集群节点
gluster pool list

 3.  创建volume

# 查看所有卷的信息
gluster volume status all

# 创建volume  创建3副本卷,2副本会有脑裂的情况。不加replica的情况下默认是分布式卷
gluster volume create test-volume replica 3 transport tcp a5000-glusterfs-server1:/glusterfs/sunwenbo-test  a5000-glusterfs-server2:/glusterfs/sunwenbo-test a5000-glusterfs-server3:/glusterfs/sunwenbo-test

# 启动共享volume gluster守护进程端口24007,每创建一个逻辑卷,就会启动一个进程和端口,进程端口默认是49152,以此类推,第二个卷端口就是49153。
gluster volume start test-volume 

# 查看volume信息
gluster volume info

  4. 客户端挂载和使用

# 每台机器需要安装client
sudo apt -y install glusterfs-client
# 同时增加hosts解析记录
  cat >> /tmp/hosts << EOF                                                                                                                        
10.0.1.1 a5000-registry.chatglm.cn                                                                                                                                                      
10.1.63.1 a5000-glusterfs-server1                                                                                                                                                       
10.1.63.2 a5000-glusterfs-server2                                                                                                                                                       
10.1.63.3 a5000-glusterfs-server3                                                                                                                                                       
EOF

# 创建挂载点
mkdir -p /mnt/test-volume/

# 手动进行挂载
mount -t glusterfs 10.1.63.1:/test-volume /mnt/test-volume/

# 卸载卷
umount /mnt/test-volume 

# 开机自动挂载,修改/etc/fstab
10.1.63.1:/test-volume /mnt/test-volume/  glusterfs defaults 0 0

# 停止共享某一个volume
gluster volume stop  test-volume

# 删除卷
gluster volume delete  test-volume

注意:删除卷的前提是先停止卷,如果要删除卷下面的数据,现在客户端将卷下的数据删除完毕,再停止卷,再删除卷

 5.  k8s使用glusterfs作为后端存储(静态供给glusterfs存储)

已经在1.25版本后废弃

5.1 集群所有节点安装glusterfs客户端
sudo apt -y install glusterfs-client
5.2 k8s创建资源对象使用glusterfs存储
5.2.1 创建glusterfs-endpoints
可以参考: https://github.com/kubernetes/examples/blob/master/volumes/glusterfs/glusterfs-endpoints.yaml
vim glusterfs-endpoints.yaml
apiVersion: v1                                                                                                                                                                          
kind: Endpoints                                                                                                                                                                         
metadata:                                                                                                                                                                               
  name: glusterfs-cluster                                                                                                                                                               
subsets:                                                                                                                                                                                
- addresses:                                                                                                                                                                            
  - ip: 10.1.63.1                                                                                                                                                                       
  ports:                                                                                                                                                                                
  - port: 49152                                #填 写 卷 的 端 口 (官 网 说 在 端 口 字 段 中 提 供 任 何 有 效 值 (从 1到 65535)都 可 以 , 所 以 这 个 端 口 有 些 网 上 教 程 写 1的 )                                         
- addresses:                                                                                                                                                                            
  - ip: 10.1.63.2                                                                                                                                                                       
  ports:                                                                                                                                                                                
  - port: 49152                                #填 写 卷 的 端 口                                                                                                                             
- addresses:                                                                                                                                                                            
  - ip: 10.1.63.3                                                                                                                                                                       
  ports:                                                                                                                                                                                
  - port: 49152                                #填 写 卷 的 端 口  

kubectl create -f glusterfs-endpoints.yaml
5.2.2 为这些端点创建一个service,以便它们能够持久,不需要标签选择器
vim glusterfs-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: glusterfs-cluster        #名字要与Endpoints名字一样才能进行管理
spec:
  ports:
  - port: 49152

kubectl create -f glusterfs-service.yaml
5.2.3 创建pv,pvc,pv中定义glusterfs的信息
apiVersion: v1                                                                                                                                                                          
kind: PersistentVolume                                                                                                                                                                  
metadata:                                                                                                                                                                               
  name: glusterfs-pv                                                                                                                                                                    
spec:                                                                                                                                                                                   
  capacity:                                                                                                                                                                             
    storage: 5Gi                                                                                                                                                                        
  volumeMode: Filesystem                                                                                                                                                                
  accessModes:                                                                                                                                                                          
    - ReadWriteMany                                                                                                                                                                     
  persistentVolumeReclaimPolicy: Retain                                                                                                                                                 
  storageClassName: ""                                                                                                                                                                  
  glusterfs:                                                #定 义 gluster的 信 息                                                                                                           
    endpoints: glusterfs-cluster         #指 定 glusterfs的 endpoint                                                                                                                       
    endpointsNamespace: default                #指 定 glusterfs的 endpoint的 所 属 命 名 空 间                                                                                                    
    path: test-volume                                                                                                                                                                   
    readOnly: false                                                                                                                                                                     
---                                                                                                                                                                                     
apiVersion: v1                                                                                                                                                                          
kind: PersistentVolumeClaim                                                                                                                                                             
metadata:                                                                                                                                                                               
  name: glusterfs-pvc                                                                                                                                                                   
spec:                                                                                                                                                                                   
  accessModes:                                                                                                                                                                          
    - ReadWriteMany                                                                                                                                                                     
  volumeMode: Filesystem                                                                                                                                                                
  resources:                                                                                                                                                                            
    requests:                                                                                                                                                                           
      storage: 5Gi                                                                                                                                                                      
  storageClassName: ""

5.2.4 创建deployment、service
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        imagePullPolicy: IfNotPresent
        name: nginx
        ports:
        - name: nginx 
          containerPort: 80
        volumeMounts:
        - name: pvc-volume                                
          mountPath: /var/log/nginx                #持久化nginx的日志
      volumes:
      - name: pvc-volume
        persistentVolumeClaim:
          claimName: glusterfs-pvc 
          readOnly: false
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: nginx
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx
  sessionAffinity: None
  type: ClusterIP
---

二、Glusterfs扩/缩容

复制卷(Replicated)最大容量,是由宿主机的磁盘决定。生产环境下我们可以先移除glusterfs集群的一台机器,进行更换硬盘格式化后挂载再加入到集群。依次替换集群的机器完成扩容。

Distributed-Replicate分布式复制卷,获得两倍容量

三、故障演练

客户端正常挂载使用

当glusterfs-server2机器发生故障时不会影响客户端挂载使用,可以继续正常写入数据

且glusterfs集群正常的节点依然会存储数据

但是glusterfs-server2这台机器上不会写入新数据没有test5这个文件当glusterfs-server2服务恢复时,从下图可以看出数据会自动从另外两个节点进行同步注意:当glusterfs-server2发生故障时,我们只要不umount 既可以正常使用。如果umount后再想挂载必须得修复glusterfs-server2的服务或者更换挂载ip

四、优化

1. 要同时启用 tcp 和 rdma:

root@a5000-glusterfs-server1:~# gluster volume set test-volume config.transport tcp,rdma                                                                                                
volume set: success  

2. 执行 gluster peer status 后Hostname显示的是主机名,实际需求需要显示为ip

这么做的原因是可以不用配置hosts或者不用解析宿主机hostname

root@a5000-glusterfs-server2:/glusterfs/sunwenbo-test# gluster peer status                                                                                                              
Number of Peers: 2                                                                                                                                                                      
                                                                                                                                                                                        
Hostname: a5000-glusterfs-server1                                                                                                                                                       
Uuid: 5400d9f4-eb91-4163-a3b6-9e0a2b250028                                                                                                                                              
State: Peer in Cluster (Connected)                                                                                                                                                      
                                                                                                                                                                                        
Hostname: 10.1.63.3                                                                                                                                                                     
Uuid: 251f6223-bc13-40cc-a2dc-45b13e81d35b                                                                                                                                              
State: Peer in Cluster (Connected)  
# 修改hostname 为ip
# 执行peer probe后需要在对应的节点上修改,将hostname1改为对应的ip即可
cat /var/lib/glusterd/peers/251f6223-bc13-40cc-a2dc-45b13e81d35b                                                                 
uuid=251f6223-bc13-40cc-a2dc-45b13e81d35b                                                                                                                                               
state=3                                                                                                                                                                                 
hostname1=10.1.63.3

五、线上创建命令


gluster volume create model-data replica 3 transport tcp a5000-glusterfs-server1:/glusterfs/  a5000-glusterfs-server2:/glusterfs/  a5000-glusterfs-server3:/glusterfs/ force

启动命令
gluster volume start model-data               

集群的每台集群都需要创建挂载点
 mkdir -p /data/glusterfs/        
安装glusterfs client
apt -y install glusterfs-client
增加hosts解析记录
  cat >> /tmp/hosts << EOF                                                                                                                        
10.0.1.1 a5000-registry.chatglm.cn                                                                                                                                                      
10.1.63.1 a5000-glusterfs-server1                                                                                                                                                       
10.1.63.2 a5000-glusterfs-server2                                                                                                                                                       
10.1.63.3 a5000-glusterfs-server3                                                                                                                                                       
EOF
/etc/fstab 追加一条挂载信息
10.1.63.2:/model-data /data/glusterfs/  glusterfs defaults 0 0
挂载
mount -a                                                        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726939.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot 中的声明式事务是什么,如何使用

Spring Boot 中的声明式事务是什么&#xff0c;如何使用 简介 在数据库操作中&#xff0c;事务是一组操作的集合&#xff0c;这些操作在一个逻辑单元内执行&#xff0c;如果其中任何一个操作失败&#xff0c;则整个事务都会被回滚&#xff0c;使得数据库回到事务执行之前的状…

不看产品、不重销售,聊聊Forrester推荐的CLG战略

近日&#xff0c;Forrester的分析师们发现&#xff0c;企业&#xff08;尤其是B2B企业&#xff09;对于CLG战略的关注空前增加。而且&#xff0c;越来越多SaaS企业选择CLG战略来取代以前的PLG&#xff08;产品导向型增长&#xff09;或SLG&#xff08;销售导向型增长&#xff0…

SpringSecurity之基本原理

目录 核心过滤器 FilterSecurityInterceptor ExceptionTranslationFilter UsernamePasswordAuthenticationFilter BasicAuthenticationFilter 过滤器加载过程 重要接口 UserDetailsService接口 PasswordEncoder接口 springSecurity本质上就是一个过滤器链&#xff0c;…

RabbitMQ系列(16)--用SpringBoot整合RabbitMQ

1、新建项目 2、新建Spring项目 3、选择合适的SpringBoot版本&#xff0c;依赖在这里可以先不选&#xff0c;可以在项目生成后在pom.xml文件里批量的导入依赖 4、设置项目的Maven (1)打开设置 (2)在搜索框里输入Maven搜索Maven设置&#xff0c;然后根据自己的实际情况设置Mave…

优化篇--Vue模版语法做动态渲染

Vue模版语法做动态渲染&#xff0c;随便记录一下 <a-row v-for"(row, rowIndex) in footerConfig" :key"rowIndex"><a-col span"4" v-for"(col, colIndex) in row" :key"colIndex"><span class"total-l…

新来的资深java不会lambda表达式,中级开发都笑拉了--lambda流这么难吗,教你怎么玩早学早吃香

因为一个人就全体 虽然没提名字但是说的意思和报身份证没区别, 我自己看着都尴尬… 标题就是事情的经过,和同事的聊天记录在最下面 前言 Lambda表达式是优化代码的工具&#xff0c;使得代码更简洁、易读&#xff0c;符合现代开发的趋势,以及推动函数式编程在Java开发中的流行…

web3创业有哪些机会?(一)

目录 1. 去中心化金融&#xff08;DeFi&#xff09;&#xff1a;2. 去中心化身份验证和数字身份&#xff1a;3. 去中心化市场和电子商务&#xff1a;4. 区块链游戏和虚拟资产&#xff1a;5. 数据隐私和安全&#xff1a;6. 去中心化社交媒体&#xff1a;7. 去中心化能源交易&…

Webpack原理与实战 --- 背景介绍

模块化的演进过程 Stage 1 - 文件划分方式 缺点&#xff1a; 模块直接在全局工作&#xff0c;大量模块成员污染全局作用域&#xff1b;没有私有空间&#xff0c;所有模块内的成员都可以在模块外部被访问或者修改&#xff1b;一旦模块增多&#xff0c;容易产生命名冲突&#…

自动化测试及典型开源的自动化测试工具

目录 前言&#xff1a; 自动化测试 自动化测试的意义 手工测试的局限性 自动化测试带来的好处 自动化测试的前提条件 自动化测试的方法 自动化测试的不足 自动化测试的应用方向 典型开源的自动化测试工具 前言&#xff1a; 自动化测试是一种使用软件工具和脚本来执行…

第二章——开始学习C++

进入C 首先介绍一个显示消息的简单C程序&#xff08;不同于以往的“Hello&#xff0c;world"&#xff09; #include<iostream> int main() {using namespace std;cout << "Come up and C me some time.";cout << endl;cout << "…

手机上无处不在的AI,原来还藏有这么多秘密

目录 一、AI在拍照中的应用 二、AI在日常生活中的应用 三、手机上AI的来自哪&#xff1f; 尽管2023年才过完了一半&#xff0c;但来自AI领域的科技震撼却没有要结束的意思。回顾过往&#xff0c;AI从没像今天这般那样受人瞩目&#xff0c;似乎一夜之间&#xff0c;它就成了新…

速览6月更新|EasyV产研团队带来产品功能优化

EasyV产研团队在6月份为您带来了一系列令人期待的产品功能优化&#xff0c;让数字化管理更加轻松高效&#xff01;话不多说&#xff0c;快来看看都有哪些新变化吧&#xff5e; 速览6月更新内容&#xff1a; 01 平台升级&#xff5c;工作台功能优化 02 模板上新&#xff5c;能…

LeetCode打卡 day58--单调栈

一个人的朝圣 — LeetCode打卡第58天 知识总结 Leetcode 739. 每日温度题目说明代码说明 Leetcode 496. 下一个更大元素 I题目说明代码说明 知识总结 单调栈的应用, 就是需要构建一个单调递增或者单调递减的栈, 去解决下一个大(小)的元素的问题 Leetcode 739. 每日温度 题目链…

网络安全面试题(含答案)

防范常见的 Web 攻击 什么是SQL注入攻击 攻击者在HTTP请求中注入恶意的SQL代码&#xff0c;服务器使用参数构建数据库SQL命令时&#xff0c;恶意SQL被一起构造&#xff0c;并在数据库中执行。 用户登录&#xff0c;输入用户名 lianggzone&#xff0c;密码 ‘ or ‘1’’1 &a…

JavaScript 之【事件循环】机制的深入浅出解读

前言&#xff1a; JavaScript 作为一种单线程的开发语言&#xff0c;在执行的时候会有特定的风格&#xff0c;本章节以 JS 单线程的特点为引入&#xff0c;详细分析讲解了 JS 的事件循环机制 目录 什么是【进程】什么是【线程】浏览器拥有哪些进程和线程【渲染主线程】的工作模…

冒泡排序(思路+代码)

冒泡排序&#xff1a; 变量&#xff1a; flag 如果没有交换过就终止循环就是flase&#xff0c;终止外层循环 第二层循环&#xff1a;n个数比较n-1次 第一层循环&#xff1a; 第一趟&#xff0c;比较n-1次 第二趟&#xff0c;比较n-2次 ... ... 代码&#xff1a; import…

展望“智”造未来|深眸科技以AI+机器视觉,夯基产业新发展格局

近日&#xff0c;2023昆山元宇宙国际装备展在昆山国际会展中心落下帷幕。展会期间&#xff0c;各大展商携新技术、新产品、新概念纷纷亮相&#xff0c;为现场参展观众和嘉宾呈现如梦似幻的元宇宙盛会。 此次展会&#xff0c;深眸科技认识了诸多工业元宇宙领域的优质产品及企业…

Spring Boot3入门快速体验-Developing Your First Spring Boot Application

一、进入Getting Started https://spring.io/ 点击Spring Boot点击LEARN,再点击Reference Doc.&#xff1a; 再点击Getting Started Introducing Spring Boot, System Requirements, Servlet Containers, Installing Spring Boot, and Developing Your First Spring Boot App…

前端Vue组件之仿京东拼多多领取优惠券弹出框popup 可用于电商商品详情领券场景使用

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。通过组件化开发&#xff0c;可以有效实现单…

痞子衡嵌入式:从功耗测试角度了解i.MXRTxxx系列片内SRAM分区电源控制

大家好&#xff0c;我是痞子衡&#xff0c;是正经搞技术的痞子。今天痞子衡给大家介绍的是从功耗测试角度了解i.MXRTxxx系列片内SRAM分区电源控制。 我们知道配合 MCU 一起工作的存储器包含 ROM(Flash) 和 RAM 两类&#xff0c;前者主要放 RO 代码和数据&#xff0c;后者放 RW …