MinIO集群搭建

MinIO是一种简单易用的对象存储,可以用于应用存放文件,也可用于数据湖的构建。

其协议兼容S3,使得其可以有良好的易用性。

本次分享主要以搭建一个2台机器每台机器4块数据盘,构建一个8快盘的集群为例,用Nginx负载均衡提供外部调用的方式来进行搭建。

那么,我们直接开始吧。
如果不想细看,只想进行集群搭建,按顺序复制脚本直接执行便可。

磁盘处理

MinIO需要多块磁盘,为了比较好的构建集群以及体现其特性,我们在例子中采用了2台机器,每台机器4块磁盘。

1. 处理磁盘格式并挂载

# 修改hostname
hostnamectl set-hostname minio1

# 查看与修改最大连接数
ulimit -n #查看最大连接数
ulimit -a
echo "*   soft    nofile  65535" >> /etc/security/limits.conf
echo "*   hard    nofile  65535" >> /etc/security/limits.conf

# 查看磁盘并进行挂载
lsblk
df -h

# 挂载磁盘
vim /etc/fstab

上面命令运行情况如下

[root@iZ2zea1rb8eavx1toxecz7Z ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    253:0    0   40G  0 disk 
└─vda1 253:1    0   40G  0 part /
vdb    253:16   0  500G  0 disk 
vdc    253:32   0  500G  0 disk 
vdd    253:48   0  500G  0 disk 
vde    253:64   0  500G  0 disk 
[root@iZ2zea1rb8eavx1toxecz7Z ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        7.7G     0  7.7G   0% /dev
tmpfs           7.7G     0  7.7G   0% /dev/shm
tmpfs           7.7G  528K  7.7G   1% /run
tmpfs           7.7G     0  7.7G   0% /sys/fs/cgroup
/dev/vda1        40G  2.5G   35G   7% /
tmpfs           1.6G     0  1.6G   0% /run/user/0
如果是minio,不建议用ext4,它不需要磁盘做校验,其自身已具备该机制。
使用 XFS 格式化驱动器。
MinIO 强烈建议为存储提供 XFS 格式化的驱动器。 MinIO 在内部测试和验证套件中使用 XFS,以提供对性能和行为在所有规模上的额外信心。

MinIO 并 不 测试也不推荐其他文件系统,如 EXT4、BTRFS 或 ZFS。

接下来我们将修改/etc/fstab文件来实现磁盘挂载

UUID=037e5afb-cc1b-4887-8dad-2e6bfa8cdcd1 /                       xfs     defaults        0 0
UUID=ca4ff08a-e7e5-45d4-8de7-77e74c0ff8a4 /boot                   xfs     defaults        0 0
UUID=8a767f76-2b38-4057-aeb8-1274c1b18c57 swap                    swap    defaults        0 0

/dev/vdb /www/data-trino-1 xfs defaults,nofail 0 0
/dev/vdc /www/data-trino-2 xfs defaults,nofail 0 0
/dev/vdd /www/data-trino-3 xfs defaults,nofail 0 0
/dev/vde /www/data-trino-4 xfs defaults,nofail 0 0

创建对应挂载目录

cd /
mkdir -p www
cd www/
mkdir -p data-trino-1
mkdir -p data-trino-2
mkdir -p data-trino-3
mkdir -p data-trino-4

mkfs.xfs /dev/vdb
mkfs.xfs /dev/vdc
mkfs.xfs /dev/vdd
mkfs.xfs /dev/vde

mount /dev/vdb /www/data-trino-1
mount /dev/vdc /www/data-trino-2
mount /dev/vdd /www/data-trino-3
mount /dev/vde /www/data-trino-4

配置hosts

vim /etc/hosts

修改hosts文件是便于未来更换服务器的调整,在配置minio的时候会使用到。

172.10.1.1	datalake1
172.10.1.9	datalake2

下载minio并配置启动脚本

# 创建目录
cd /opt
mkdir -p minio
chmod +x minio
cd minio
wget http://dl.minio.org.cn/server/minio/release/linux-amd64/minio
chmod +x minio
# 创建启动脚本, 名字不是很要紧,run或start或别的都可以
vi start.sh 

start.sh 的内容,注意其中的http地址及文件目录,与我们前面的hosts文件及挂载的磁盘对应上了。

#!/bin/bash
export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=minioPwd!@#

/opt/minio/minio server http://datalake{1...2}/www/data-trino-{1...4}/minio_data  --console-address ":9001"



chmod +x start.sh

创建minio服务

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



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

[Service]
ExecStart=/opt/minio/start.sh

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

安装Nginx

安装nginx是为了便于应用负载均衡, 只需要在一台服务器安装即可,或者安装在别的服务器也可以。

# 一、安装编译工具及库文件
 yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

# 二、安装 PCRE让 Nginx 支持 Rewrite 功能
cd /usr/local/src/
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

# 解压安装包
tar -zxvf pcre-8.35.tar.gz

# 进入安装包目录
cd pcre-8.35

# 编译安装
./configure
make && make install

# 查看pcre版本
pcre-config --version

# 三、安装 Nginx
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.20.2.tar.gz

# 解压安装包
tar -zxvf nginx-1.20.2.tar.gz

# 进入安装包目录
cd nginx-1.20.2

# 编译安装
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
make
make install

配置nginx指向minio

vim /usr/local/webserver/nginx/conf/nginx.conf



# 添加以下配置
    upstream minio {
        server datalake1:9000;
        server datalake2:9000;
    }

    upstream minio-console {
        ip_hash;
        server datalake1:9001;
        server datalake2:9001;
    }

    server {
        listen       19000;
        listen  [::]:19000;
        server_name  localhost;

        # To allow special characters in headers
        ignore_invalid_headers off;
        # Allow any size file to be uploaded.
        # Set to a value such as 1000m; to restrict file size to a specific value
        client_max_body_size 0;
        # To disable buffering
        proxy_buffering off;

        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            proxy_connect_timeout 3000;
            # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            chunked_transfer_encoding off;

            proxy_pass http://minio;
        }
    }
    server {
        listen       19001;
        listen  [::]:19001;
        server_name  localhost;

        # To allow special characters in headers
        ignore_invalid_headers off;
        # Allow any size file to be uploaded.
        # Set to a value such as 1000m; to restrict file size to a specific value
        client_max_body_size 0;
        # To disable buffering
        proxy_buffering off;

        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-NginX-Proxy true;

            # This is necessary to pass the correct IP to be hashed

            proxy_connect_timeout 3000;

            # To support websocket
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

            chunked_transfer_encoding off;

            proxy_pass http://minio-console;
        }
    }

配置nginx服务

cp /usr/lib/systemd/system/minio.service /usr/lib/systemd/system/nginx-minio.service
vim /usr/lib/systemd/system/nginx-minio.service



[Unit]
Description=Nginx

[Service]
ExecStart=/usr/local/webserver/nginx/sbin/nginx  -c /usr/local/webserver/nginx/conf/nginx.conf

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Enable minio 与 nginx服务

# 刷新配置
systemctl daemon-reload

# 添加服务
systemctl enable minio && systemctl start minio
systemctl enable nginx-minio && systemctl start nginx-minio
systemctl status minio
systemctl status nginx-minio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值