为了满足电子仓库功能相关部署与扩容等操作,因此提供电子仓库部署手册。手册中我们以2个minio节点,每个节点2个盘来进行分布式部署;并且最终扩容成4个节点每个节点2个盘。
操作系统
由于在Windows下运行分布式Minio处于实验阶段,因此我们在Linux系统中搭建文件服务。
相关依赖
minio server
通过使用minio作为文件服务存储的载体,因此部署需要minio的server包;
nginx
以集群的方式部署minio,通过nginx作为请求转发到集群中不同的minio节点上。
minio下载与安装
对集群中的每个minio节点都要执行相同的操作,这里我们以节点1【192.168.80.128】为例执行安装与配置过程,节点2【192.168.80.129】需要与节点1保持一致的操作,这里不做展示。
1.进入minio官网下载页面 下载最新的linux版本的minio server,如下图所示:
2.将下载好的minio server包存放到每个节点的/home/dex/Minio/目录下,如下图所示:
3.cd 到minio server所在的目录(/home/dex/Minio),给minio server添加可执行权限用于启动minio
# 给予minio server可执行权限
chmod +x minio
4.开启minio的访问端口9000,方便后续访问
# 防火墙开放minio 9000端口
firewall-cmd --zone=public --add-port=9000/tcp --permanent
# 重新载入防火墙
firewall-cmd --reload
至此节点1上的minio就安装成功了,节点2需要按照同样的方式安装。
分布式部署
当节点1与节点2的minio都安装成功之后,以分布式的方式部署。2个节点每个节点两个盘(data1与data2)来进行分布式部署,具体过程如下所示:
minio秘钥环境变量设置
分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,这样这些节点才能建立联接。为了实现这个,在执行minio server命令之前,先将access秘钥和secret秘钥export成环境变量【每个节点都得设置】。
#设置minio的秘钥
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin
集群启动命令
minio双节点集群,每个节点俩磁盘data1与data2【磁盘里必须是干净的,里面没有数据,否则启动报错】。cd到minio server所在的目录(/home/dex/Minio),执行启动命令如下所示【每个节点都得运行如下命令】:
#分布式实例启动命令(命令1与命令2选择其一即可)
#命令1:
nohup ./minio server http://192.168.80.128/home/dex/MinioData/data1 http://192.168.80.128/home/dex/MinioData/data2 http://192.168.80.129/home/dex/MinioData/data1 http://192.168.80.129/home/dex/MinioData/data2 &
#命令2:如果ip地址连续,磁盘名称除了序号其他一致,可以使用命令2
hohup ./minio server http://192.168.80.{128...129}/home/dex/MinioData/data{1...2} &
所有的节点都执行完之后,访问每个节点的9000端口查看minio是否正常启动,如下图所示,节点1与节点2都正常访问:
节点1
节点2
上传文件测试
启动成功之后,节点1中创建桶并且上传文件,如果节点2也能看到创建的桶与文件数据,则证明分布式部署成功。创建桶newbucket,并且上传文件如下图所示:
节点二中的数据如下图所示:
至此分布式部署成功。
nginx配置请求转发
由于通过分布式的方式部署了多节点,我们需要通过配置nginx统一请求地址与端口,将请求转发到不同的minio节点上,nginx可以单独部署到一台服务器上,这里由于条件限制部署到节点1上。
1.修改nginx的配置文件nginx.conf添加如下数据:
upstream minioCluster{
ip_hash;
server 192.168.80.128:9000; #节点1
server 192.168.80.129:9000; #节点2
}
#监听请求的9100端口,转发到节点1与节点2
server {
listen 9100;
location / {
proxy_pass http://minioCluster;
}
}
2.重启nginx
./nginx -s reload
3.开启nginx的监听端口9100,方便统一访问
# 防火墙开放 9100端口
firewall-cmd --zone=public --add-port=9100/tcp --permanent
# 重新载入防火墙
firewall-cmd --reload
4.前端统一访问9100,如下图所示:
扩容
MinIO支持通过命令,指定新的集群来扩展现有集群(纠删码模式);已有节点1(128)与节点2(129),扩容添加节点3(130)与节点4(131)实现由俩节点扩容为四节点操作【节点3与节点4提前安装好minio,设置秘钥,并且开放9000端口】,具体步骤入下:
1.扩容启动命令
#分布式实例启动命令
nohup ./minio server http://192.168.80.{128...129}/home/dex/MinioData/data{1...2} http://192.168.80.{130...131}/home/dex/MinioData/data{1...2} &
当四个节点每个节点都如下图显示,集群中八个盘都显示在线则启动成功
现在整个集群就扩展了4个磁盘,总磁盘变为8个,新的对象上传请求会自动分配到最少使用的集群上。通过以上策略来实现磁盘扩展。重新配置后重启集群,会立即在集群中生效,并对现有集群无影响,如下图所示:
扩容的节点3
扩容的节点4
2.nginx配置修改
由于添加了新的节点(节点3与节点4),因此nginx的配置中加入这俩节点信息,如下所示:
upstream minioCluster{
ip_hash;
server 192.168.80.128:9000; #节点1
server 192.168.80.129:9000; #节点2
server 192.168.80.130:9000; #节点3(新加入)
server 192.168.80.131:9000; #节点4(新加入)
}
#监听请求的9100端口,转发到节点1、节点2、节点3、节点4
server {
listen 9100;
location / {
proxy_pass http://minioCluster;
}
}
3.重启nginx,前端重新访问即可。
./nginx -s reload
注意项
添加的每个区域必须具有与原始区域相同的磁盘数量(纠删码集)大小,以便维持相同的数据冗余SLA。 例如,第一个区有8个磁盘,可以将集群扩展为16个、32个或1024个磁盘的区域,只需确保部署的SLA是原始区域的倍数即可。