如何在Ubuntu 16.04上使用Minio设置对象存储服务器

介绍

从基于云的备份解决方案到高可用性内容传送网络(CDN),对象存储已成为现代技术领域不可分割的一部分。 而且,由于其占地面积小,界面简单,与多个云存储服务兼容, Minio对象存储服务器具有很大的冲击力。

Minio是一种开源对象存储服务器,可将非结构化数据(如照片,视频,虚拟机映像,容器和日志文件)存储为对象。 在分布式模式下,Minio提供了一个单一的对象存储服务器,它可以跨多个服务器分布多个驱动器

Minio写在Go中,附带命令行客户端和浏览器界面,并支持高级消息队列协议(AMQP)弹性搜索RedisNATSPostgres目标的简单排队服务。

在本教程中,您将:

  • 在您的DigitalOcean服务器上安装Minio服务器,并将其配置为systemd服务。

  • 使用“加密”设置SSL / TLS证书,以确保服务器和客户端之间的通信安全。

  • 通过HTTPS访问Minio的浏览器界面,以使用和管理服务器。

先决条件

要完成本教程,您将需要:

  • 一个Ubuntu 16.04服务器通过遵循这个Ubuntu 16.04初始服务器设置教程设置 ,包括sudo非root用户和防火墙。

  • 为您的Minio服务器设置了以下DNS记录。 有关如何添加它们的详细信息,请参阅此主机名教程

    • 您的服务器名称(例如, minio-server.example.com )指向您的对象服务器的IPv4地址的记录。
    • 如果您希望您的服务器可以通过IPv6访问,则您的服务器名称指向对象服务器的IPv6地址的AAA​​A记录。
  • 使用本指南安装在服务器上,在Ubuntu 16.04上安装Go

第1步 - 安装和配置Minio服务器

您可以通过编译源代码或二进制文件来安装Minio服务器。 在这一步中,我们将把服务器安装成最简单的方法 - 通过二进制文件,然后我们将配置所有的内容。

首先,登录到您的服务器:

ssh sammy@your_server_ip

如果最近还没有更新包数据库,请立即更新:

sudo apt-get update

接下来,下载Minio服务器的二进制文件:

curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio

一个名为minio的文件将被下载到您的工作目录中。 使其可执行:

sudo chmod +x minio

现在,将文件移动到Minio的系统启动脚本期望找到的/usr/local/bin目录中:

sudo mv minio /usr/local/bin

出于安全考虑,我们不希望以root身份运行Minio服务器。 而且,由于我们将在第2步中使用的systemd脚本寻找一个名为minio-user的用户帐户和组,现在我们来创建它们。

sudo useradd -r minio-user -s /sbin/nologin

将二进制文件的所有权更改为minio-user

sudo chown minio-user:minio-user /usr/local/bin/minio

接下来,我们需要创建一个Minio将存储文件的目录。 这将是您将在第5步中创建的存储的存储位置。

sudo mkdir /usr/local/share/minio

将该目录的所有权授予minio-user

sudo chown minio-user:minio-user /usr/local/share/minio

/etc目录是服务器配置文件的最常见位置,因此我们将为Minio创建一个地方。

sudo mkdir /etc/minio

也将该目录的所有权归还minio-user

sudo chown minio-user:minio-user /etc/minio

使用nano或您最喜爱的文本编辑器创建修改默认配置所需的环境文件:

sudo nano /etc/default/minio

并添加以下变量:

在/ etc /默认/ minio
MINIO_VOLUMES="/usr/local/share/minio/"
MINIO_OPTS="-C /etc/minio --address your-server-ip:9000"
  • MINIO_VOLUMES :指向您之前创建的存储目录。

  • MINIO_OPTS :修改服务器的行为。 -C标志将Minio指向应该使用的配置目录,而--address标志告诉Minio要绑定的IP地址和端口。 如果未指定IP地址,Minio将绑定服务器上配置的每个地址,包括localhost和任何与Docker相关的IP地址,因此最好在该文件中明确指定IP地址。 默认端口为9000 ,但可以选择其他端口。

最后,完成更改后,保存并关闭环境文件。

Minio现已安装,所以接下来,我们将配置服务器作为系统服务运行。

第2步 - 安装Minio Systemd启动脚本

在此步骤中,我们将配置要作为systemd服务进行管理的Minio服务器。 首先,使用以下命令下载Minio服务描述符文件:

curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

下载完成后,一个名为minio.service的文件应该在你的工作目录中。

要在应用之前对minio.service的内容进行审核,请在文本编辑器中打开它以查看其内容:

nano minio.service

一旦你熟悉脚本的内容,关闭你的文本编辑器。

Systemd要求将单位文件存储在systemd配置目录中,因此在minio.service移动minio.service

sudo mv minio.service /etc/systemd/system

然后,运行以下命令重新加载所有systemd设备:

sudo systemctl daemon-reload

最后,启动Minio启动:

sudo systemctl enable minio

现在安装并配置了systemd脚本,让我们启动服务器。

第3步 - 启动Minio服务器

在此步骤中,您将启动服务器并修改防火墙以允许通过浏览器界面进行访问。

首先,启动Minio服务器:

sudo systemctl start minio

您可以使用命令验证Minio的状态,其绑定的IP地址,其内存使用情况等。

sudo systemctl status minio

你应该得到如下输出:

Outputminio.service - Minio
   Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-04-07 00:26:10 UTC; 11min ago
     Docs: https://docs.minio.io
  Process: 25069 ExecStartPre=/bin/bash -c [ -n "${MINIO_VOLUMES}" ] || echo "Variable MINIO_VOLUMES not set in /etc/default/minio" (code=exit
 Main PID: 25073 (minio)
    Tasks: 6
   Memory: 20.7M
      CPU: 544ms
   CGroup: /system.slice/minio.service
           └─25073 /usr/local/bin/minio server -C /etc/minio --address :9000 /usr/local/share/minio/

Apr 07 00:26:11 ashtonandgray minio[25073]: Browser Access:
Apr 07 00:26:11 ashtonandgray minio[25073]:    http://174.138.67.91:9000

接下来,您需要启用通过防火墙访问配置端口上的Minio服务器。 在本教程中,这是端口9000

所以,先添加规则:

sudo ufw allow 9000

然后重新启动防火墙:

sudo systemctl restart ufw

Minio现在已经准备好接受流量,但在连接到服务器之前,通过安装SSL / TLS证书来确保通信。

第4步 - 使用加密SSL / TLS证书保护对Minio服务器的访问

在此步骤中,我们将使用基于控制台的证书生成客户端Concert ,使用开放源代码来加密证书颁发机构来创建SSL / TLS证书。 虽然还有其他方法可以生成Let's Encrypt证书,Concert由Minio的开发人员编写,也是由官方安装说明的一部分

首先,使用命令下载Concert:

go get -u github.com/minio/concert 

一旦完成,一个名为concert的文件应该在你的GOPATHbin目录中。

接下来,我们将生成证书。

注意:要生成证书, concert要求通过防火墙允许通过端口443的流量。

使用--dirs标志运行以下命令来告诉Concert要使用的输出目录,电子邮件地址和域名:

sudo GOPATH/bin/concert gen --dir minio-certs sammy@example.com example.com

输出将如下所示:

Output2017/04/09 01:21:08 Generated certificates for example.com under minio-certs will expire in 89 days.

而且,Concert将会生成一个private.key和一个public.crt文件,您可以通过在指定的目录中运行ls进行验证。

接下来,我们将这两个文件复制到Minio的服务器配置文件夹下的certs目录中,这是本教程的/etc/minio

sudo cp minio-certs/private.key /etc/minio/certs/
sudo cp minio-certs/public.crt /etc/minio/certs/

现在,将文件的所有权更改为minio-user

sudo chown minio-user:minio-user /etc/minio/certs/private.key
sudo chown minio-user:minio-user /etc/minio/certs/public.crt

重新启动Minio服务器,以便它知道证书并开始使用HTTPS:

sudo systemctl restart minio

由于生成的Let's Encrypt证书有效期为90天,手动重复更新将无效率,请在服务器模式下启动Concert以设置自动更新证书的系统:

sudo concert server --dir minio-certs sammy@example.com example.com

因此,Minio的连接现在是安全的,SSL / TLS证书将自动为您续订。 在下一步中,您将通过浏览器连接到Minio来使用和管理服务器。

第5步 - 使用HTTPS安全连接Minio的Web界面

在此步骤中,您将通过HTTPS安全地连接到Minio Web界面,然后创建桶并将对象上传到其中。

通过将浏览器指向https:// example.com : 9000来访问Web界面。

接下来,您需要找到您的登录凭据。 当您在第3步中启动服务器时, /etc/minio将其配置文件写入/etc/minio目录。该配置文件config.json包含您现在需要访问服务器的accessKeysecretKey值。 确保将两个密钥复制并保存在易于接近和安全的地方,以备将来。

/etc/minio/config.json
{
    "version": "19",
    "credential": {
        "accessKey": "8ngv6i97QZV959Y87Y007FP",
        "secretKey": "C6hK8ytyBe3Q952bght65434JiZN08itG49jG5RX"
    },
    "region": "us-east-1",
    ...
}

现在,通过输入您的凭据登录到主界面,并使用输入字段下方的箭头单击圆形按钮。

从那里点击主界面右下角的浅红色+按钮,弹出两个黄色按钮。

Minio的主界面

单击中间,黄色按钮,并在提示符中输入新的桶的名称,按ENTER键保存您的响应。 您的新的桶现在已准备好用于存储!

当您要将对象添加到存储桶中时,请单击与之前相同的指示灯,然后单击顶部的黄色按钮以打开文件上传提示。

注意: Minio对象存储服务器上的一个对象的大小可以高达5 TB,远远超过单个DigitalOcean服务器可以容纳的数据,但是通过DigitalOcean的块存储服务 ,您可以将可用存储量大大扩展到独立的Minio服务器。

在这一点上,您已经完成了整个基本的Web界面,但除了创建存储桶和上传对象之外,还可以生成新的登录凭据,在对象的可共享链接上设置过期日期,并完全删除对象。

结论

您现在拥有使用Minio的自己的对象存储服务器,您可以使用我们加密SSL / TLS证书从Web界面安全地连接。 或者,您可能需要查看FreeBSD,Linux,Mac和Windows的Minio桌面客户端 ,作为使用和管理对象存储服务器的替代方法。

另外,如果您希望将Minio安装的存储容量增加到服务器的磁盘大小之外,可以使用DigitalOcean的块存储服务将卷附加到服务器,将存储容量扩展多达80 TB,成本仅为成本的一小部分旋转同样大小的Droplet。

有关Minio的更多信息,请参见项目文档网站

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏