Minio 高可用安装

1. 说明

参照Minio官网文档,使用 Docker 安装 minio 只能做到单机多磁盘的方式,这样存在单点故障的问题, 只能参考文档使用 Linux 上原生安装了。

本次使用的版本为:2023-09-23T03:47:50Z(可自行到官网下载)

部署模式:双机四磁盘的模式,机器 ip 分别为 192.168.50.245 与 192.168.50.18 双机四磁盘在一台机器挂了,就变为 2 了,不满足 N/2+1 的存活,集群就不可用了,所以调整部署策略为 3 机 6 磁盘, 机器 ip 分别为 192.168.50.245、192.168.50.18、192.168.50.9

2. 安装

2.1. 文件目录创建

在 245 机器执行如下命令,创建 minio 存储目录

mkdir -p /home/minio/data1
mkdir -p /home/minio/data2

在 18 机器执行如下命令,创建 minio 存储目录

mkdir -p /home/minio/data3
mkdir -p /home/minio/data4

在 9 机器执行如下命令,创建 minio 存储目录

mkdir -p /home/minio/data5
mkdir -p /home/minio/data6

2.2. 制作启动脚本

mkdir -p /home/minio && vi /home/minio/run.sh

进行脚本创建,填入如下内容(可以自行设置账密,后续通过接口连接使用)

#!/bin/bash
export MINIO_ROOT_USER=********
export MINIO_ROOT_PASSWORD=********
/home/minio/minio server 
http://192.168.50.245/home/minio/data1 
http://192.168.50.245/home/minio/data2 
http://192.168.50.18/home/minio/data3 
http://192.168.50.18/home/minio/data4 
http://192.168.50.9/home/minio/data5 
http://192.168.50.9/home/minio/data6  --console-address ":10000"

2.3. 将 minio 制作成服务

vim /usr/lib/systemd/system/minio.service

填入如下内容:

[Unit]
Description=Minio service
Documentation=https://docs.minio.io/

[Service]
WorkingDirectory=/opt/
ExecStart=/home/minio/run.sh

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

2.4. 赋予权限

将下载的 minio 文件放到/home/minio/目录下。

chmod +x /usr/lib/systemd/system/minio.service
chmod a+x /home/minio/minio
chmod a+x /home/minio/run.sh

2.5. 启动服务并检查

systemctl daemon-reload
systemctl start minio
systemctl enable minio
systemctl status minio.service

说明:需要两台机器都启动后,minio server 建立连接后,即可以正常访问了。

如遇到部署异常,需要检查相应脚本与程序部署的位置,同时 systemctl restart minio 让两个 server 重新建立连接。

2.6. Nginx进行对外访问

为了保障高可用的访问,Nginx需要配合VIP+Keepalive实现高可用。

添加 Nginx 的配置如下:

upstream minio{
        server 192.168.50.18:9000;
        server 192.168.50.245:9000;
        server 192.168.50.9:9000;
}

 location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $remote_addr;
    client_body_buffer_size 10M;
    client_max_body_size 10G;
    proxy_buffers 1024 4k;
    proxy_read_timeout 300;
    proxy_next_upstream error timeout http_404;
    proxy_pass http://minio;
 }

由于minio-console没有特点前缀可以方便进行Ng转发配置,所以只能访问Minio API接口,console可以用真实ip+10000端口进行访问。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 共1条

请登录后发表评论

    暂无评论内容