大家好,又见面了,我是你们的朋友全栈君。
Glusterfs简介
GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBandRDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。
说起glusterfs可能比较陌生,可能大家更多的听说和使用的是NFS,GFS,HDFS之类的,这之中的NFS应该是使用最为广泛的,简单易于管理,但是NFS以及后边会说到MooseFS都会存在单点故障,为了解决这个问题一般情况下都会结合DRBD进行块儿复制。但是glusterfs就完全不用考虑这个问题了,因为它是一个完全的无中心的系统。
主备server以及client单独访问配置
glusterfs是一个分布式文件系统,支持 PB 级的数据量。GlusterFS 通过 RDMA 和 TCP/IP 方式将分布到不同服务器上的存储空间汇集成一个大的网络并行文件系统。docker可以将本地文件存储到GlusterFS中,保证文件备份。不会因为机器挂掉而丢失
# GlusterFs
GlusterFs 是一个完全分布式文件系统,提供多机之间互通的分布式文件系统,真正的文件被多份的存在多台服务器硬盘上。
官方文档:Architecture – Gluster Docs
常用命令
## 常用命令
gluster peer probe 添加节点
gluster peer detach 移除节点
gluster volume create 创建卷
gluster volume start $VOLUME_NAME 启动卷
gluster volume stop $VOLUME_NAME 停止卷
gluster volume delete $VOlUME_NAME 删除卷
gluster volume quota enable 开启卷配额
gluster volume quota disable 关闭卷配额
gluster volume quota limitusage 设定卷配额
gluster volume list 列出集群中的所有卷
gluster volume info [all] 查看集群中的卷信息
gluster volume status [all] 查看集群中的卷状态
gluster volume profile [name] start 开启性能采集
gluster volume profile [name] info 查看性能信息
gluster volume profile [name] stop 关闭性能采集
数据平衡
开始平衡:gluster volume rebalance [name] start
平衡状态:gluster volume rebalance [name] status
停止平衡:gluster volume rebalance [name] stop
文件修复
启动文件修复:gluster volume heal [name] full
文件修复状态:gluster volume heal [name] info
本文介绍
本文将主要介绍通过glusterfs、nginx、管理微服务进行文件存取的案例。
设计思路
本案例充分考虑用户量的情况下,为了减少网络传输,gluster服务端将直接部署到nginx的目录下,nginx将可以直接读取到对应的图片文件,而管理员后端上传图片的时候则上传到管理服务端,管理服务端挂载到gluster client下,gluster与gluster server将进行传输同步通信。此案例主要用在写少读多的情况下。
实现过程
首先需要防火墙添加白名单端口(没有开启防火墙的服务器可以忽略)
24007 |
通过Glusterfs方式挂载硬盘 |
49152 – 49155 |
每一个brick都需要一个独立的端口,可根据实际brick数量进行删减,如只有两个brick则只需开放49152-49153 |
其次本案例部署采用的docker,接下来将介绍docker的部署过程
编写docker-compose.yml文件
glusterfs的开发者制作了docker镜像 我们可以直接使用,到/home/下新建一个glusterfs目录 cd /docker mkdir glusterfs cd glusterfs 编写docker-compose.yml vim docker-compose.yml version: '2' services: gfs: image: gluster/gluster-centos network_mode: host privileged: true volumes: - /app/glusterfs/data:/var/lib/glusterd:rw - /app/glusterfs/volume:/data:rw - /app/glusterfs/logs:/var/log/glusterfs:rw - /app/glusterfs/conf:/etc/glusterfs:rw - /data/glusterfs:/data/glusterfs - /dev:/dev:rw - /etc/hosts:/etc/hosts:rw
多机器部署server
假设有2台机器 192.168.1.1 192.168.1.2 部署的。
1. 每台机器编写一样的host
vim /etc/hosts
# hosts内容追加
192.168.1.1 gfs1
192.168.1.2 gfs2
2. 每台机器 创建docker-compose 并执行命令
cd /app/glusterfs
# 启动
docker-compose up -d
# 创建文件存储目录
docker-compose exec gfs bash
# 创建挂载目录
mkdir /data/glusterfs/sync
3. 到1上执行
cd /app/glusterfs
# 进入容器
docker-compose exec gfs bash
### 容器内执行
##关联1的glusterfs
## 这个执行完后 2台glusterfs处于集群状态
gluster peer probe gfs2
#查看状态
gluster peer status
## 创建volume 命名为gfs 备份1份
gluster volume create sync replica 2 192.168.1.1:/data/glusterfs/sync 192.168.1.2:/data/glusterfs/sync
## 启动gfs
gluster volume start sync
## 退出容器
exit
两台部署client,上传文件到server,检查两个server是否都会有文件
yum install -y glusterfs glusterfs-fuse
挂载目录到server上,sync.gfs不存储数据
mount -t glusterfs 192.168.1.1:/sync /data/glusterfs/sync.gfs
server挂载目录限定指定ip上传和访问文件
gluster volume set datastore auth.allow 192.168.1.*
重启自动挂载
vi /etc/fstab
192.168.1.1:/sync /data/glusterfs/sync.gfs glusterfs defaults,_netdev 0 0
或者采用方式2
vi /etc/rc.d/rc.local
加入
mount -t glusterfs 192.168.1.1:/sync /data/glusterfs/sync.gfs
两台部署server的机器上面部署nginx
启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
查看nginx进程是否启动:
ps -ef | grep nginx
curl http://localhost:9010会出现如下页面
其中停止nginx的命令是/usr/local/nginx/sbin/nginx -s stop
最后是管理微服务的docker-compose加上文件映射
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138854.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...