网站首页 > 精选教程 正文
问题
一般在正式的环境下,通过给域名添加子路径(如oss)用于下载文件服务器上的文件。但这种设置子路径的方式不能直接通过API上传文件,创建桶等,鉴于安全,也不能让这种子路径拥有创建、删除文件的权限。所以,一般情况下,后台还是通过访问多个minio端口9000实现文件的操作,甚至有时,还需要在自己的代码中写一套负载均衡的逻辑(之前我的代码中就是这样实现的)。其实完全可以基于nginx直接暴露9001,9000, 同时再给web通过/oss/xx的形式访问的能力。
结构设计
- 实现API负载均衡,并可以直接通过nginx:9000商品操作文件服务器。
- 实现通过/oss/xx仅浏览某个指定的文件服务器上文件(必须是完整目录)。
- 图片服务器高可靠。
- 本次搭建使用bitnami/minio镜像,此镜像为官方认证的镜像,方便使用、集群方便,唯一就是不能通过传递--address,--console-address修改端口号,此镜像固定API端口为9000,console端口为9001。好在,如果使用非host模式,可以此端口号映射成你想要的即可。
本次环境在一台主机上搭建:
主机 | 软件 | 网卡 | 端口 |
192.168.56.61 | bitnami/minio:2022.9.1 | mybridge | 不对外暴露 |
bitnami/minio:2022.9.1 | mybridge | 不对外暴露 | |
bitnami/minio:2022.9.1 | mybridge | 不对外暴露 | |
bitnami/minio:2022.9.1 | mybridge | 不对外暴露 | |
nginx:1.23.1 | mybridge | 80,9000,9001 |
目录结构
在任意目录下,创建data{1..4}目录,用于保存minio的数据。创建nginx用于添加nginx的配置文件。在nginx1.19版本以后,可以通过映射 /etc/nginx/templats文件,将此目录下的xxx.conf.template文件自动的保存到nginx的配置文件下/etc/nginx/conf.d/,nginx将 templates下的 *.conf.template文件保存到/etc/nginx/conf.d/目录下以后,会删除.template扩展名。
目录截图:
配置文件docker-compose.yml
此配置文件,用于管理4个minio容器和一个nginx容器。由于bitnami/minio在创建时,会自动创建mc client,这会影响创建的速度,我们可以通过MINIO_SKIP_CLIENT将它关闭。关闭后,如果需要使用此功能,可以进入容器自行设置。
配置文件default.conf.template
此配置文件为oss映射配置文件,配置后,web可以通过http://<或名>/oss/<桶名称>/1.png直接访问到到图片,但不能操作minio的文件系统,如上传、创建桶等。
配置文件minio_api.conf.template
此配置文件用于nginx影射9000端口,实现直接通过此端口创建桶、上传等,也用于其他client接口。
配置文件minio_console.conf.template
此配置文件,用于影射9001端口,实现console ui的相关操作。
启动所有容器
# docker compose up -d
启动过程中,可以通过log查看启动日志,如出现以下信息,即表示启动成功,注意最后的 4 online表示4台主机都已经上线并可以使用了。
通过以下启动的容器可以看出,仅nginx对外影射了端口,minio所有端口仅对nginx开放。
可选的,进入任意一台容器,查看集群状态
访问ui
由于只开放了nginx9000端口,而此端口后面,负载均衡了minio{1...4}:9000端口,所以,访问时,如果有宕机的minio也不影响操作,登录之后,可以查看到minio集群的运行状态。
http://192.168.56.61:9001
创建一个桶,并设置访问权限
宕机测试
现在让其中一台minio服务器下线,并继续在console ui上操作,创建桶、上传或下载文件,都可以正常操作。
下线某个minio后查看ui中的offline下线已经为1 servers ,1 drivers。
测试完成后,再重新启动
docker compose start minio1
oss访问测试(通过)
域名访问测试(通过)
JavaAPI访问(通过)
直接访问nginx的9000端口即后,再不用于自己手写代码实现api接口的负载均衡了。
deepin
另:本人的操作系统为deepin 20(绝对不是给deepin做宣传),deepin是基于debian的linux系统,非常好用。推荐大家尝试。上个图:
猜你喜欢
- 2024-10-05 盘点和总结秒杀服务的功能设计及注意事项技术体系
- 2024-10-05 Nginx鉴权,验证token 验证nginx部署成功
- 2024-10-05 nginx如何重定向信息 nginx 重定向
- 2024-10-05 docker一条命令部署jar包+nginx+mysql
- 2024-10-05 每日学点---nginx变量使用方法详解(4)
- 2024-10-05 Kubernetes(k8s) YAML文件详解 k8s的yaml文件详解
- 2024-10-05 使用Nginx实现灰度发布 nginx实现灰度发布 用户名
- 2024-10-05 使用 Nginx 实现灰度发布 nginx灰度发布实践
- 2024-10-05 Docker小聪明:对已创建的容器进行端口映射修改
- 2024-10-05 云计算核心技术Docker教程:解决Windows下docker端口映射问题
你 发表评论:
欢迎- 最近发表
-
- 我的世界光影MOD下载(我的世界光影mod下载安装)
- 我的世界1.7/1.8VoxelMap小地图MOD下载
- 我的世界1.7.10多世界 整合包(我的世界1.7.10forge整合包)
- 我的世界1.8最好用的修改器下载(我的世界1.8最好用的修改器下载安装)
- 我的世界更多弯曲动作MOD下载(我的世界更多弯曲动作mod下载手机版)
- 我的世界龙珠MOD下载(我的世界龙珠模组整合包下载)
- 我的世界1.7.10以太2 下载(我的世界以太2mod1.12.2)
- 我的世界虚拟人生MOD下载分享(我的世界虚拟人生下载安装)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- “我的语言极限,即是我的世界的极限。” ——《On Java》书籍推荐
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)