中铝长城建设有限公司网站,网站改版Excel怎么做,做搜狗网站,专业网站建设定制文章目录架构分析节点资源硬盘资源服务安装安装步骤创建系统服务新建用户和用户组创建环境变量启动服务负载均衡代码集成注意最近打算使用MinIO替代原来使用的FastDFS#xff0c;所以一直在学习MinIO的知识。这篇文章是基于MinIO多节点多驱动的部署进行研究。
架构分析 节点资…
文章目录架构分析节点资源硬盘资源服务安装安装步骤创建系统服务新建用户和用户组创建环境变量启动服务负载均衡代码集成注意最近打算使用MinIO替代原来使用的FastDFS所以一直在学习MinIO的知识。这篇文章是基于MinIO多节点多驱动的部署进行研究。
架构分析 节点资源
IP环境类型作用驱动器192.168.89.1宿主机nginx服务192.168.89.71虚拟机minio存储节点1四块硬盘192.168.89.72虚拟机minio存储节点2四块硬盘
因为我的虚拟机采用的Host-Only加共享方式配置的网络所以我在宿主机的C:\Windows\System32\drivers\etc\hosts文件中添加了域名的设置文件内容如下
# minio
192.168.89.71 minio1.example.com
192.168.89.72 minio2.example.com
192.168.89.1 minio.example.com这样设置之后不管在宿主机还是任何一个虚拟机虚拟机中配置的DNS是192.168.89.1都可以正常解析域名了。
硬盘资源
磁盘挂载位置格式化sdb/mnt/disk1xfssdc/mnt/disk2xfssdd/mnt/disk3xfssde/mnt/disk4xfs
VirtualBox虚拟磁盘设置请参考VirtualBox添加虚拟磁盘两个虚拟机节点都需要同样的配置。
服务安装
采用二进制程序安装方式具体可参考官网。 两个存储节点都需要安装且环境保持一致。
安装步骤
[rootlizx src]# wget https://dl.min.io/server/minio/release/linux-amd64/minio
[rootlizx src]# chmod x minio
[rootlizx src]# mv minio /usr/local/bin/创建系统服务
二进制方式安装需要手动创建服务。
[rootlizx src]# vi /etc/systemd/system/minio.service文件写入如下内容
[Unit]
DescriptionMinIO
Documentationhttps://min.io/docs/minio/linux/index.html
Wantsnetwork-online.target
Afternetwork-online.target
AssertFileIsExecutable/usr/local/bin/minio[Service]
WorkingDirectory/usr/localUserminio-user
Groupminio-user
ProtectProcinvisibleEnvironmentFile-/etc/default/minio
ExecStartPre/bin/bash -c if [ -z \${MINIO_VOLUMES}\ ]; then echo \Variable MINIO_VOLUMES not set in /etc/default/minio\; exit 1; fi
ExecStart/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES# Let systemd restart this service always
Restartalways# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE65536# Specifies the maximum number of threads this process can create
TasksMaxinfinity# Disable timeout logic and wait until process is stopped
TimeoutStopSecinfinity
SendSIGKILLno[Install]
WantedBymulti-user.target# Built for ${project.name}-${project.version} (${project.name})新建用户和用户组
[rootlizx src]# groupadd -r minio-user
[rootlizx src]# useradd -M -r -g minio-user minio-user
[rootlizx src]# chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4创建环境变量
服务启动依赖环境变量文件/etc/default/minio包含主机域名和硬盘的配置。创建服务时此EnvironmentFile配置项指定的该文件。 内容如下
# Set the hosts and volumes MinIO uses at startup
# The command uses MinIO expansion notation {x...y} to denote a
# sequential series.
#
# The following example covers four MinIO hosts
# with 4 drives each at the specified hostname and drive locations.
# The command includes the port that each MinIO server listens on
# (default 9000)MINIO_VOLUMEShttp://minio{1...2}.example.com:9000/mnt/disk{1...4}/minio# Set all MinIO server options
#
# The following explicitly sets the MinIO Console listen address to
# port 9001 on all network interfaces. The default behavior is dynamic
# port selection.MINIO_OPTS--console-address :9001# Set the root username. This user has unrestricted permissions to
# perform S3 and administrative API operations on any resource in the
# deployment.
#
# Defer to your organizations requirements for superadmin user name.MINIO_ROOT_USERminioadmin# Set the root password
#
# Use a long, random, unique string that meets your organizations
# requirements for passwords.MINIO_ROOT_PASSWORDminioadmin# Set to the URL of the load balancer for the MinIO deployment
# This value *must* match across all MinIO servers. If you do
# not have a load balancer, set this value to to any *one* of the
# MinIO hosts in the deployment as a temporary measure.
MINIO_SERVER_URLhttp://minio.example.com:19000启动服务
在每一个节点服务器上按照如下命令启动minio 服务
systemctl start minio.service负载均衡
在宿主机上配置一个nginx配置如下 upstream minio_api {server 192.168.89.71:9000;server 192.168.89.72:9000;}upstream minio_console {server 192.168.89.71:9001;server 192.168.89.72:9001;}server{listen 19000;server_name minio.example.com;ignore_invalid_headers off;client_max_body_size 0;proxy_buffering off;location / {proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection upgrade;proxy_connect_timeout 300;proxy_http_version 1.1;chunked_transfer_encoding off;proxy_ignore_client_abort on;proxy_pass http://minio_api;}}server{listen 19001;server_name minio.example.com;ignore_invalid_headers off;client_max_body_size 0;proxy_buffering off;location / {proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection upgrade;proxy_connect_timeout 300;proxy_http_version 1.1;chunked_transfer_encoding off;proxy_ignore_client_abort on;proxy_pass http://minio_console;}}测试时进入控制台报错是因为websocket没配置在location中加上如下配置就好了。 proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection upgrade;代码集成
在程序中进行配置
# Minio配置
minio:url: http://minio.example.com:19000accessKey: minioadminsecretKey: minioadminbucketName: first-testbucketName需要提前在控制台进行创建否则程序报错。
注意
做好nginx负载均衡后发现使用19000端口无法访问比如我的一个图片访问链接是http://minio.example.com:19000/first-test/2023/02/23/loginBtn_20230223143747A003.jpg浏览器提示Access denied我以为是虚拟机时间戳的问题时间同步后还是存在这个问题最后发现是bucket的Access 策略设置为private导致的我改为如下图所示的public策略就可以了。